From f1410c5b910911e690290e8a95aeb9f95e7cc470 Mon Sep 17 00:00:00 2001 From: Sinclair Yeh Date: Tue, 1 Mar 2016 15:55:53 -0800 Subject: [PATCH] svga: Force an RGBA view creation for an RGBA resource glXCreatePixmap() may specify a GLX_TEXTURE_FORMAT_RGB_EXT format for an RGBA resource, causing us to create an RGBX view for an RGBA resource, a combination vgpu10 does not support. When this is detected, change the request to create an RGBA view instead. Reviewed-by: Brian Paul --- src/gallium/drivers/svga/svga_state_sampler.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/svga/svga_state_sampler.c b/src/gallium/drivers/svga/svga_state_sampler.c index e7b540c..6179a79 100644 --- a/src/gallium/drivers/svga/svga_state_sampler.c +++ b/src/gallium/drivers/svga/svga_state_sampler.c @@ -103,8 +103,17 @@ svga_validate_pipe_sampler_view(struct svga_context *svga, SVGA3dSurfaceFormat format; SVGA3dResourceType resourceDim; SVGA3dShaderResourceViewDesc viewDesc; + enum pipe_format pformat = sv->base.format; - format = svga_translate_format(ss, sv->base.format, + /* vgpu10 cannot create a BGRX view for a BGRA resource, so force it to + * create a BGRA view. + */ + if (pformat == PIPE_FORMAT_B8G8R8X8_UNORM && + sv->base.texture->format == PIPE_FORMAT_B8G8R8A8_UNORM) { + pformat = PIPE_FORMAT_B8G8R8A8_UNORM; + } + + format = svga_translate_format(ss, pformat, PIPE_BIND_SAMPLER_VIEW); assert(format != SVGA3D_FORMAT_INVALID); -- 2.7.4