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 <brianp@vmware.com>
This commit is contained in:
Sinclair Yeh 2016-03-01 15:55:53 -08:00 committed by Brian Paul
parent 8366701f4c
commit f1410c5b91
1 changed files with 10 additions and 1 deletions

View File

@ -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);