[Mesa-dev] [PATCH v2] st/dri: add 32-bit RGBX/RGBA formats
Chih-Wei Huang
cwhuang at android-x86.org
Tue Jul 25 02:46:42 UTC 2017
On Tue 11 Jul 2017, Rob Herring wrote:
>> From: Marek Olšák <marek.olsak at amd.com>
>>
>> Add support for 32-bit RGBX/RGBA formats which are required for Android.
>>
>> The original patch (commit ccdcf91104a5) was reverted (commit
>> c0c6ca40a25e) in mesa as it broke GLX resulting in swapped colors. Based
>> on further investigation by Chad Versace, moving the RGBX/RGBA configs
>> to the end is enough to prevent breaking GLX.
>>
>> The handling of RGBA/RGBX in dri_fill_st_visual is a fix from Marek
>> Olšák.
>>
>> Cc: Eric Anholt <eric at anholt.net>
>> Cc: Chad Versace <chadversary at chromium.org>
>> Cc: Mauro Rossi <issor.oruam at gmail.com>
>> Reviewed-by: Marek Olšák <marek.olsak at amd.com>
>> Signed-off-by: Rob Herring <robh at kernel.org>
>> ---
>> v2:
>> - Incorporated dri_fill_st_visual RGBA/X handling from Marek
>> - Handle RGBA/X in dri2_drawable_get_buffers for completeness
Hi Rob,
I'm testing this patch with your gbm_gralloc and mesa 17.1.5.
Before applying this patch, the SurfaceFlinger sees
the alpha=8 in RenderEngine::chooseEglConfig()
07-25 02:19:13.188 1125 1125 I SurfaceFlinger: EGL information: format=0x1
07-25 02:19:13.188 1125 1125 I SurfaceFlinger: vendor : Android
07-25 02:19:13.188 1125 1125 I SurfaceFlinger: version : 1.4
Android META-EGL
07-25 02:19:13.188 1125 1125 I SurfaceFlinger: extensions:
EGL_KHR_get_all_proc_addresses EGL_ANDROID_presentation_time
EGL_KHR_swap_buffers_with_damage EGL_ANDROID_create_native_cli
ent_buffer EGL_ANDROID_front_buffer_auto_refresh EGL_KHR_image_base
EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image
EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_ima
ge EGL_KHR_reusable_sync EGL_KHR_fence_sync EGL_KHR_create_context
EGL_KHR_config_attribs EGL_KHR_surfaceless_context
EGL_ANDROID_image_native_buffer EGL_KHR_wait_sync EGL_ANDROID_reco
rdable EGL_EXT_buffer_age
07-25 02:19:13.188 1125 1125 I SurfaceFlinger: Client API: OpenGL_ES
07-25 02:19:13.188 1125 1125 I SurfaceFlinger: EGLSurface: 8-8-8-8,
config=0xa5485880
^^^^^^^^ (r-b-g-a)
07-25 02:19:13.211 1125 1125 I SurfaceFlinger: OpenGL ES
informations: format=0x1
07-25 02:19:13.211 1125 1125 I SurfaceFlinger: vendor : Red Hat
07-25 02:19:13.211 1125 1125 I SurfaceFlinger: renderer : Gallium
0.4 on virgl
07-25 02:19:13.211 1125 1125 I SurfaceFlinger: version : OpenGL ES
3.0 Mesa 17.1.5 (git-317b5bd)
After applying the patch, however, alpha becomes 0
07-25 02:34:46.522 1125 1125 I SurfaceFlinger: EGL information: format=0x1
07-25 02:34:46.522 1125 1125 I SurfaceFlinger: vendor : Android
07-25 02:34:46.522 1125 1125 I SurfaceFlinger: version : 1.4
Android META-EGL
07-25 02:34:46.522 1125 1125 I SurfaceFlinger: extensions:
EGL_KHR_get_all_proc_addresses EGL_ANDROID_presentation_time
EGL_KHR_swap_buffers_with_damage
EGL_ANDROID_create_native_client_buffer
EGL_ANDROID_front_buffer_auto_refresh EGL_KHR_image_base
EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image
EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image
EGL_KHR_reusable_sync EGL_KHR_fence_sync EGL_KHR_create_context
EGL_KHR_config_attribs EGL_KHR_surfaceless_context
EGL_ANDROID_image_native_buffer EGL_KHR_wait_sync
EGL_ANDROID_recordable EGL_EXT_buffer_age
07-25 02:34:46.522 1125 1125 I SurfaceFlinger: Client API: OpenGL_ES
07-25 02:34:46.522 1125 1125 I SurfaceFlinger: EGLSurface: 8-8-8-0,
config=0xabc24d80
^^^^^^^^
07-25 02:34:46.574 1125 1125 I SurfaceFlinger: OpenGL ES
informations: format=0x1
07-25 02:34:46.574 1125 1125 I SurfaceFlinger: vendor : Red Hat
07-25 02:34:46.574 1125 1125 I SurfaceFlinger: renderer : Gallium
0.4 on virgl
07-25 02:34:46.574 1125 1125 I SurfaceFlinger: version : OpenGL ES
3.0 Mesa 17.1.5 (git-317b5bd)
Therefore, eglCreateWindowSurface() finally chose
HAL_PIXEL_FORMAT_RGBX_8888 instead of
HAL_PIXEL_FORMAT_RGBA_8888.
Is that expected?
I thought it should be HAL_PIXEL_FORMAT_RGBA_8888.
--
Chih-Wei
Android-x86 project
http://www.android-x86.org
More information about the mesa-dev
mailing list