[PATCH 3/4] wined3d: Pass an IWineD3DBaseTextureImpl pointer to basetexture_apply_state_changes().

Henri Verbeet hverbeet at codeweavers.com
Mon Jan 3 11:51:40 CST 2011


---
 dlls/wined3d/basetexture.c     |   36 +++++++++++++++++-------------------
 dlls/wined3d/state.c           |    6 +++---
 dlls/wined3d/wined3d_private.h |    2 +-
 3 files changed, 21 insertions(+), 23 deletions(-)

diff --git a/dlls/wined3d/basetexture.c b/dlls/wined3d/basetexture.c
index 241d434..1005e87 100644
--- a/dlls/wined3d/basetexture.c
+++ b/dlls/wined3d/basetexture.c
@@ -370,24 +370,22 @@ static void apply_wrap(const struct wined3d_gl_info *gl_info, GLenum target,
 }
 
 /* GL locking is done by the caller (state handler) */
-void basetexture_apply_state_changes(IWineD3DBaseTexture *iface,
+void basetexture_apply_state_changes(IWineD3DBaseTextureImpl *texture,
         const DWORD samplerStates[WINED3D_HIGHEST_SAMPLER_STATE + 1],
         const struct wined3d_gl_info *gl_info)
 {
-    IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface;
-    GLenum textureDimensions = This->baseTexture.target;
+    BOOL cond_np2 = IWineD3DBaseTexture_IsCondNP2((IWineD3DBaseTexture *)texture);
+    GLenum textureDimensions = texture->baseTexture.target;
     DWORD state;
-    BOOL cond_np2 = IWineD3DBaseTexture_IsCondNP2(iface);
     DWORD aniso;
     struct gl_texture *gl_tex;
 
-    TRACE("iface %p, samplerStates %p\n", iface, samplerStates);
+    TRACE("texture %p, samplerStates %p\n", texture, samplerStates);
 
-    if(This->baseTexture.is_srgb) {
-        gl_tex = &This->baseTexture.texture_srgb;
-    } else {
-        gl_tex = &This->baseTexture.texture_rgb;
-    }
+    if (texture->baseTexture.is_srgb)
+        gl_tex = &texture->baseTexture.texture_srgb;
+    else
+        gl_tex = &texture->baseTexture.texture_rgb;
 
     /* This function relies on the correct texture being bound and loaded. */
 
@@ -427,7 +425,7 @@ void basetexture_apply_state_changes(IWineD3DBaseTexture *iface,
             FIXME("Unrecognized or unsupported MAGFILTER* value %d\n", state);
         }
 
-        glValue = wined3d_gl_mag_filter(This->baseTexture.magLookup,
+        glValue = wined3d_gl_mag_filter(texture->baseTexture.magLookup,
                 min(max(state, WINED3DTEXF_POINT), WINED3DTEXF_LINEAR));
         TRACE("ValueMAG=%d setting MAGFILTER to %x\n", state, glValue);
         glTexParameteri(textureDimensions, GL_TEXTURE_MAG_FILTER, glValue);
@@ -452,7 +450,7 @@ void basetexture_apply_state_changes(IWineD3DBaseTexture *iface,
                   gl_tex->states[WINED3DTEXSTA_MINFILTER],
                   gl_tex->states[WINED3DTEXSTA_MIPFILTER]);
         }
-        glValue = wined3d_gl_min_mip_filter(This->baseTexture.minMipLookup,
+        glValue = wined3d_gl_min_mip_filter(texture->baseTexture.minMipLookup,
                 min(max(samplerStates[WINED3DSAMP_MINFILTER], WINED3DTEXF_POINT), WINED3DTEXF_LINEAR),
                 min(max(samplerStates[WINED3DSAMP_MIPFILTER], WINED3DTEXF_NONE), WINED3DTEXF_LINEAR));
 
@@ -465,12 +463,12 @@ void basetexture_apply_state_changes(IWineD3DBaseTexture *iface,
         if (!cond_np2)
         {
             if (gl_tex->states[WINED3DTEXSTA_MIPFILTER] == WINED3DTEXF_NONE)
-                glValue = This->baseTexture.LOD;
-            else if (gl_tex->states[WINED3DTEXSTA_MAXMIPLEVEL] >= This->baseTexture.level_count)
-                glValue = This->baseTexture.level_count - 1;
-            else if (gl_tex->states[WINED3DTEXSTA_MAXMIPLEVEL] < This->baseTexture.LOD)
+                glValue = texture->baseTexture.LOD;
+            else if (gl_tex->states[WINED3DTEXSTA_MAXMIPLEVEL] >= texture->baseTexture.level_count)
+                glValue = texture->baseTexture.level_count - 1;
+            else if (gl_tex->states[WINED3DTEXSTA_MAXMIPLEVEL] < texture->baseTexture.LOD)
                 /* baseTexture.LOD is already clamped in the setter */
-                glValue = This->baseTexture.LOD;
+                glValue = texture->baseTexture.LOD;
             else
                 glValue = gl_tex->states[WINED3DTEXSTA_MAXMIPLEVEL];
 
@@ -508,10 +506,10 @@ void basetexture_apply_state_changes(IWineD3DBaseTexture *iface,
         gl_tex->states[WINED3DTEXSTA_MAXANISOTROPY] = aniso;
     }
 
-    if (!(This->resource.format->flags & WINED3DFMT_FLAG_SHADOW)
+    if (!(texture->resource.format->flags & WINED3DFMT_FLAG_SHADOW)
             != !gl_tex->states[WINED3DTEXSTA_SHADOW])
     {
-        if (This->resource.format->flags & WINED3DFMT_FLAG_SHADOW)
+        if (texture->resource.format->flags & WINED3DFMT_FLAG_SHADOW)
         {
             glTexParameteri(textureDimensions, GL_DEPTH_TEXTURE_MODE_ARB, GL_LUMINANCE);
             glTexParameteri(textureDimensions, GL_TEXTURE_COMPARE_MODE_ARB, GL_COMPARE_R_TO_TEXTURE_ARB);
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 77f3b98..0df1597 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -3643,10 +3643,10 @@ static void sampler(DWORD state_id, IWineD3DStateBlockImpl *stateblock, struct w
 
     if (state->textures[sampler])
     {
-        IWineD3DBaseTexture *texture = (IWineD3DBaseTexture *)state->textures[sampler];
+        IWineD3DBaseTextureImpl *texture = state->textures[sampler];
         BOOL srgb = state->sampler_states[sampler][WINED3DSAMP_SRGBTEXTURE];
 
-        IWineD3DBaseTexture_BindTexture(texture, srgb);
+        IWineD3DBaseTexture_BindTexture((IWineD3DBaseTexture *)texture, srgb);
         basetexture_apply_state_changes(texture,
                 state->sampler_states[sampler], gl_info);
 
@@ -3671,7 +3671,7 @@ static void sampler(DWORD state_id, IWineD3DStateBlockImpl *stateblock, struct w
         }
 
         /* Trigger shader constant reloading (for NP2 texcoord fixup) */
-        if (!state->textures[sampler]->baseTexture.pow2Matrix_identity)
+        if (!texture->baseTexture.pow2Matrix_identity)
         {
             device->shader_backend->shader_load_np2fixup_constants(device->shader_priv, gl_info, state);
         }
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 9eb550e..98823db 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1909,7 +1909,7 @@ typedef struct IWineD3DBaseTextureImpl
 
 } IWineD3DBaseTextureImpl;
 
-void basetexture_apply_state_changes(IWineD3DBaseTexture *iface,
+void basetexture_apply_state_changes(IWineD3DBaseTextureImpl *texture,
         const DWORD samplerStates[WINED3D_HIGHEST_SAMPLER_STATE + 1],
         const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN;
 HRESULT basetexture_bind(IWineD3DBaseTextureImpl *texture, BOOL srgb, BOOL *set_surface_desc) DECLSPEC_HIDDEN;
-- 
1.7.2.2




More information about the wine-patches mailing list