r100/r200/r300/r600: Set MaxCombinedTextureImageunits.
authorPauli Nieminen <suokkos@gmail.com>
Sun, 7 Feb 2010 01:06:27 +0000 (03:06 +0200)
committerPauli Nieminen <suokkos@gmail.com>
Sun, 7 Feb 2010 11:13:23 +0000 (13:13 +0200)
Fixes glActiveTexture to set GL_INVALID_ENUM when trying
to activate texture unit that is not available.

piglit test case general/texunit passes now.

src/mesa/drivers/dri/r200/r200_context.c
src/mesa/drivers/dri/r300/r300_context.c
src/mesa/drivers/dri/r600/r600_context.c
src/mesa/drivers/dri/radeon/radeon_context.c

index 31910253dd3b3b295a9615d41403e0eaf5533c46..8986191c3937f7c66272e9697f8c2ecc9569e243 100644 (file)
@@ -350,6 +350,8 @@ GLboolean r200CreateContext( const __GLcontextModes *glVisual,
    ctx->Const.MaxTextureImageUnits = ctx->Const.MaxTextureUnits;
    ctx->Const.MaxTextureCoordUnits = ctx->Const.MaxTextureUnits;
 
+   ctx->Const.MaxCombinedTextureImageUnits = ctx->Const.MaxTextureUnits;
+
    i = driQueryOptioni( &rmesa->radeon.optionCache, "allow_large_textures");
 
    /* FIXME: When no memory manager is available we should set this 
index eedb7b6ed8679731e12c3b33ccc339c931fd7265..7c21efb1ded2e4eb7fd44d5cfb803feb375d26c0 100644 (file)
@@ -333,6 +333,10 @@ static void r300InitConstValues(GLcontext *ctx, radeonScreenPtr screen)
            driQueryOptioni(&r300->radeon.optionCache, "texture_coord_units");
        ctx->Const.MaxTextureUnits = MIN2(ctx->Const.MaxTextureImageUnits,
                 ctx->Const.MaxTextureCoordUnits);
+       ctx->Const.MaxCombinedTextureImageUnits =
+               ctx->Const.MaxVertexTextureImageUnits +
+               ctx->Const.MaxTextureImageUnits;
+
 
        ctx->Const.MaxTextureMaxAnisotropy = 16.0;
        ctx->Const.MaxTextureLodBias = 16.0;
index 15f65bae6e3b5bf44495d125982717065659aefe..5b7d7c28ec173494e8af5d6befc011dd02f92868 100644 (file)
@@ -249,6 +249,10 @@ static void r600InitConstValues(GLcontext *ctx, radeonScreenPtr screen)
        ctx->Const.MaxTextureUnits =
            MIN2(ctx->Const.MaxTextureImageUnits,
                 ctx->Const.MaxTextureCoordUnits);
+       ctx->Const.MaxCombinedTextureImageUnits =
+               ctx->Const.MaxVertexTextureImageUnits +
+               ctx->Const.MaxTextureImageUnits;
+
        ctx->Const.MaxTextureMaxAnisotropy = 16.0;
        ctx->Const.MaxTextureLodBias = 16.0;
 
index 86c91f19bb897e89305b9f5bcd96c8d57cbff1dd..475e93bc05feec3cef7c7ada8ac044e2b8b8f72d 100644 (file)
@@ -279,6 +279,7 @@ r100CreateContext( const __GLcontextModes *glVisual,
                                                 "texture_units");
    ctx->Const.MaxTextureImageUnits = ctx->Const.MaxTextureUnits;
    ctx->Const.MaxTextureCoordUnits = ctx->Const.MaxTextureUnits;
+   ctx->Const.MaxCombinedTextureImageUnits = ctx->Const.MaxTextureUnits;
 
    i = driQueryOptioni( &rmesa->radeon.optionCache, "allow_large_textures");