История изменений
Исправление Zubok, (текущая версия) :
DPS надо противопоставлять с Xlib
DPS does not offer the following:
- the ability to manipulate windows or handle events in PostScript code (sorry to all you NeWS fans);
- support for games (animations in DPS tend to run smoothly for a while, then halt for a fraction of a second as the server collects garbage);
- support for 3D graphics (use GLX for that);
- a complete alternative to X11.
Нет, Xlib - это далеко не только рисовательное API, но и API оконной системы, чего не было в DPS. В разрезе DPS можно рассматривать только запросы рисования в X11 Core Protocol. DPS пересылало код на аля-PostScript, который исполнялся на стороне X-сервера. Потом было предложено сделать векторную отрисовку на стороне X-клиента, а на стороне сервера оставить минималистический X Render (Keith Packard запилил). Cairo как раз имеет модель типа PostScript, но только на стороне X-клиента.
Qt вкупе с GTK+ и постепенного полного забвения и забрасывания Xlib.
До сих пор бэкенд xcb у всех них есть. Они без него не смогут в X Window System работать, хотя бы окно создать. Рисование же примитивами X11 Сore Protocol они не используют. Однако GTK3 даже до сих пор рендерит в X Render Extension (Qt5 уже нет):
$ xtrace inkscape | grep "RENDER"
[...]
000:<:1451: 20: RENDER-Request(139,30): SetPictureFilter picture=0x02600499 name='nearest' values=;
000:<:1452: 36: RENDER-Request(139,8): Composite op=Over(0x03) src=0x02600499 mask=None(0x00000000) dst=0x0260048c xSrc=0 ySrc=0 xMask=10 yMask=9 xDst=10 yDst=9 width=16 height=16
000:<:1453: 8: RENDER-Request(139,7): FreePicture picture=0x02600499
000:<:1457: 8: RENDER-Request(139,7): FreePicture picture=0x0260048c
000:<:145c: 24: RENDER-Request(139,4): CreatePicture pid=0x0260049b drawable=0x0260049a format=0x0000002a values={poly-mode=Imprecise(0x01)}
000:<:145d: 28: RENDER-Request(139,26): FillRectangles op=Minimum/Clear(0x00) dst=0x0260049b color={red=0x0000 green=0x0000 blue=0x0000 alpha=0x0000}; rects={x=0 y=0 w=36 h=34};
000:<:145e: 28: RENDER-Request(139,26): FillRectangles op=Src(0x01) dst=0x0260049b color={red=0xf6f6 green=0xf5f5 blue=0xf4f4 alpha=0xffff}; rects={x=0 y=0 w=36 h=34};
000:<:1460: 24: RENDER-Request(139,4): CreatePicture pid=0x0260049d drawable=0x0260049c format=0x00000026 values={poly-mode=Imprecise(0x01)}
000:<:1461: 28: RENDER-Request(139,26): FillRectangles op=Minimum/Clear(0x00) dst=0x0260049d color={red=0x0000 green=0x0000 blue=0x0000 alpha=0x0000}; rects={x=0 y=0 w=1 h=1};
000:<:1462: 28: RENDER-Request(139,26): FillRectangles op=Src(0x01) dst=0x0260049d color={red=0xcdcd green=0xc7c7 blue=0xc2c2 alpha=0xffff}; rects={x=0 y=0 w=1 h=1};
000:<:1463: 8: RENDER-Request(139,7): FreePicture picture=0x0260049d
000:<:1466: 24: RENDER-Request(139,4): CreatePicture pid=0x0260049f drawable=0x0260049e format=0x00000026 values={poly-mode=Imprecise(0x01)}
000:<:1467: 28: RENDER-Request(139,26): FillRectangles op=Minimum/Clear(0x00) dst=0x0260049f color={red=0x0000 green=0x0000 blue=0x0000 alpha=0x0000}; rects={x=0 y=0 w=1 h=1};
000:<:1468: 28: RENDER-Request(139,26): FillRectangles op=Src(0x01) dst=0x0260049f color={red=0xcdcd green=0xc7c7 blue=0xc2c2 alpha=0xffff}; rects={x=0 y=0 w=1 h=1};
000:<:1469: 8: RENDER-Request(139,7): FreePicture picture=0x0260049f
000:<:146b: 28: RENDER-Request(139,26): FillRectangles op=Src(0x01) dst=0x0260049b color={red=0xf6f6 green=0xf5f5 blue=0xf4f4 alpha=0xffff}; rects={x=0 y=0 w=36 h=34};
000:<:146c:304: RENDER-Request(139,10): Trapezoids op=Over(0x03) src=0x02600313 xSrc=2 ySrc=0 dst=0x0260049b maskFormat=0x00000024 trapezoids={top=1.000000 bottom=1.464844 left={x1=2.203125 y1=0.851562 x2=1.464844 y2=1.464844}; right={x1=33.789062 y1=0.851562 x2=34.531250 y2=1.464844};},{top=1.464844 bottom=2.023438 left={x1=1.464844 y1=1.464844 x2=0.851562 y2=2.203125}; right={x1=34.531250 y1=1.464844 x2=35.140625 y2=2.203125};},{top=2.023438 bottom=2.031250 left={x1=1.000000 y1=1.000000 x2=1.000000 y2=33.000000}; right={x1=34.531250 y1=1.464844 x2=35.140625 y2=2.203125};},{top=2.031250 bottom=31.960938 left={x1=1.000000 y1=1.000000 x2=1.000000 y2=33.000000}; right={x1=35.000000 y1=1.000000 x2=35.000000 y2=33.000000};},{top=31.960938 bottom=31.968750 left={x1=1.000000 y1=1.000000 x2=1.000000 y2=33.000000}; right={x1=35.140625 y1=31.789062 x2=34.531250 y2=32.531250};},{top=31.968750 bottom=32.531250 left={x1=0.851562 y1=31.789062 x2=1.464844 y2=32.531250}; right={x1=35.140625 y1=31.789062 x2=34.531250 y2=32.531250};},{top=32.531250 bottom=33.000000 left={x1=1.464844 y1=32.531250 x2=2.203125 y2=33.140625}; right={x1=34.531250 y1=32.531250 x2=33.789062 y2=33.140625};};
000:<:146d:2184: RENDER-Request(139,10): Trapezoids op=Over(0x03) src=0x026000ec xSrc=5 ySrc=0 dst=0x0260049b maskFormat=0x00000024 trapezoids={top=0.000000 bottom=0.097656 left={x1=5.000000 y1=0.000000 x2=3.988281 y2=0.097656}; right={x1=31.000000 y1=0.000000 x2=32.003906 y2=0.097656};},{top=0.097656 bottom=0.390625 left={x1=3.988281 y1=0.097656 x2=3.054688 y2=0.390625}; right={x1=32.003906 y1=0.097656 x2=32.941406 y2=0.390625};},{top=0.390625 bottom=0.851562 left={x1=3.054688 y1=0.390625 x2=2.203125 y2=0.851562}; right={x1=32.941406 y1=0.390625 x2=33.789062 y2=0.851562};},{top=0.851562 bottom=1.000000 left={x1=2.203125 y1=0.851562 x2=1.464844 y2=1.464844}; right={x1=33.789062 y1=0.851562 x2=34.531250 y2=1.464844};},{top=1.000000 bottom=1.078125 left={x1=31.000000 y1=1.000000 x2=31.800781 y2=1.078125}; right={x1=33.789062 y1=0.851
[...]
Исходная версия Zubok, :
DPS надо противопоставлять с Xlib
DPS does not offer the following:
- the ability to manipulate windows or handle events in PostScript code (sorry to all you NeWS fans);
- support for games (animations in DPS tend to run smoothly for a while, then halt for a fraction of a second as the server collects garbage);
- support for 3D graphics (use GLX for that);
- a complete alternative to X11.
Нет, Xlib - это далеко не только рисовательное API, но и API оконной системы, чего не было в DPS. В разрезе DPS можно рассматривать только запросы рисования в X11 Core Protocol. DPS пересылало код на аля-PostScript, который исполнялся на стороне X-сервера. Потом было предложено сделать векторную отрисовку на стороне X-клиента, а на стороне сервера оставить минималистический X Render. Cairo как раз имеет модель типа PostScript, но только на стороне X-клиента.
Qt вкупе с GTK+ и постепенного полного забвения и забрасывания Xlib.
До сих пор бэкенд xcb у всех них есть. Они без него не смогут в X Window System работать, хотя бы окно создать. Рисование же примитивами X11 Сore Protocol они не используют. Однако GTK3 даже до сих пор рендерит в X Render Extension (Qt5 уже нет):
$ xtrace inkscape | grep "RENDER"
[...]
000:<:1451: 20: RENDER-Request(139,30): SetPictureFilter picture=0x02600499 name='nearest' values=;
000:<:1452: 36: RENDER-Request(139,8): Composite op=Over(0x03) src=0x02600499 mask=None(0x00000000) dst=0x0260048c xSrc=0 ySrc=0 xMask=10 yMask=9 xDst=10 yDst=9 width=16 height=16
000:<:1453: 8: RENDER-Request(139,7): FreePicture picture=0x02600499
000:<:1457: 8: RENDER-Request(139,7): FreePicture picture=0x0260048c
000:<:145c: 24: RENDER-Request(139,4): CreatePicture pid=0x0260049b drawable=0x0260049a format=0x0000002a values={poly-mode=Imprecise(0x01)}
000:<:145d: 28: RENDER-Request(139,26): FillRectangles op=Minimum/Clear(0x00) dst=0x0260049b color={red=0x0000 green=0x0000 blue=0x0000 alpha=0x0000}; rects={x=0 y=0 w=36 h=34};
000:<:145e: 28: RENDER-Request(139,26): FillRectangles op=Src(0x01) dst=0x0260049b color={red=0xf6f6 green=0xf5f5 blue=0xf4f4 alpha=0xffff}; rects={x=0 y=0 w=36 h=34};
000:<:1460: 24: RENDER-Request(139,4): CreatePicture pid=0x0260049d drawable=0x0260049c format=0x00000026 values={poly-mode=Imprecise(0x01)}
000:<:1461: 28: RENDER-Request(139,26): FillRectangles op=Minimum/Clear(0x00) dst=0x0260049d color={red=0x0000 green=0x0000 blue=0x0000 alpha=0x0000}; rects={x=0 y=0 w=1 h=1};
000:<:1462: 28: RENDER-Request(139,26): FillRectangles op=Src(0x01) dst=0x0260049d color={red=0xcdcd green=0xc7c7 blue=0xc2c2 alpha=0xffff}; rects={x=0 y=0 w=1 h=1};
000:<:1463: 8: RENDER-Request(139,7): FreePicture picture=0x0260049d
000:<:1466: 24: RENDER-Request(139,4): CreatePicture pid=0x0260049f drawable=0x0260049e format=0x00000026 values={poly-mode=Imprecise(0x01)}
000:<:1467: 28: RENDER-Request(139,26): FillRectangles op=Minimum/Clear(0x00) dst=0x0260049f color={red=0x0000 green=0x0000 blue=0x0000 alpha=0x0000}; rects={x=0 y=0 w=1 h=1};
000:<:1468: 28: RENDER-Request(139,26): FillRectangles op=Src(0x01) dst=0x0260049f color={red=0xcdcd green=0xc7c7 blue=0xc2c2 alpha=0xffff}; rects={x=0 y=0 w=1 h=1};
000:<:1469: 8: RENDER-Request(139,7): FreePicture picture=0x0260049f
000:<:146b: 28: RENDER-Request(139,26): FillRectangles op=Src(0x01) dst=0x0260049b color={red=0xf6f6 green=0xf5f5 blue=0xf4f4 alpha=0xffff}; rects={x=0 y=0 w=36 h=34};
000:<:146c:304: RENDER-Request(139,10): Trapezoids op=Over(0x03) src=0x02600313 xSrc=2 ySrc=0 dst=0x0260049b maskFormat=0x00000024 trapezoids={top=1.000000 bottom=1.464844 left={x1=2.203125 y1=0.851562 x2=1.464844 y2=1.464844}; right={x1=33.789062 y1=0.851562 x2=34.531250 y2=1.464844};},{top=1.464844 bottom=2.023438 left={x1=1.464844 y1=1.464844 x2=0.851562 y2=2.203125}; right={x1=34.531250 y1=1.464844 x2=35.140625 y2=2.203125};},{top=2.023438 bottom=2.031250 left={x1=1.000000 y1=1.000000 x2=1.000000 y2=33.000000}; right={x1=34.531250 y1=1.464844 x2=35.140625 y2=2.203125};},{top=2.031250 bottom=31.960938 left={x1=1.000000 y1=1.000000 x2=1.000000 y2=33.000000}; right={x1=35.000000 y1=1.000000 x2=35.000000 y2=33.000000};},{top=31.960938 bottom=31.968750 left={x1=1.000000 y1=1.000000 x2=1.000000 y2=33.000000}; right={x1=35.140625 y1=31.789062 x2=34.531250 y2=32.531250};},{top=31.968750 bottom=32.531250 left={x1=0.851562 y1=31.789062 x2=1.464844 y2=32.531250}; right={x1=35.140625 y1=31.789062 x2=34.531250 y2=32.531250};},{top=32.531250 bottom=33.000000 left={x1=1.464844 y1=32.531250 x2=2.203125 y2=33.140625}; right={x1=34.531250 y1=32.531250 x2=33.789062 y2=33.140625};};
000:<:146d:2184: RENDER-Request(139,10): Trapezoids op=Over(0x03) src=0x026000ec xSrc=5 ySrc=0 dst=0x0260049b maskFormat=0x00000024 trapezoids={top=0.000000 bottom=0.097656 left={x1=5.000000 y1=0.000000 x2=3.988281 y2=0.097656}; right={x1=31.000000 y1=0.000000 x2=32.003906 y2=0.097656};},{top=0.097656 bottom=0.390625 left={x1=3.988281 y1=0.097656 x2=3.054688 y2=0.390625}; right={x1=32.003906 y1=0.097656 x2=32.941406 y2=0.390625};},{top=0.390625 bottom=0.851562 left={x1=3.054688 y1=0.390625 x2=2.203125 y2=0.851562}; right={x1=32.941406 y1=0.390625 x2=33.789062 y2=0.851562};},{top=0.851562 bottom=1.000000 left={x1=2.203125 y1=0.851562 x2=1.464844 y2=1.464844}; right={x1=33.789062 y1=0.851562 x2=34.531250 y2=1.464844};},{top=1.000000 bottom=1.078125 left={x1=31.000000 y1=1.000000 x2=31.800781 y2=1.078125}; right={x1=33.789062 y1=0.851
[...]