summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Paul <brianp@vmware.com>2016-06-27 11:15:07 -0600
committerBrian Paul <brianp@vmware.com>2016-06-30 14:32:07 -0600
commit1049002eaeb39e1dfa728894b3681534a0142ba8 (patch)
treef94a7c029ddb847f803acd76f33e515129e07399
parent429ace2fbc8b647473e5aa6bf6c4ec381c3ff296 (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.c14
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);
}