Stefan Dösinger : wined3d: Use the ps_compile_args struct in glsl.
Alexandre Julliard
julliard at winehq.org
Fri Dec 19 11:19:13 CST 2008
Module: wine
Branch: master
Commit: 7d92b54a974027bcc9e7486d92c7da3c090a2cd7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=7d92b54a974027bcc9e7486d92c7da3c090a2cd7
Author: Stefan Dösinger <stefan at codeweavers.com>
Date: Mon Dec 15 19:31:52 2008 +0100
wined3d: Use the ps_compile_args struct in glsl.
---
dlls/wined3d/glsl_shader.c | 18 +++++++-----------
1 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 968acbb..59e3427 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);
More information about the wine-cvs
mailing list