Mesa (master): i915g: Don't bind 0-length programs

Stephane Marchesin marcheu at kemper.freedesktop.org
Thu Oct 4 19:39:56 UTC 2012


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

Author: Stéphane Marchesin <marcheu at chromium.org>
Date:   Wed Oct  3 21:06:56 2012 -0700

i915g: Don't bind 0-length programs

Since we started doing fixups for different render target formats,
this has been an issue. Instead just don't do anything, when the
program gets emitted later it'll get the correct fixup.

Fixes a bunch of piglit tests.

---

 src/gallium/drivers/i915/i915_state_emit.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/i915/i915_state_emit.c b/src/gallium/drivers/i915/i915_state_emit.c
index 590a1ba..7b4b02e 100644
--- a/src/gallium/drivers/i915/i915_state_emit.c
+++ b/src/gallium/drivers/i915/i915_state_emit.c
@@ -370,6 +370,11 @@ validate_program(struct i915_context *i915, unsigned *batch_space)
 {
    uint additional_size = 0;
 
+   if (!i915->fs->program_len) {
+      *batch_space = 0;
+      return;
+   }
+
    additional_size += i915->current.target_fixup_format ? 3 : 0;
 
    /* we need more batch space if we want to emulate rgba framebuffers */
@@ -382,12 +387,13 @@ emit_program(struct i915_context *i915)
    uint additional_size = 0;
    uint i;
 
+   if (!i915->fs->program_len)
+      return;
+
    /* count how much additional space we'll need */
    validate_program(i915, &additional_size);
    additional_size -= i915->fs->decl_len + i915->fs->program_len;
 
-   /* we should always have, at least, a pass-through program */
-   assert(i915->fs->program_len > 0);
 
    /* output the declarations */
    {




More information about the mesa-commit mailing list