Module: wine Branch: master Commit: f7918b978faaae516e14b0acbe41fb16cc5400bb URL: http://source.winehq.org/git/wine.git/?a=commit;h=f7918b978faaae516e14b0acbe...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Wed Aug 12 09:44:26 2009 +0200
wined3d: Make the "luminanceparams" shader_reg_maps member a bitmap.
---
dlls/wined3d/arb_program_shader.c | 7 ++++--- dlls/wined3d/baseshader.c | 2 +- dlls/wined3d/glsl_shader.c | 2 +- dlls/wined3d/state.c | 5 +++-- dlls/wined3d/wined3d_private.h | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index ec86d41..0d1ac9a 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -3384,7 +3384,7 @@ static GLuint shader_arb_generate_pshader(IWineD3DPixelShaderImpl *This, struct i, compiled->bumpenvmatconst[cur].const_num); compiled->numbumpenvmatconsts = cur + 1;
- if(!reg_maps->luminanceparams[i]) continue; + if (!(reg_maps->luminanceparams & (1 << i))) continue;
compiled->luminanceconst[cur].const_num = next_local++; shader_addline(buffer, "PARAM luminance%d = program.local[%d];\n", @@ -5262,8 +5262,9 @@ static void tex_bumpenvlum_arbfp(DWORD state, IWineD3DStateBlockImpl *stateblock
if (use_ps(stateblock)) { - if(stage != 0 && - ((IWineD3DPixelShaderImpl *) stateblock->pixelShader)->baseShader.reg_maps.luminanceparams[stage]) { + if (stage != 0 + && (((IWineD3DPixelShaderImpl *)stateblock->pixelShader)->baseShader.reg_maps.luminanceparams & (1 << stage))) + { /* The pixel shader has to know the luminance offset. Do a constants update if it * isn't scheduled anyway */ diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c index 252197c..60d2c53 100644 --- a/dlls/wined3d/baseshader.c +++ b/dlls/wined3d/baseshader.c @@ -689,7 +689,7 @@ HRESULT shader_get_registers_used(IWineD3DBaseShader *iface, const struct wined3 reg_maps->bumpmat |= 1 << dst_param.reg.idx; if (ins.handler_idx == WINED3DSIH_TEXBEML) { - reg_maps->luminanceparams[sampler_code] = TRUE; + reg_maps->luminanceparams |= 1 << dst_param.reg.idx; } } } diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 16b772e..d0c8713 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -905,7 +905,7 @@ static void shader_generate_glsl_declarations(const struct wined3d_context *cont
shader_addline(buffer, "uniform mat2 bumpenvmat%d;\n", i);
- if (reg_maps->luminanceparams[i]) + if (reg_maps->luminanceparams & (1 << i)) { shader_addline(buffer, "uniform float luminancescale%d;\n", i); shader_addline(buffer, "uniform float luminanceoffset%d;\n", i); diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index cb87d73..1448b24 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -3368,8 +3368,9 @@ static void tex_bumpenvlscale(DWORD state, IWineD3DStateBlockImpl *stateblock, s { DWORD stage = (state - STATE_TEXTURESTAGE(0, 0)) / (WINED3D_HIGHEST_TEXTURE_STATE + 1);
- if(stateblock->pixelShader && stage != 0 && - ((IWineD3DPixelShaderImpl *) stateblock->pixelShader)->baseShader.reg_maps.luminanceparams[stage]) { + if (stateblock->pixelShader && stage != 0 + && (((IWineD3DPixelShaderImpl *)stateblock->pixelShader)->baseShader.reg_maps.luminanceparams & (1 << stage))) + { /* The pixel shader has to know the luminance scale. Do a constants update if it * isn't scheduled anyway */ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 32402ab..8df99f6 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -643,7 +643,7 @@ typedef struct shader_reg_maps
WINED3DSAMPLER_TEXTURE_TYPE sampler_type[max(MAX_FRAGMENT_SAMPLERS, MAX_VERTEX_SAMPLERS)]; BYTE bumpmat; /* MAX_TEXTURES, 8 */ - BOOL luminanceparams[MAX_TEXTURES]; + BYTE luminanceparams; /* MAX_TEXTURES, 8 */
WORD usesnrm : 1; WORD vpos : 1;