[Mesa-dev] [PATCH] Allow setting GL_TEXTURE_COMPARE_MODE on a sampler object without ARB_shadow support.

Stefan Dösinger stefandoesinger at gmx.at
Mon Mar 23 12:25:13 PDT 2015


This fixes a GL error warning on r200 in Wine.

The GL_ARB_sampler_objects extension does not specify a dependency on
GL_ARB_shadow or GL_ARB_depth_texture for this value. Just set the value
and don't do anything else. It won't matter without a depth texture
being assigned anyway.
---
 src/mesa/main/samplerobj.c | 35 +++++++++++++----------------------
 1 file changed, 13 insertions(+), 22 deletions(-)

diff --git a/src/mesa/main/samplerobj.c b/src/mesa/main/samplerobj.c
index d66b0b5..6095efd 100644
--- a/src/mesa/main/samplerobj.c
+++ b/src/mesa/main/samplerobj.c
@@ -621,12 +621,18 @@ static GLuint
 set_sampler_compare_mode(struct gl_context *ctx,
                          struct gl_sampler_object *samp, GLint param)
 {
-   if (!ctx->Extensions.ARB_shadow)
-      return INVALID_PNAME;
-
    if (samp->CompareMode == param)
       return GL_FALSE;
 
+   if (!ctx->Extensions.ARB_shadow) {
+      if (param == GL_NONE ||
+          param == GL_COMPARE_R_TO_TEXTURE_ARB) {
+         samp->CompareMode = param;
+         return GL_FALSE;
+      }
+      return INVALID_PARAM;
+   }
+
    if (param == GL_NONE ||
        param == GL_COMPARE_R_TO_TEXTURE_ARB) {
       flush(ctx);
@@ -642,9 +648,6 @@ static GLuint
 set_sampler_compare_func(struct gl_context *ctx,
                          struct gl_sampler_object *samp, GLint param)
 {
-   if (!ctx->Extensions.ARB_shadow)
-      return INVALID_PNAME;
-
    if (samp->CompareFunc == param)
       return GL_FALSE;
 
@@ -657,6 +660,10 @@ set_sampler_compare_func(struct gl_context *ctx,
    case GL_GREATER:
    case GL_ALWAYS:
    case GL_NEVER:
+      if(!ctx->Extensions.ARB_shadow) {
+         samp->CompareFunc = param;
+         return GL_FALSE;
+      }
       flush(ctx);
       samp->CompareFunc = param;
       return GL_TRUE;
@@ -1329,13 +1336,9 @@ _mesa_GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params)
       *params = IROUND(sampObj->LodBias);
       break;
    case GL_TEXTURE_COMPARE_MODE:
-      if (!ctx->Extensions.ARB_shadow)
-         goto invalid_pname;
       *params = sampObj->CompareMode;
       break;
    case GL_TEXTURE_COMPARE_FUNC:
-      if (!ctx->Extensions.ARB_shadow)
-         goto invalid_pname;
       *params = sampObj->CompareFunc;
       break;
    case GL_TEXTURE_MAX_ANISOTROPY_EXT:
@@ -1418,13 +1421,9 @@ _mesa_GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params)
       *params = sampObj->LodBias;
       break;
    case GL_TEXTURE_COMPARE_MODE:
-      if (!ctx->Extensions.ARB_shadow)
-         goto invalid_pname;
       *params = (GLfloat) sampObj->CompareMode;
       break;
    case GL_TEXTURE_COMPARE_FUNC:
-      if (!ctx->Extensions.ARB_shadow)
-         goto invalid_pname;
       *params = (GLfloat) sampObj->CompareFunc;
       break;
    case GL_TEXTURE_MAX_ANISOTROPY_EXT:
@@ -1497,13 +1496,9 @@ _mesa_GetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params)
       *params = (GLint) sampObj->LodBias;
       break;
    case GL_TEXTURE_COMPARE_MODE:
-      if (!ctx->Extensions.ARB_shadow)
-         goto invalid_pname;
       *params = sampObj->CompareMode;
       break;
    case GL_TEXTURE_COMPARE_FUNC:
-      if (!ctx->Extensions.ARB_shadow)
-         goto invalid_pname;
       *params = sampObj->CompareFunc;
       break;
    case GL_TEXTURE_MAX_ANISOTROPY_EXT:
@@ -1576,13 +1571,9 @@ _mesa_GetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params)
       *params = (GLuint) sampObj->LodBias;
       break;
    case GL_TEXTURE_COMPARE_MODE:
-      if (!ctx->Extensions.ARB_shadow)
-         goto invalid_pname;
       *params = sampObj->CompareMode;
       break;
    case GL_TEXTURE_COMPARE_FUNC:
-      if (!ctx->Extensions.ARB_shadow)
-         goto invalid_pname;
       *params = sampObj->CompareFunc;
       break;
    case GL_TEXTURE_MAX_ANISOTROPY_EXT:
-- 
2.3.3



More information about the mesa-dev mailing list