diff options
author | Brian Paul <brianp@vmware.com> | 2016-06-27 11:15:07 -0600 |
---|---|---|
committer | Brian Paul <brianp@vmware.com> | 2016-06-30 14:32:07 -0600 |
commit | 1049002eaeb39e1dfa728894b3681534a0142ba8 (patch) | |
tree | f94a7c029ddb847f803acd76f33e515129e07399 | |
parent | 429ace2fbc8b647473e5aa6bf6c4ec381c3ff296 (diff) |
svga: adjust render target view format for RGBX
For GL_ARB_copy_image we may be asked to create an RGBA view of
a RGBX surface. Use an RGBX view format for that case.
Acked-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
-rw-r--r-- | src/gallium/drivers/svga/svga_surface.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/gallium/drivers/svga/svga_surface.c b/src/gallium/drivers/svga/svga_surface.c index a0108d22253a..e5943cfd4377 100644 --- a/src/gallium/drivers/svga/svga_surface.c +++ b/src/gallium/drivers/svga/svga_surface.c @@ -452,10 +452,22 @@ svga_validate_surface_view(struct svga_context *svga, struct svga_surface *s) &desc); } else { + SVGA3dSurfaceFormat view_format = s->key.format; + const struct svga_texture *stex = svga_texture(s->base.texture); + + /* Can't create RGBA render target view of a RGBX surface so adjust + * the view format. We do something similar for texture samplers in + * svga_validate_pipe_sampler_view(). + */ + if (view_format == SVGA3D_B8G8R8A8_UNORM && + stex->key.format == SVGA3D_B8G8R8X8_TYPELESS) { + view_format = SVGA3D_B8G8R8X8_UNORM; + } + ret = SVGA3D_vgpu10_DefineRenderTargetView(svga->swc, s->view_id, s->handle, - s->key.format, + view_format, resType, &desc); } |