i915g: Use the right shader limits.
authorStéphane Marchesin <marcheu@chromium.org>
Tue, 18 Oct 2011 04:43:19 +0000 (21:43 -0700)
committerStéphane Marchesin <marcheu@chromium.org>
Tue, 18 Oct 2011 04:43:46 +0000 (21:43 -0700)
src/gallium/drivers/i915/i915_fpc.h
src/gallium/drivers/i915/i915_reg.h
src/gallium/drivers/i915/i915_screen.c

index 26cf2fb..bfd658f 100644 (file)
@@ -37,7 +37,7 @@
 
 #include "tgsi/tgsi_parse.h"
 
-#define I915_PROGRAM_SIZE 192
+#define I915_PROGRAM_SIZE (3 * I915_MAX_INSN)
 
 /* Use those indices for pos/face routing, must be >= num of inputs */
 #define I915_SEMANTIC_POS  100
index e48a942..620c64e 100644 (file)
 #define I915_MAX_DECL_INSN    27
 #define I915_MAX_TEMPORARY    16
 
+#define I915_MAX_INSN          (I915_MAX_DECL_INSN + \
+                               I915_MAX_TEX_INSN + \
+                               I915_MAX_ALU_INSN)
+
 
 /* Each instruction is 3 dwords long, though most don't require all
  * this space.  Maximum of 123 instructions.  Smaller maxes per insn
index 4e14b2f..75545f4 100644 (file)
@@ -117,11 +117,11 @@ i915_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_sha
       /* XXX: these are just shader model 2.0 values, fix this! */
       switch(cap) {
       case PIPE_SHADER_CAP_MAX_INSTRUCTIONS:
-         return 96;
+         return I915_MAX_ALU_INSN + I915_MAX_TEX_INSN;
       case PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS:
-         return 64;
+         return I915_MAX_ALU_INSN;
       case PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS:
-         return 32;
+         return I915_MAX_TEX_INSN;
       case PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS:
          return 8;
       case PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH:
@@ -150,7 +150,7 @@ i915_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_sha
       case PIPE_SHADER_CAP_INTEGERS:
          return 0;
       case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
-         return 8;
+         return I915_TEX_UNITS;
       default:
          debug_printf("%s: Unknown cap %u.\n", __FUNCTION__, cap);
          return 0;