[PATCH] WineD3D: Only register the np2 texture fixup if needed=0A=

Stefan Doesinger stefan at codeweavers.com
Sat Jul 5 16:07:00 CDT 2008


=0A=
---=0A=
 dlls/wined3d/state.c |   15 +++++++++++++--=0A=
 1 files changed, 13 insertions(+), 2 deletions(-)=0A=
=0A=
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c=0A=
index 2e99d28..556a9df 100644=0A=
--- a/dlls/wined3d/state.c=0A=
+++ b/dlls/wined3d/state.c=0A=
@@ -2354,7 +2354,7 @@ static void sampler_texmatrix(DWORD state, =
IWineD3DStateBlockImpl *stateblock, W=0A=
      * The mapped stage is alrady active because the sampler() function =
below, which is part of the=0A=
      * misc pipeline=0A=
      */=0A=
-    if(!GL_SUPPORT(ARB_TEXTURE_NON_POWER_OF_TWO) && sampler < =
MAX_TEXTURES) {=0A=
+    if(sampler < MAX_TEXTURES) {=0A=
         if(stateblock->textureDimensions[sampler] =3D=3D GL_TEXTURE_2D =
||=0A=
            stateblock->textureDimensions[sampler] =3D=3D =
GL_TEXTURE_RECTANGLE_ARB) {=0A=
             if(((IWineD3DTextureImpl *) =
stateblock->textures[sampler])->baseTexture.pow2Matrix[0] !=3D 1.0 ||=0A=
@@ -4344,14 +4344,25 @@ const struct StateEntryTemplate =
ffp_vertexstate_template[] =3D {=0A=
     { STATE_RENDER(WINED3DRS_POINTSIZE_MAX),              { =
STATE_RENDER(WINED3DRS_POINTSIZE_MAX),              state_psizemax_arb  =
}, ARB_POINT_PARAMETERS            },=0A=
     { STATE_RENDER(WINED3DRS_POINTSIZE_MAX),              { =
STATE_RENDER(WINED3DRS_POINTSIZE_MAX),              state_psizemax_ext  =
}, EXT_POINT_PARAMETERS            },=0A=
     { STATE_RENDER(WINED3DRS_POINTSIZE_MAX),              { =
STATE_RENDER(WINED3DRS_POINTSIZE_MAX),              state_psizemax_w    =
}, 0                               },=0A=
-    /* Samplers for NP2 texture matrix adjustions */=0A=
+    /* Samplers for NP2 texture matrix adjustions. They are not needed =
if GL_ARB_texture_non_power_of_two is supported,=0A=
+     * so register a NULL state handler in that case to get the vertex =
part of sampler() skipped(VTF is handled in the misc states.=0A=
+     * otherwise, register sampler_texmatrix, which takes care of =
updating the texture matrix=0A=
+     */=0A=
+    { STATE_SAMPLER(0),                                   { 0,          =
                                        NULL                }, =
ARB_TEXTURE_NON_POWER_OF_TWO    },=0A=
     { STATE_SAMPLER(0),                                   { =
STATE_SAMPLER(0),                                   sampler_texmatrix   =
}, 0                               },=0A=
+    { STATE_SAMPLER(1),                                   { 0,          =
                                        NULL                }, =
ARB_TEXTURE_NON_POWER_OF_TWO    },=0A=
     { STATE_SAMPLER(1),                                   { =
STATE_SAMPLER(1),                                   sampler_texmatrix   =
}, 0                               },=0A=
+    { STATE_SAMPLER(2),                                   { 0,          =
                                        NULL                }, =
ARB_TEXTURE_NON_POWER_OF_TWO    },=0A=
     { STATE_SAMPLER(2),                                   { =
STATE_SAMPLER(2),                                   sampler_texmatrix   =
}, 0                               },=0A=
+    { STATE_SAMPLER(3),                                   { 0,          =
                                        NULL                }, =
ARB_TEXTURE_NON_POWER_OF_TWO    },=0A=
     { STATE_SAMPLER(3),                                   { =
STATE_SAMPLER(3),                                   sampler_texmatrix   =
}, 0                               },=0A=
+    { STATE_SAMPLER(4),                                   { 0,          =
                                        NULL                }, =
ARB_TEXTURE_NON_POWER_OF_TWO    },=0A=
     { STATE_SAMPLER(4),                                   { =
STATE_SAMPLER(4),                                   sampler_texmatrix   =
}, 0                               },=0A=
+    { STATE_SAMPLER(5),                                   { 0,          =
                                        NULL                }, =
ARB_TEXTURE_NON_POWER_OF_TWO    },=0A=
     { STATE_SAMPLER(5),                                   { =
STATE_SAMPLER(5),                                   sampler_texmatrix   =
}, 0                               },=0A=
+    { STATE_SAMPLER(6),                                   { 0,          =
                                        NULL                }, =
ARB_TEXTURE_NON_POWER_OF_TWO    },=0A=
     { STATE_SAMPLER(6),                                   { =
STATE_SAMPLER(6),                                   sampler_texmatrix   =
}, 0                               },=0A=
+    { STATE_SAMPLER(7),                                   { 0,          =
                                        NULL                }, =
ARB_TEXTURE_NON_POWER_OF_TWO    },=0A=
     { STATE_SAMPLER(7),                                   { =
STATE_SAMPLER(7),                                   sampler_texmatrix   =
}, 0                               },=0A=
     {0 /* Terminate */,                                   { 0,          =
                                        0                   }, 0         =
                      },=0A=
 };=0A=
-- =0A=
1.5.4.5=0A=
=0A=

------=_NextPart_000_0001_01C8E609.D6396940--




More information about the wine-patches mailing list