Module: Mesa
Branch: master
Commit: f1410c5b910911e690290e8a95aeb9f95e7cc470
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f1410c5b910911e690290e8a95aeb9f95e7cc470

Author: Sinclair Yeh <s...@vmware.com>
Date:   Tue Mar  1 15:55:53 2016 -0800

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 <bri...@vmware.com>

---

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

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to