intel: Attempt to fix up after "Update vertex texture code."
authorEric Anholt <eric@anholt.net>
Thu, 10 Dec 2009 17:16:37 +0000 (09:16 -0800)
committerEric Anholt <eric@anholt.net>
Thu, 10 Dec 2009 17:56:52 +0000 (09:56 -0800)
The MaxCombinedTextureImageUnits is the total number of samplers that can
be bound between vertex, geometry, and fragment, not 0.  This should report
the correct value on 965 now.  Other DRI drivers may also need updating if
their MaxVertexTextureImageUnits != 0 (for example, if using the sw vertex
pipeline).

It's not clear to me if there's going to be a valid value for this
limit other than MaxTextureImageUnits + MaxVertexTextureImageUnits (+
MaxGeometryTextureImageUnits eventually).  If not, then we should probably
just move this into the core at Get time.

Bug #25518 (wine regression).  Fixes piglit vp-combined-image-units.

src/mesa/drivers/dri/i915/i915_context.c
src/mesa/drivers/dri/i965/brw_context.c

index 7d4c7cfbabbdd1a1d6e346f7f826c3242a5c30b7..0485be2cc1feafd502ed0cf2ec0778de453e1da9 100644 (file)
@@ -143,6 +143,9 @@ i915CreateContext(const __GLcontextModes * mesaVis,
    ctx->Const.MaxTextureImageUnits = I915_TEX_UNITS;
    ctx->Const.MaxTextureCoordUnits = I915_TEX_UNITS;
    ctx->Const.MaxVarying = I915_TEX_UNITS;
+   ctx->Const.MaxCombinedTextureImageUnits =
+      ctx->Const.MaxVertexTextureImageUnits +
+      ctx->Const.MaxTextureImageUnits;
 
    /* Advertise the full hardware capabilities.  The new memory
     * manager should cope much better with overload situations:
index 8bdda60697b9f6e63cddbc390a887edaf8c9973d..78bea82949313e8d4e81b7b1f0879df4ae9b8130 100644 (file)
@@ -111,7 +111,9 @@ GLboolean brwCreateContext( const __GLcontextModes *mesaVis,
    ctx->Const.MaxTextureUnits = MIN2(ctx->Const.MaxTextureCoordUnits,
                                      ctx->Const.MaxTextureImageUnits);
    ctx->Const.MaxVertexTextureImageUnits = 0; /* no vertex shader textures */
-   ctx->Const.MaxCombinedTextureImageUnits = 0;
+   ctx->Const.MaxCombinedTextureImageUnits =
+      ctx->Const.MaxVertexTextureImageUnits +
+      ctx->Const.MaxTextureImageUnits;
 
    /* Mesa limits textures to 4kx4k; it would be nice to fix that someday
     */