From 7dd4174e05974a2fb58b76614b807319623c6b28 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Thu, 23 Sep 2010 21:33:28 +0200 Subject: [PATCH] wined3d: Pass a wined3d_state structure to ffp_clip_emul(). --- dlls/wined3d/arb_program_shader.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index 6fa5fa7afc7..ed80577ddca 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -175,9 +175,9 @@ static const char *arb_get_helper_value(enum wined3d_shader_type shader, enum ar } } -static inline BOOL ffp_clip_emul(IWineD3DStateBlockImpl *stateblock) +static inline BOOL ffp_clip_emul(const struct wined3d_state *state) { - return stateblock->state.lowest_disabled_stage < 7; + return state->lowest_disabled_stage < 7; } /* ARB_program_shader private data */ @@ -4450,12 +4450,14 @@ static inline void find_arb_vs_compile_args(IWineD3DVertexShaderImpl *shader, IW WORD int_skip; IWineD3DDeviceImpl *dev = (IWineD3DDeviceImpl *)shader->baseShader.device; const struct wined3d_gl_info *gl_info = &dev->adapter->gl_info; + const struct wined3d_state *state = &stateblock->state; + find_vs_compile_args(shader, stateblock, &args->super); args->clip.boolclip_compare = 0; if(use_ps(stateblock)) { - IWineD3DPixelShaderImpl *ps = stateblock->state.pixel_shader; + IWineD3DPixelShaderImpl *ps = state->pixel_shader; struct arb_pshader_private *shader_priv = ps->baseShader.backend_data; args->ps_signature = shader_priv->input_signature_idx; @@ -4466,15 +4468,15 @@ static inline void find_arb_vs_compile_args(IWineD3DVertexShaderImpl *shader, IW args->ps_signature = ~0; if(!dev->vs_clipping) { - args->clip.boolclip.clip_texcoord = ffp_clip_emul(stateblock) ? gl_info->limits.texture_stages : 0; + args->clip.boolclip.clip_texcoord = ffp_clip_emul(state) ? gl_info->limits.texture_stages : 0; } /* Otherwise: Setting boolclip_compare set clip_texcoord to 0 */ } if (args->clip.boolclip.clip_texcoord) { - if (stateblock->state.render_states[WINED3DRS_CLIPPING]) - args->clip.boolclip.clipplane_mask = (unsigned char)stateblock->state.render_states[WINED3DRS_CLIPPLANEENABLE]; + if (state->render_states[WINED3DRS_CLIPPING]) + args->clip.boolclip.clipplane_mask = (unsigned char)state->render_states[WINED3DRS_CLIPPLANEENABLE]; /* clipplane_mask was set to 0 by setting boolclip_compare to 0 */ } @@ -4483,7 +4485,7 @@ static inline void find_arb_vs_compile_args(IWineD3DVertexShaderImpl *shader, IW /* TODO: Figure out if it would be better to store bool constants as bitmasks in the stateblock */ for(i = 0; i < MAX_CONST_B; i++) { - if (stateblock->state.vs_consts_b[i]) + if (state->vs_consts_b[i]) args->clip.boolclip.bools |= ( 1 << i); } @@ -4511,9 +4513,9 @@ static inline void find_arb_vs_compile_args(IWineD3DVertexShaderImpl *shader, IW } else { - args->loop_ctrl[i][0] = stateblock->state.vs_consts_i[i * 4]; - args->loop_ctrl[i][1] = stateblock->state.vs_consts_i[i * 4 + 1]; - args->loop_ctrl[i][2] = stateblock->state.vs_consts_i[i * 4 + 2]; + args->loop_ctrl[i][0] = state->vs_consts_i[i * 4]; + args->loop_ctrl[i][1] = state->vs_consts_i[i * 4 + 1]; + args->loop_ctrl[i][2] = state->vs_consts_i[i * 4 + 2]; } } } @@ -5979,7 +5981,8 @@ static GLuint gen_arbfp_ffp_shader(const struct ffp_frag_settings *settings, IWi srgb_sub_high, 0.0, 0.0, 0.0); } - if(ffp_clip_emul(stateblock) && settings->emul_clipplanes) shader_addline(&buffer, "KIL fragment.texcoord[7];\n"); + if (ffp_clip_emul(&stateblock->state) && settings->emul_clipplanes) + shader_addline(&buffer, "KIL fragment.texcoord[7];\n"); /* Generate texture sampling instructions) */ for(stage = 0; stage < MAX_TEXTURES && settings->op[stage].cop != WINED3DTOP_DISABLE; stage++) { -- 2.11.4.GIT