mesa: Move DepthMode to texture object
authorPauli Nieminen <pauli.nieminen@linux.intel.com>
Tue, 12 Jun 2012 18:38:46 +0000 (21:38 +0300)
committerEric Anholt <eric@anholt.net>
Wed, 1 Aug 2012 22:30:13 +0000 (15:30 -0700)
GL_DEPTH_TEXTURE_MODE isn't meant to be part of sampler state based on
compatibility profile specifications.

OpenGL specification 4.1 compatibility 20100725 3.9.2:
"... The values accepted in the pname parameter
are TEXTURE_WRAP_S, TEXTURE_WRAP_T, TEXTURE_WRAP_R, TEXTURE_MIN_-
FILTER, TEXTURE_MAG_FILTER, TEXTURE_BORDER_COLOR, TEXTURE_MIN_-
LOD, TEXTURE_MAX_LOD, TEXTURE_LOD_BIAS, TEXTURE_COMPARE_MODE, and
TEXTURE_COMPARE_FUNC. Texture state listed in table 6.25 but not listed here and
in the sampler state in table 6.26 is not part of the sampler state, and remains in the
texture object."

The list of states is in Table 6.24 "Textures (state per texture
object)" instead of 6.25 mentioned in the specification text.

Same can be found from 3.3 compatibility specification.

Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
12 files changed:
src/mesa/drivers/dri/i915/i915_texstate.c
src/mesa/drivers/dri/i965/brw_wm.c
src/mesa/drivers/dri/i965/brw_wm_surface_state.c
src/mesa/drivers/dri/i965/gen7_wm_surface_state.c
src/mesa/main/attrib.c
src/mesa/main/mtypes.h
src/mesa/main/samplerobj.c
src/mesa/main/texobj.c
src/mesa/main/texparam.c
src/mesa/main/texstate.c
src/mesa/state_tracker/st_atom_texture.c
src/mesa/swrast/s_texfilter.c

index 9e6d3b1d25f312023fc74455524e94eb34e97286..4bd5e72cf678401089976d1055945e1c38734d37 100644 (file)
@@ -168,7 +168,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
    i915->state.tex_offset[unit] = intelObj->mt->offset;
 
    format = translate_texture_format(firstImage->TexFormat,
-                                    sampler->DepthMode);
+                                    tObj->DepthMode);
    pitch = intelObj->mt->region->pitch * intelObj->mt->cpp;
 
    state[I915_TEXREG_MS3] =
index 37bc1148ae691dd8716b6f5c3427019894f4aaa1..5ab0547c1e6e90bd5f751ded2b30e61cb44e0206 100644 (file)
@@ -374,7 +374,7 @@ brw_populate_sampler_prog_key_data(struct gl_context *ctx,
             * format overrides because shadow comparison always returns the
             * result of the comparison in all channels anyway.
             */
-           switch (sampler->DepthMode) {
+           switch (t->DepthMode) {
            case GL_ALPHA:
               swizzles[0] = SWIZZLE_ZERO;
               swizzles[1] = SWIZZLE_ZERO;
index 366446241b02eb11fe6e7cb4246ebf61a22157a0..66db08fc4eecd0d790a3144c00c3630ee9631b50 100644 (file)
@@ -732,7 +732,7 @@ brw_update_texture_surface( struct gl_context *ctx, GLuint unit )
              BRW_SURFACE_CUBEFACE_ENABLES |
              (translate_tex_format(mt->format,
                                    firstImage->InternalFormat,
-                                   sampler->DepthMode,
+                                   tObj->DepthMode,
                                    sampler->sRGBDecode) <<
               BRW_SURFACE_FORMAT_SHIFT));
 
index 20e76e32f2ffdacc3bb048bf4a9f99df7052fd89..5b016dcc45cbd4e4d1fdb78e9fe5a0301feb58b1 100644 (file)
@@ -296,7 +296,7 @@ gen7_update_texture_surface(struct gl_context *ctx, GLuint unit)
    surf->ss0.surface_type = translate_tex_target(tObj->Target);
    surf->ss0.surface_format = translate_tex_format(mt->format,
                                                    firstImage->InternalFormat,
-                                                   sampler->DepthMode,
+                                                   tObj->DepthMode,
                                                    sampler->sRGBDecode);
    if (tObj->Target == GL_TEXTURE_CUBE_MAP) {
       surf->ss0.cube_pos_x = 1;
index 318d576e850c7ac0338c9d37ece808665780277c..8bc7c348fab41f54cadb0f2b7eece6756755683f 100644 (file)
@@ -806,7 +806,7 @@ pop_texture_group(struct gl_context *ctx, struct texture_state *texstate)
                                 samp->CompareFunc);
          }
          if (ctx->Extensions.ARB_depth_texture)
-            _mesa_TexParameteri(target, GL_DEPTH_TEXTURE_MODE, samp->DepthMode);
+            _mesa_TexParameteri(target, GL_DEPTH_TEXTURE_MODE, obj->DepthMode);
       }
 
       /* remove saved references to the texture objects */
index 7d7213f4d03621e1f9e9d56bcc201f3b9c466f9e..68e05a605fb3cf508ff4f7d2fa9f7aab0e4344a5 100644 (file)
@@ -1253,9 +1253,6 @@ struct gl_sampler_object
    GLfloat CompareFailValue;    /**< GL_ARB_shadow_ambient */
    GLenum sRGBDecode;           /**< GL_DECODE_EXT or GL_SKIP_DECODE_EXT */
    GLboolean CubeMapSeamless;   /**< GL_AMD_seamless_cubemap_per_texture */
-
-   /* deprecated sampler state */
-   GLenum DepthMode;           /**< GL_ARB_depth_texture */
 };
 
 
@@ -1272,6 +1269,8 @@ struct gl_texture_object
 
    struct gl_sampler_object Sampler;
 
+   GLenum DepthMode;           /**< GL_ARB_depth_texture */
+
    GLfloat Priority;           /**< in [0,1] */
    GLint BaseLevel;            /**< min mipmap level, OpenGL 1.2 */
    GLint MaxLevel;             /**< max mipmap level, OpenGL 1.2 */
index 5d1b2adbb080019b0e83dc925aef2136d56a260a..8c54c9a4c344327f35b386d123af77c2a42d1f5c 100644 (file)
@@ -133,10 +133,8 @@ _mesa_init_sampler_object(struct gl_sampler_object *sampObj, GLuint name)
    sampObj->CompareFailValue = 0.0;
    sampObj->sRGBDecode = GL_DECODE_EXT;
    sampObj->CubeMapSeamless = GL_FALSE;
-   sampObj->DepthMode = 0;
 }
 
-
 /**
  * Fallback for ctx->Driver.NewSamplerObject();
  */
index e0494c94028b1c4988a0f9896c27e6a46a64a243..529a6d449297301537a5b18092ae60676dad627d 100644 (file)
@@ -145,7 +145,7 @@ _mesa_initialize_texture_object( struct gl_texture_object *obj,
    obj->Sampler.CompareMode = GL_NONE;         /* ARB_shadow */
    obj->Sampler.CompareFunc = GL_LEQUAL;       /* ARB_shadow */
    obj->Sampler.CompareFailValue = 0.0F;       /* ARB_shadow_ambient */
-   obj->Sampler.DepthMode = GL_LUMINANCE;      /* ARB_depth_texture */
+   obj->DepthMode = GL_LUMINANCE;
    obj->Sampler.CubeMapSeamless = GL_FALSE;
    obj->Swizzle[0] = GL_RED;
    obj->Swizzle[1] = GL_GREEN;
@@ -259,7 +259,7 @@ _mesa_copy_texture_object( struct gl_texture_object *dest,
    dest->Sampler.CompareFunc = src->Sampler.CompareFunc;
    dest->Sampler.CompareFailValue = src->Sampler.CompareFailValue;
    dest->Sampler.CubeMapSeamless = src->Sampler.CubeMapSeamless;
-   dest->Sampler.DepthMode = src->Sampler.DepthMode;
+   dest->DepthMode = src->DepthMode;
    dest->Sampler.sRGBDecode = src->Sampler.sRGBDecode;
    dest->_MaxLevel = src->_MaxLevel;
    dest->_MaxLambda = src->_MaxLambda;
index 1376219d72a614856cb03e6e99ed71a909ecf218..9213499a4899484374e8c5b454198c08b0559df5 100644 (file)
@@ -383,14 +383,14 @@ set_tex_parameteri(struct gl_context *ctx,
 
    case GL_DEPTH_TEXTURE_MODE_ARB:
       if (ctx->Extensions.ARB_depth_texture) {
-         if (texObj->Sampler.DepthMode == params[0])
+         if (texObj->DepthMode == params[0])
             return GL_FALSE;
          if (params[0] == GL_LUMINANCE ||
              params[0] == GL_INTENSITY ||
              params[0] == GL_ALPHA ||
              (ctx->Extensions.ARB_texture_rg && params[0] == GL_RED)) {
             flush(ctx);
-            texObj->Sampler.DepthMode = params[0];
+            texObj->DepthMode = params[0];
             return GL_TRUE;
          }
          goto invalid_param;
@@ -1157,7 +1157,7 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params )
       case GL_DEPTH_TEXTURE_MODE_ARB:
          if (!ctx->Extensions.ARB_depth_texture)
             goto invalid_pname;
-         *params = (GLfloat) obj->Sampler.DepthMode;
+         *params = (GLfloat) obj->DepthMode;
          break;
       case GL_TEXTURE_LOD_BIAS:
          *params = obj->Sampler.LodBias;
@@ -1303,7 +1303,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params )
       case GL_DEPTH_TEXTURE_MODE_ARB:
          if (!ctx->Extensions.ARB_depth_texture)
             goto invalid_pname;
-         *params = (GLint) obj->Sampler.DepthMode;
+         *params = (GLint) obj->DepthMode;
          break;
       case GL_TEXTURE_LOD_BIAS:
          *params = (GLint) obj->Sampler.LodBias;
index 8ca9092ce010b24f26c4fc4933aeda4e8c6a13a9..fa1fef27eac484edc6e2015fce074d3feca2e0c0 100644 (file)
@@ -407,7 +407,7 @@ update_tex_combine(struct gl_context *ctx, struct gl_texture_unit *texUnit)
       GLenum format = texObj->Image[0][texObj->BaseLevel]->_BaseFormat;
 
       if (format == GL_DEPTH_COMPONENT || format == GL_DEPTH_STENCIL_EXT) {
-         format = texObj->Sampler.DepthMode;
+         format = texObj->DepthMode;
       }
       calculate_derived_texenv(&texUnit->_EnvMode, texUnit->EnvMode, format);
       texUnit->_CurrentCombine = & texUnit->_EnvMode;
index f27a320a5bcfdce29cd404272c475b2b4af1820b..fefa5986096d35ba916bb9e3e6957968016e199a 100644 (file)
@@ -147,7 +147,7 @@ st_create_texture_sampler_view_from_stobj(struct pipe_context *pipe,
    struct pipe_sampler_view templ;
    GLuint swizzle = apply_depthmode(stObj->pt->format,
                                     stObj->base._Swizzle,
-                                    samp->DepthMode);
+                                    stObj->base.DepthMode);
 
    u_sampler_view_default_template(&templ,
                                    stObj->pt,
@@ -240,7 +240,7 @@ update_single_texture(struct st_context *st,
    if (stObj->sampler_view) {
       if (check_sampler_swizzle(stObj->sampler_view,
                                stObj->base._Swizzle,
-                               samp->DepthMode) ||
+                               stObj->base.DepthMode) ||
          (st_view_format != stObj->sampler_view->format) ||
          stObj->base.BaseLevel != stObj->sampler_view->u.tex.first_level) {
         pipe_sampler_view_reference(&stObj->sampler_view, NULL);
index 412316f369fdf0a392f0ce9e6c38f9bff697e4b9..103b4425b538b203d6400ce0518146ccedbc5b1a 100644 (file)
@@ -3468,7 +3468,7 @@ sample_depth_texture( struct gl_context *ctx,
 
          result = shadow_compare(function, depthRef, depthSample, ambient);
 
-         switch (tObj->Sampler.DepthMode) {
+         switch (tObj->DepthMode) {
          case GL_LUMINANCE:
             ASSIGN_4V(texel[i], result, result, result, 1.0F);
             break;
@@ -3563,7 +3563,7 @@ sample_depth_texture( struct gl_context *ctx,
                                   depth00, depth01, depth10, depth11,
                                   ambient, wi, wj);
 
-         switch (tObj->Sampler.DepthMode) {
+         switch (tObj->DepthMode) {
          case GL_LUMINANCE:
             ASSIGN_4V(texel[i], result, result, result, 1.0F);
             break;