summaryrefslogtreecommitdiff
path: root/README
blob: 0034af8f739373e088b65be709e652405f12ab3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
glamor
Open-source X.org graphics common driver based on GL library.

What is glamor
------------------------

The glamor module is an open-source 2D graphics common driver for
the X Window System as implemented by X.org. It supports a variety of
graphics chipsets which have OpenGL/EGL/GBM supports.

It’s a GL-based rendering acceleration library for X server only:

	It uses normal texture to represent a drawable pixmap 
	if possible.
	It calls GL functions to render to the texture directly.

It consists of two packages:

	glamor : Rendering library. All the rendering functions
		 are implemented in this package. 
	glamor-egl : EGL support library. This package provides 
		     functions to create and initialize OpenGL/EGL context.  


It’s somehow hardware independently. And could be a building 
block of any X server’s DDX driver:

        Xephyr or any other X-in-X server could use glamor to 
	acclerate the rendering if the hostX has glx support.
        Xorg’s DDX driver could leverage glamor-egl package to 
	create a egl context without any native X system. This 
	package can support every platform which has OpenGL and 
	gbm and drm libraries.


Why glamor
----------------------------------------------
Basiclly, two intentions come to my mind of why we want to 
develop glamor.

1. Graphic device has powerful 3D capability. To use 3D function 
to accelerate 2D rendering is possible and many drivers already 
do so.  OpenGL provides a more convenient and standard interface 
to leverage GFX device’s 3D power. It would be better to call 
OpenGL directly rather than manually write 3D pipeline control 
code for each different GFX device.   

2. We have heard of complains about why we need to develop two 
version drivers for a single graphic device for a long time. 
One is for mesa’s DRI driver and the other is for 2D DDX driver. 
One of glamor’s purpose is to eliminate the latter one. 

How glamor works
----------------------------------------------
One prerequisite is that Xorg’s upper layer never access a 
drawable directly. It always use low level DDX functions to 
handle rendering.

All DDX functions access those drawables through two methods:
First method is to use DRM to map the drawable to a virtual 
memory buffer, and then use  libfb to access it directly. 
In many cases, this way is the fallback path.
Second method is to setup appropriate 2D or 3D pipeline 
according to the rendering request. Normally, it will prepare 
a serial of hardware dependent command, and then upload the 
command to the GFX device through DRM interface.

Glamor just providess the third access method:
Each pixmap has a normal texture object. Bind the texture 
object to a frame buffer object.  Writing shaders according 
to the rendering type and then call GL functions to render 
to the texture directly.

Eventually, the DRI driver in the openGL implementation (mesa) 
will setup appropriate 2D or 3D pipeline to perform the rendering 
operation. Functionally, it should be identical to the normal 
2D driver.

Where to get more information about the driver
----------------------------------------------

	TBD.

Documentation specific to the glamor common module including
possible configuration options for the xorg.conf file can be found in
the glamor(4) manual page. After installing the module this
documentation can be read with the following command:

	man glamor

Mailing list for communication with users and developers of
glamor:

	TBD

	Note: Subscription is required before posting, but anyone is
	free to subscribe. See instructions (and archives) here:

	http://lists.freedesktop.org/mailman/listinfo/glamor

To report bugs encountered with the driver, see:

	TBD.

To see bugs that are targeted to be fixed in the next release:

	TBD.