[PATCH 2/5] wined3d: Simplify stateblock_savedstates_set().
Henri Verbeet
hverbeet at codeweavers.com
Thu Oct 1 04:36:07 CDT 2009
We only need to handle the case where "value" is TRUE, since the stateblock
data will be filled with zeroes by default.
---
dlls/wined3d/stateblock.c | 72 +++++++++++++++++----------------------------
1 files changed, 27 insertions(+), 45 deletions(-)
diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
index 3c6863e..f37e452 100644
--- a/dlls/wined3d/stateblock.c
+++ b/dlls/wined3d/stateblock.c
@@ -79,54 +79,37 @@ static inline void stateblock_set_bits(DWORD *map, UINT map_size)
}
/* Set all members of a stateblock savedstate to the given value */
-static void stateblock_savedstates_set(SAVEDSTATES *states, BOOL value, const struct wined3d_gl_info *gl_info)
+static void stateblock_savedstates_set(SAVEDSTATES *states, const struct wined3d_gl_info *gl_info)
{
+ unsigned int i;
+
/* Single values */
- states->primitive_type = value;
- states->indices = value;
- states->material = value;
- states->viewport = value;
- states->vertexDecl = value;
- states->pixelShader = value;
- states->vertexShader = value;
- states->scissorRect = value;
+ states->primitive_type = 1;
+ states->indices = 1;
+ states->material = 1;
+ states->viewport = 1;
+ states->vertexDecl = 1;
+ states->pixelShader = 1;
+ states->vertexShader = 1;
+ states->scissorRect = 1;
/* Fixed size arrays */
- if (value)
- {
- int i;
- states->streamSource = 0xffff;
- states->streamFreq = 0xffff;
- states->textures = 0xfffff;
- stateblock_set_bits(states->transform, HIGHEST_TRANSFORMSTATE + 1);
- stateblock_set_bits(states->renderState, WINEHIGHEST_RENDER_STATE + 1);
- for (i = 0; i < MAX_TEXTURES; ++i) states->textureState[i] = 0x3ffff;
- for (i = 0; i < MAX_COMBINED_SAMPLERS; ++i) states->samplerState[i] = 0x3fff;
- states->clipplane = 0xffffffff;
- states->pixelShaderConstantsB = 0xffff;
- states->pixelShaderConstantsI = 0xffff;
- states->vertexShaderConstantsB = 0xffff;
- states->vertexShaderConstantsI = 0xffff;
- }
- else
- {
- states->streamSource = 0;
- states->streamFreq = 0;
- states->textures = 0;
- memset(states->transform, 0, sizeof(states->transform));
- memset(states->renderState, 0, sizeof(states->renderState));
- memset(states->textureState, 0, sizeof(states->textureState));
- memset(states->samplerState, 0, sizeof(states->samplerState));
- states->clipplane = 0;
- states->pixelShaderConstantsB = 0;
- states->pixelShaderConstantsI = 0;
- states->vertexShaderConstantsB = 0;
- states->vertexShaderConstantsI = 0;
- }
+ states->streamSource = 0xffff;
+ states->streamFreq = 0xffff;
+ states->textures = 0xfffff;
+ stateblock_set_bits(states->transform, HIGHEST_TRANSFORMSTATE + 1);
+ stateblock_set_bits(states->renderState, WINEHIGHEST_RENDER_STATE + 1);
+ for (i = 0; i < MAX_TEXTURES; ++i) states->textureState[i] = 0x3ffff;
+ for (i = 0; i < MAX_COMBINED_SAMPLERS; ++i) states->samplerState[i] = 0x3fff;
+ states->clipplane = 0xffffffff;
+ states->pixelShaderConstantsB = 0xffff;
+ states->pixelShaderConstantsI = 0xffff;
+ states->vertexShaderConstantsB = 0xffff;
+ states->vertexShaderConstantsI = 0xffff;
/* Dynamically sized arrays */
- memset(states->pixelShaderConstantsF, value, sizeof(BOOL) * gl_info->max_pshader_constantsF);
- memset(states->vertexShaderConstantsF, value, sizeof(BOOL) * gl_info->max_vshader_constantsF);
+ memset(states->pixelShaderConstantsF, TRUE, sizeof(BOOL) * gl_info->max_pshader_constantsF);
+ memset(states->vertexShaderConstantsF, TRUE, sizeof(BOOL) * gl_info->max_vshader_constantsF);
}
static void stateblock_copy_values(IWineD3DStateBlockImpl *dst, const IWineD3DStateBlockImpl *src,
@@ -1462,7 +1445,8 @@ HRESULT stateblock_init(IWineD3DStateBlockImpl *stateblock, IWineD3DDeviceImpl *
if (type == WINED3DSBT_ALL)
{
TRACE("ALL => Pretend everything has changed.\n");
- stateblock_savedstates_set(&stateblock->changed, TRUE, gl_info);
+
+ stateblock_savedstates_set(&stateblock->changed, gl_info);
/* Lights are not part of the changed / set structure. */
for (i = 0; i < LIGHTMAP_SIZE; ++i)
@@ -1557,7 +1541,6 @@ HRESULT stateblock_init(IWineD3DStateBlockImpl *stateblock, IWineD3DDeviceImpl *
else if (type == WINED3DSBT_PIXELSTATE)
{
TRACE("PIXELSTATE => Pretend all pixel states have changed.\n");
- stateblock_savedstates_set(&stateblock->changed, FALSE, gl_info);
/* Pixel Shader Constants. */
for (i = 0; i < gl_info->max_pshader_constantsF; ++i)
@@ -1629,7 +1612,6 @@ HRESULT stateblock_init(IWineD3DStateBlockImpl *stateblock, IWineD3DDeviceImpl *
else if (type == WINED3DSBT_VERTEXSTATE)
{
TRACE("VERTEXSTATE => Pretend all vertex shates have changed.\n");
- stateblock_savedstates_set(&stateblock->changed, FALSE, gl_info);
/* Vertex Shader Constants. */
for (i = 0; i < gl_info->max_vshader_constantsF; ++i)
--
1.6.0.6
More information about the wine-patches
mailing list