+ /* GL_EXT_direct_state_access */
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_3D:
+ case GL_TEXTURE_CUBE_MAP:
+ case GL_TEXTURE_GEN_S:
+ case GL_TEXTURE_GEN_T:
+ case GL_TEXTURE_GEN_R:
+ case GL_TEXTURE_GEN_Q:
+ case GL_TEXTURE_RECTANGLE_ARB: {
+ GLuint curTexUnitSave;
+ if (index >= _mesa_max_tex_unit(ctx))
+ goto invalid_enum;
+ curTexUnitSave = ctx->Texture.CurrentUnit;
+ _mesa_ActiveTexture_no_error(GL_TEXTURE0 + index);
+ v->value_int = _mesa_IsEnabled(pname);
+ _mesa_ActiveTexture_no_error(GL_TEXTURE0 + curTexUnitSave);
+ return TYPE_INT;
+ }
+ case GL_TEXTURE_COORD_ARRAY: {
+ GLuint curTexUnitSave;
+ if (index >= ctx->Const.MaxTextureCoordUnits)
+ goto invalid_enum;
+ curTexUnitSave = ctx->Array.ActiveTexture;
+ _mesa_ClientActiveTexture(GL_TEXTURE0 + index);
+ v->value_int = _mesa_IsEnabled(pname);
+ _mesa_ClientActiveTexture(GL_TEXTURE0 + curTexUnitSave);
+ return TYPE_INT;
+ }
+ case GL_TEXTURE_MATRIX:
+ if (index >= ARRAY_SIZE(ctx->TextureMatrixStack))
+ goto invalid_enum;
+ v->value_matrix = ctx->TextureMatrixStack[index].Top;
+ return TYPE_MATRIX;
+ case GL_TRANSPOSE_TEXTURE_MATRIX:
+ if (index >= ARRAY_SIZE(ctx->TextureMatrixStack))
+ goto invalid_enum;
+ v->value_matrix = ctx->TextureMatrixStack[index].Top;
+ return TYPE_MATRIX_T;
+ /* GL_NV_viewport_swizzle */
+ case GL_VIEWPORT_SWIZZLE_X_NV:
+ if (!ctx->Extensions.NV_viewport_swizzle)
+ goto invalid_enum;
+ if (index >= ctx->Const.MaxViewports)
+ goto invalid_value;
+ v->value_int = ctx->ViewportArray[index].SwizzleX;
+ return TYPE_INT;
+ case GL_VIEWPORT_SWIZZLE_Y_NV:
+ if (!ctx->Extensions.NV_viewport_swizzle)
+ goto invalid_enum;
+ if (index >= ctx->Const.MaxViewports)
+ goto invalid_value;
+ v->value_int = ctx->ViewportArray[index].SwizzleY;
+ return TYPE_INT;
+ case GL_VIEWPORT_SWIZZLE_Z_NV:
+ if (!ctx->Extensions.NV_viewport_swizzle)
+ goto invalid_enum;
+ if (index >= ctx->Const.MaxViewports)
+ goto invalid_value;
+ v->value_int = ctx->ViewportArray[index].SwizzleZ;
+ return TYPE_INT;
+ case GL_VIEWPORT_SWIZZLE_W_NV:
+ if (!ctx->Extensions.NV_viewport_swizzle)
+ goto invalid_enum;
+ if (index >= ctx->Const.MaxViewports)
+ goto invalid_value;
+ v->value_int = ctx->ViewportArray[index].SwizzleW;
+ return TYPE_INT;