Henri Verbeet : wined3d: Use the source and destination parameter count in the ARB shader backend.
Alexandre Julliard
julliard at winehq.org
Fri Apr 3 10:28:41 CDT 2009
Module: wine
Branch: master
Commit: 29c9dc989d4c88f79a452f357b13e90d0cbb1fcd
URL: http://source.winehq.org/git/wine.git/?a=commit;h=29c9dc989d4c88f79a452f357b13e90d0cbb1fcd
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Fri Apr 3 10:36:38 2009 +0200
wined3d: Use the source and destination parameter count in the ARB shader backend.
---
dlls/wined3d/arb_program_shader.c | 21 +++++++++++----------
1 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index a30041e..bcf753a 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -899,7 +899,6 @@ static void pshader_hw_dp2add(const struct wined3d_shader_instruction *ins)
/* Map the opcode 1-to-1 to the GL code */
static void shader_hw_map2gl(const struct wined3d_shader_instruction *ins)
{
- CONST SHADER_OPCODE *curOpcode = ins->opcode;
SHADER_BUFFER *buffer = ins->buffer;
DWORD dst = ins->dst;
const DWORD *src = ins->src;
@@ -949,9 +948,9 @@ static void shader_hw_map2gl(const struct wined3d_shader_instruction *ins)
const char *modifier;
DWORD shift;
- if (!curOpcode->num_params)
+ if (!(ins->dst_count + ins->src_count))
{
- ERR("Opcode \"%s\" has no parameters\n", curOpcode->name);
+ ERR("Opcode \"%#x\" has no parameters\n", ins->handler_idx);
return;
}
@@ -974,8 +973,10 @@ static void shader_hw_map2gl(const struct wined3d_shader_instruction *ins)
modifier = (saturate && !shift) ? "_SAT" : "";
/* Generate input register names (with modifiers) */
- for (i = 1; i < curOpcode->num_params; ++i)
- pshader_gen_input_modifier_line(ins->shader, buffer, src[i-1], i-1, operands[i]);
+ for (i = 0; i < ins->src_count; ++i)
+ {
+ pshader_gen_input_modifier_line(ins->shader, buffer, src[i], i, operands[i + 1]);
+ }
/* Handle output register */
pshader_get_register_name(ins->shader, dst, output_rname);
@@ -985,10 +986,10 @@ static void shader_hw_map2gl(const struct wined3d_shader_instruction *ins)
arguments[0] = '\0';
strcat(arguments, operands[0]);
- for (i = 1; i < curOpcode->num_params; i++)
+ for (i = 0; i < ins->src_count; ++i)
{
strcat(arguments, ", ");
- strcat(arguments, operands[i]);
+ strcat(arguments, operands[i + 1]);
}
shader_addline(buffer, "%s%s %s;\n", instruction, modifier, arguments);
@@ -998,13 +999,13 @@ static void shader_hw_map2gl(const struct wined3d_shader_instruction *ins)
/* Note that vshader_program_add_param() adds spaces. */
arguments[0] = '\0';
- if (curOpcode->num_params > 0)
+ if (ins->dst_count)
{
vshader_program_add_param(ins, dst, FALSE, arguments);
- for (i = 1; i < curOpcode->num_params; ++i)
+ for (i = 0; i < ins->src_count; ++i)
{
strcat(arguments, ",");
- vshader_program_add_param(ins, src[i-1], TRUE, arguments);
+ vshader_program_add_param(ins, src[i], TRUE, arguments);
}
}
shader_addline(buffer, "%s%s;\n", instruction, arguments);
More information about the wine-cvs
mailing list