Commit Graph

11105 Commits

Author SHA1 Message Date
Zhigang Gong fe4c95ce84 glamor: Refine the screen pixmap initialization for Xephyr.
The previous implementation is to override the CreatePixmap
firstly and assume the first call to CreatePixmap must be
screen pixmap. This is not clean. Now Refine it to normal
way. Let the Xephyr to set texture 0 to screen pixmap
during creating screen resources.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:03 +08:00
Zhigang Gong 1fb58860cc ephyr-glamor: Implment gl disptach function for host glx.
We should pass back the glXGetProcAddress to the underlying
gl dispatch initialization function to get those gl function
pointers.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:03 +08:00
Zhigang Gong df07020560 ephyr-glamor: Set texture 0 to screen pixmap.
In Xephyr, screen pixmap is different from other pixmap.
It use fbo zero and texture zero. We initialize it during
creating screen resources.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:03 +08:00
Zhigang Gong 937d3bcecf glamor: Correct the version check for GLES2.
If we are using GLES2, then the version number should be no
less than 2.0 rather than no less than 1.3 which is for GL
API.
2011-09-26 16:47:03 +08:00
Zhigang Gong 483717484a glamor-ddx: Destroy all the pixmap cursors when close current screen.
As now we use pixmap to handle cursor, and pixmaps are related to
current screen. If we close the screen, then we have to destroy all
the related cursors.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:03 +08:00
Zhigang Gong f1c36c611e glamor-ddx: Don't need to call preInit in screen_init.
The previous implementation call preInit again to reopen
the device if the device is closed by eglTerminate. Now
we don't need it anymore, as glamor dix doesn't call
eglTerminate any more when close screen.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:03 +08:00
Zhigang Gong 09c63d3201 glamor-ddx: Reuse glamor_dix module to handle egl platform.
We already have a glamor egl module at glamor directory which
could initialize and create egl context and also can attach a
gbm buffer to a specified pixmap or to the screen pixmap. This
commit remove all the duplicated code here and use the glamor_dix
module directly.

As we don't want to handle egl stuffs in this layer, we have to
change the way to handle hardware cursor. Previous method is to
call egl functions to create a egl image and then bind the image
to a texutre then call gl functions to load texture image to the
cursor bo. Now we can bind the cursor bo to a cursor pixmap and
then use putimage to load new image to the cursor bo. Then we can
completely avoid to call egl or gl functions directly in this
ddx driver.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong 1590da0011 glamor-egl: Add gbm device support.
Latest mesa EGL implementation move to use gbm to manage/allocate buffers.
To keep backward compatibility, we still try to use eglGetDRMDisplayMESA
firstly, and if failed, then turn to use eglGetDisplay(gbm).

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong 2d4d40a4b5 glamor-ddx: Fix the broken switching between VTs.
Now we can allocate frame buffer during the screen initialization.
And set mode major when enter VT. This is the correct logic. The
previous implementation defer the set mode major to create screen
resource which will cause the switching between VTs broken.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong 4c8ed1756a glamor-ddx: Use gbm to allocate front buffer and cursor image.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong 82a9b0c540 glamor-ddx: Change naming of glamor ddx module.
Use glamor_ddx prefix for all standalone glamor ddx functions.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong 67dbe0ddf8 glamor-egl: Added new function to create image for a pixmap.
This function is used to support dri2. In the underlying
driver, it will create a buffer object for a given pixmap.
And then call this api to create a egl image from that
buffer object, and then bind that image to a texture, and
then bind that texture to the pixmap.

Normally, this pixmap's content is shared between a dri2
client and the x server.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong 2a9dfc963f glamor: Re-arrange some macros/definitions in header files.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong 0dff23d65b glamor: Don't direct call to any gl functions.
Create a new structure glamor_gl_dispatch to hold all the
gl function's pointer and initialize them at run time ,
rather than use them directly. To do this is to avoid
symbol conflicts.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong 7daf9af086 glamor: Let GLAMOR_DDX implicit GLAMOR.
If user only enable GLAMOR_DDX, he must also want GLAMOR.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong f08988455c glamor: Route UnrealizeGlyph to glamor_glyph_unrealize.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong 1665962270 glamor: Improve glyphs cache mechanism.
This commit applying the latest uxa's glyphs cache mechanism
and give up the old hash based cache algorithm. And the cache
picture now is much larger than the previous one also.

This new algorithm can avoid the hash insert/remove and also
the expensive sha1 checking. It could obtain about 10%
performance gain when rendering glyphs.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong bf4cbbd4e9 glamor: Move glamor_glyphs_init to create screen resources stage.
As in glamor_glyphs_init, we may need to create pixmap. Thus it must
be called after the pixmap resources allocation. Just move it to
screen resource creation stage is good enough for mow.

Also introduce a macro GLAMOR_FOR_XORG to glamor.h. As glamor may
be used by Xephyr which doesn't don't have those xorg header files
and also don't need the egl extension.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong ae38bd7c45 glamor: Change glamor_egl_init API.
Slightly change the API glamor_egl_init,
as this initialization is to initialize the display not
the screen, we should call it in xxx_preinit rather
than xxxScreenInit(). we change the input parameter as
below, as in preInit, the screen may not be allocated
at all. And in glamor_egl_init, it will not call
glamor_init. Driver should call glamor_init at
screen_init stage.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong d4f4d1272e glamor-egl: Fix direct call for glEGLImageTargetTexture2DOES.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong 6cb4abca69 glamor: Remove the version check for EGL/gles.
As PVR's gles2 has different version number from mesa's,
just simply remove the version check here to let both
platform could build it.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong 60f14d60f6 glamor-egl: Move EGL surfaceless related code to dix module.
The functions in glamor_egl.c could be shared by any egl back
end drivers.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhenyu Wang 3854409e9a glamor: Fix direct call for glEGLImageTargetTexture2DOES
Follow extension call rule to call glEGLImageTargetTexture2DOES.
2011-09-26 16:47:02 +08:00
Zhigang Gong 54c91079d2 glamor-gles2: Add explicit precision qualifiers for gles2.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong b4f265c7f9 glamor: Fallback to software fb when repeat is needed.
Need to be fixed latter. We should not need any fallback here.
But currently, the implementation for repeating tiling is
broken.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong bd0ea43f39 glamor: Change to use the original drawable in glamor_fill.
As glamor_fill may fallback to software rasterization, we'd
better to use the original drawable as input paramter.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong 65812b538f glamor-dix: Make a glamor dix module.
And modify the header file to export three APIs to the
ddx driver.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong ef3ea0f46b glamor: Don't need to check status when set the target.
As we already checked the status when create the fbo.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:02 +08:00
Zhigang Gong 52cce9333f glamor: egl version 7.11 should be ok for us.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong 3648e35b5d glamor-ddx: Add code to check required egl extensions.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong eaa07998c4 glamor: Add device independent glamor to the installation package.
Other ddx driver may link libglamor_dix to utilize glamor.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong 1658454dea glamor: Fix the copy of overlaped region in one pixmap.
Originaly, we use fbo blit to handle overlaped region copy.
But GLES2 doesn't support that, just simply copy the needed
region to another texture can fix this problem.

Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong 1f129c491b glamor: Convert pixmap to supported format before getspans.
Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong 67da52ec13 glamor: Add color conversion support by using new shader.
There are two places we need to do color conversion.

1. When upload a image data to a texture.
2. When download a texture to a memory buffer.

As the color format may not be supported in GLES2. We may
need to do the following two operations to convert dat.

a. revert argb to bgra / abgr to rgba.
b. swap argb to abgr / bgra to rgba.

Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong 0eea084db5 glamor: GLES2 doesn't support glEnable/Disable Texture 2D.
Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong 504e03c0b5 glamor: GLES2 doesn't support GL_CLAMP_TO_BORDER.
Simply comments it out. Need revisit latter.

Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong f84cc8b84b glamor-ddx: Hardware cursor's format should be GL_RGBA.
Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong 23c1fba5e5 glamor: Remove glu3 which is unnecessary.
Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong a228effbeb glamor: Remove useless glVertexPointer related code.
As glVertexPointer is not supported by GLES2, I totally
replaced it by VertexAttribArray. This commit remove those
old code.

Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong 5cbb2a4ca0 glamor: Only fallbac glamor_setspan when we are using gles2.
Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong 667d65534d glamor: Unify the variable name which used to indicate no alpha.
The original code use different name and the name is vague.
Now change it to no_alpha.

Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong 5e7fdbb498 glamor: Disable ALPHA8 fbo.
As some platform doesn't support to use ALPHA8 texture as
draw target, we have to disable it. It seems there is no
easy way to check that.

Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong 172e8cfcd4 glamor: Remove GLEW dependency.
Glamor doesn't need to use GLEW. We can parse the extension by
ourself. This patch also fix the fbo size checking from a hard
coded style to a dynamic checking style.

Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong 2146a25bac glamor-ddx: Silence one warning.
Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong d66bd9714e glamor: Concentrate FBO's creation to one function.
And add status checking for it.

Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhenyu Wang b2bff334ce glamor: Require libdrm CFLAGS for building
Need to depend on libdrm CFLAGS for glamor building.
2011-09-26 16:47:01 +08:00
Zhenyu Wang 41b13fbd26 glamor: Use function pointer to get extenstion calls
This is the formal usage for extension functions.
2011-09-26 16:47:01 +08:00
Zhigang Gong 7aecfa245f glamor-es2: Add --enable-glamor-gles2 to build system.
Now, to build a gles2 version of glamor server, we could
use ./autogen.sh --enable-glamor-ddx --enable-glamor-gles2
Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong 36a93f62c7 glamor_gles2: Use gl_flavor to determine which version of GL.
Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00
Zhigang Gong 29e358f6b3 glamor: Fix one typo error in README.
Signed-off-by: Zhigang Gong <zhigang.gong@gmail.com>
2011-09-26 16:47:01 +08:00