Module: wine Branch: master Commit: 69cbb57bfde091039b30050cee8d17374b1da58f URL: http://source.winehq.org/git/wine.git/?a=commit;h=69cbb57bfde091039b30050cee...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Thu May 7 16:36:08 2009 +0200
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(+), 0 deletions(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 92be8dc..0370fde 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, "<unhandled_immconst_type %#x>", 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 2b63364..c5f74fb 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; }