i965: Add a RGBX->RGBA fallback for glEGLImageTextureTarget2D()
This enables support for importing RGBX8888 EGLImage textures on Skylake. Chrome OS needs support for RGBX8888 EGLImage textures because because the Android framework produces HAL_PIXEL_FORMAT_RGBX8888 winsys surfaces, which the Chrome OS compositor consumes as dma_bufs. On hardware for which RGBX is unsupported or disabled, normally core Mesa provides the RGBX->RGBA fallback during glTexStorage. But the DRIimage code bypasses core Mesa, so we must do the fallback in i965. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -267,8 +267,22 @@ create_mt_for_dri_image(struct brw_context *brw,
|
||||
struct gl_context *ctx = &brw->ctx;
|
||||
struct intel_mipmap_tree *mt;
|
||||
uint32_t draw_x, draw_y;
|
||||
mesa_format format = image->format;
|
||||
|
||||
if (!ctx->TextureFormatSupported[image->format])
|
||||
if (!ctx->TextureFormatSupported[format]) {
|
||||
/* The texture storage paths in core Mesa detect if the driver does not
|
||||
* support the user-requested format, and then searches for a
|
||||
* fallback format. The DRIimage code bypasses core Mesa, though. So we
|
||||
* do the fallbacks here for important formats.
|
||||
*
|
||||
* We must support DRM_FOURCC_XBGR8888 textures because the Android
|
||||
* framework produces HAL_PIXEL_FORMAT_RGBX8888 winsys surfaces, which
|
||||
* the Chrome OS compositor consumes as dma_buf EGLImages.
|
||||
*/
|
||||
format = _mesa_format_fallback_rgbx_to_rgba(format);
|
||||
}
|
||||
|
||||
if (!ctx->TextureFormatSupported[format])
|
||||
return NULL;
|
||||
|
||||
/* Disable creation of the texture's aux buffers because the driver exposes
|
||||
@@ -276,7 +290,7 @@ create_mt_for_dri_image(struct brw_context *brw,
|
||||
* buffer's content to the main buffer nor for invalidating the aux buffer's
|
||||
* content.
|
||||
*/
|
||||
mt = intel_miptree_create_for_bo(brw, image->bo, image->format,
|
||||
mt = intel_miptree_create_for_bo(brw, image->bo, format,
|
||||
0, image->width, image->height, 1,
|
||||
image->pitch,
|
||||
MIPTREE_LAYOUT_DISABLE_AUX);
|
||||
|
Reference in New Issue
Block a user