From 69cbb57bfde091039b30050cee8d17374b1da58f Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Thu, 7 May 2009 16:36:08 +0200 Subject: [PATCH] wined3d: Add support for immediate constants to the GLSL backend. --- dlls/wined3d/glsl_shader.c | 19 +++++++++++++++++++ dlls/wined3d/wined3d_private.h | 9 +++++++++ 2 files changed, 28 insertions(+) diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 92be8dcd5f9..0370fdedd59 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -1220,6 +1220,25 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register * } break; + case WINED3DSPR_IMMCONST: + switch (reg->immconst_type) + { + case WINED3D_IMMCONST_FLOAT: + sprintf(register_name, "%.8e", *(float *)reg->immconst_data); + break; + + case WINED3D_IMMCONST_FLOAT4: + sprintf(register_name, "vec4(%.8e, %.8e, %.8e, %.8e)", + *(float *)®->immconst_data[0], *(float *)®->immconst_data[1], + *(float *)®->immconst_data[2], *(float *)®->immconst_data[3]); + break; + + default: + FIXME("Unhandled immconst type %#x\n", reg->immconst_type); + sprintf(register_name, "", reg->immconst_type); + } + break; + default: FIXME("Unhandled register name Type(%d)\n", reg->type); sprintf(register_name, "unrecognized_register"); diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 2b63364d78b..c5f74fb302e 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -2621,6 +2621,15 @@ static inline BOOL shader_is_scalar(const struct wined3d_shader_register *reg) return FALSE; } + case WINED3DSPR_IMMCONST: + switch(reg->immconst_type) + { + case WINED3D_IMMCONST_FLOAT: + return TRUE; + default: + return FALSE; + } + default: return FALSE; }