[PATCH 7/7] wined3d: Get rid of state access in shader_generate_glsl_declarations().
Henri Verbeet
hverbeet at codeweavers.com
Wed Mar 16 12:17:01 CDT 2016
From: Stefan Dösinger <stefan at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
dlls/wined3d/glsl_shader.c | 33 ++++++---------------------------
1 file changed, 6 insertions(+), 27 deletions(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 92a5b1c..d9311b9 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -1646,11 +1646,9 @@ static void shader_generate_glsl_declarations(const struct wined3d_context *cont
const struct wined3d_shader_reg_maps *reg_maps, const struct shader_glsl_ctx_priv *ctx_priv)
{
const struct wined3d_shader_version *version = ®_maps->shader_version;
- const struct wined3d_state *state = &shader->device->state;
const struct vs_compile_args *vs_args = ctx_priv->cur_vs_args;
const struct ps_compile_args *ps_args = ctx_priv->cur_ps_args;
const struct wined3d_gl_info *gl_info = context->gl_info;
- const struct wined3d_fb_state *fb = &shader->device->fb;
unsigned int i, extra_constants_needed = 0;
const struct wined3d_shader_lconst *lconst;
const char *prefix;
@@ -1953,7 +1951,7 @@ static void shader_generate_glsl_declarations(const struct wined3d_context *cont
{
UINT in_count = min(vec4_varyings(version->major, gl_info), shader->limits->packed_input);
- if (use_vs(state))
+ if (ps_args->vp_mode == vertexshader)
declare_in_varying(gl_info, buffer, FALSE, "vec4 %s_link[%u];\n", prefix, in_count);
shader_addline(buffer, "vec4 %s_in[%u];\n", prefix, in_count);
}
@@ -1986,32 +1984,13 @@ static void shader_generate_glsl_declarations(const struct wined3d_context *cont
}
if (reg_maps->vpos || reg_maps->usesdsy)
{
- if (shader->limits->constant_float + extra_constants_needed
- + 1 < gl_info->limits.glsl_ps_float_constants)
- {
- shader_addline(buffer, "uniform vec4 ycorrection;\n");
- extra_constants_needed++;
- }
- else
- {
- float ycorrection[] =
- {
- context->render_offscreen ? 0.0f : fb->render_targets[0]->height,
- context->render_offscreen ? 1.0f : -1.0f,
- 0.0f,
- 0.0f,
- };
-
- /* This happens because we do not have proper tracking of the
- * constant registers that are actually used, only the max
- * limit of the shader version. */
- FIXME("Cannot find a free uniform for vpos correction params\n");
- shader_addline(buffer, "const vec4 ycorrection = ");
- shader_glsl_append_imm_vec4(buffer, ycorrection);
- shader_addline(buffer, ";\n");
- }
+ ++extra_constants_needed;
+ shader_addline(buffer, "uniform vec4 ycorrection;\n");
shader_addline(buffer, "vec4 vpos;\n");
}
+
+ if (shader->limits->constant_float + extra_constants_needed >= gl_info->limits.glsl_ps_float_constants)
+ FIXME("Insufficient uniforms to run this shader.\n");
}
/* Declare output register temporaries */
--
2.1.4
More information about the wine-patches
mailing list