From 7d92b54a974027bcc9e7486d92c7da3c090a2cd7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20D=C3=B6singer?= Date: Mon, 15 Dec 2008 19:31:52 +0100 Subject: [PATCH] wined3d: Use the ps_compile_args struct in glsl. --- dlls/wined3d/glsl_shader.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 968acbb45cf..59e3427760e 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -544,7 +544,8 @@ static void shader_glsl_update_float_pixel_constants(IWineD3DDevice *iface, UINT /** Generate the variable & register declarations for the GLSL output target */ static void shader_generate_glsl_declarations(IWineD3DBaseShader *iface, const shader_reg_maps *reg_maps, - SHADER_BUFFER *buffer, const WineD3D_GL_Info *gl_info) + SHADER_BUFFER *buffer, const WineD3D_GL_Info *gl_info, + const struct ps_compile_args *ps_args) { IWineD3DBaseShaderImpl* This = (IWineD3DBaseShaderImpl*) iface; IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *) This->baseShader.device; @@ -618,7 +619,7 @@ static void shader_generate_glsl_declarations(IWineD3DBaseShader *iface, const s ps_impl->numbumpenvmatconsts++; } - if(device->stateBlock->renderState[WINED3DRS_SRGBWRITEENABLE]) { + if(ps_args->srgb_correction) { shader_addline(buffer, "const vec4 srgb_mul_low = vec4(%f, %f, %f, %f);\n", srgb_mul_low, srgb_mul_low, srgb_mul_low, srgb_mul_low); shader_addline(buffer, "const vec4 srgb_comparison = vec4(%f, %f, %f, %f);\n", @@ -3633,16 +3634,11 @@ static GLuint shader_glsl_generate_pshader(IWineD3DPixelShader *iface, SHADER_BU } /* Base Declarations */ - shader_generate_glsl_declarations( (IWineD3DBaseShader*) This, reg_maps, buffer, &GLINFO_LOCATION); + shader_generate_glsl_declarations( (IWineD3DBaseShader*) This, reg_maps, buffer, &GLINFO_LOCATION, args); /* Pack 3.0 inputs */ - if (reg_maps->shader_version >= WINED3DPS_VERSION(3,0)) - { - if(((IWineD3DDeviceImpl *) This->baseShader.device)->strided_streams.u.s.position_transformed) { - pshader_glsl_input_pack(buffer, This->semantics_in, iface, pretransformed); - } else if(!use_vs((IWineD3DDeviceImpl *) This->baseShader.device)) { - pshader_glsl_input_pack(buffer, This->semantics_in, iface, fixedfunction); - } + if (reg_maps->shader_version >= WINED3DPS_VERSION(3,0) && args->vp_mode != vertexshader) { + pshader_glsl_input_pack(buffer, This->semantics_in, iface, args->vp_mode); } /* Base Shader Body */ @@ -3708,7 +3704,7 @@ static void shader_glsl_generate_vshader(IWineD3DVertexShader *iface, SHADER_BUF shader_addline(buffer, "#version 120\n"); /* Base Declarations */ - shader_generate_glsl_declarations( (IWineD3DBaseShader*) This, reg_maps, buffer, &GLINFO_LOCATION); + shader_generate_glsl_declarations( (IWineD3DBaseShader*) This, reg_maps, buffer, &GLINFO_LOCATION, NULL); /* Base Shader Body */ shader_generate_main( (IWineD3DBaseShader*) This, buffer, reg_maps, function); -- 2.11.4.GIT