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

Author: José Fonseca <[email protected]>
Date:   Sat Apr 20 09:43:54 2013 +0100

llvmpipe: Ignore depth-stencil state if format has no depth/stencil.

Prevents assertion failures inside the driver for such state combinations.

Reviewed-by: Brian Paul <[email protected]>

---

 src/gallium/drivers/llvmpipe/lp_state_fs.c |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c 
b/src/gallium/drivers/llvmpipe/lp_state_fs.c
index 8712885..1a9a194 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_fs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c
@@ -2478,12 +2478,18 @@ make_variant_key(struct llvmpipe_context *lp,
    memset(key, 0, shader->variant_key_size);
 
    if (lp->framebuffer.zsbuf) {
-      if (lp->depth_stencil->depth.enabled) {
-         key->zsbuf_format = lp->framebuffer.zsbuf->format;
+      enum pipe_format zsbuf_format = lp->framebuffer.zsbuf->format;
+      const struct util_format_description *zsbuf_desc =
+         util_format_description(zsbuf_format);
+
+      if (lp->depth_stencil->depth.enabled &&
+          util_format_has_depth(zsbuf_desc)) {
+         key->zsbuf_format = zsbuf_format;
          memcpy(&key->depth, &lp->depth_stencil->depth, sizeof key->depth);
       }
-      if (lp->depth_stencil->stencil[0].enabled) {
-         key->zsbuf_format = lp->framebuffer.zsbuf->format;
+      if (lp->depth_stencil->stencil[0].enabled &&
+          util_format_has_stencil(zsbuf_desc)) {
+         key->zsbuf_format = zsbuf_format;
          memcpy(&key->stencil, &lp->depth_stencil->stencil, sizeof 
key->stencil);
       }
    }

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to