From: Nikolay Sivov nsivov@codeweavers.com
It's used with tx_1_0 code.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/d3dx9_36/d3dx9_private.h | 1 + dlls/d3dx9_36/preshader.c | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/dlls/d3dx9_36/d3dx9_private.h b/dlls/d3dx9_36/d3dx9_private.h index 7ee754b104a..12f275e8523 100644 --- a/dlls/d3dx9_36/d3dx9_private.h +++ b/dlls/d3dx9_36/d3dx9_private.h @@ -241,6 +241,7 @@ enum pres_reg_tables { PRES_REGTAB_IMMED, PRES_REGTAB_CONST, + PRES_REGTAB_INPUT, PRES_REGTAB_OCONST, PRES_REGTAB_OBCONST, PRES_REGTAB_OICONST, diff --git a/dlls/d3dx9_36/preshader.c b/dlls/d3dx9_36/preshader.c index 3ee8fab145e..6b28a7416ba 100644 --- a/dlls/d3dx9_36/preshader.c +++ b/dlls/d3dx9_36/preshader.c @@ -203,6 +203,7 @@ table_info[] = { { "imm", sizeof(double), PRES_VT_DOUBLE }, /* PRES_REGTAB_IMMED */ { "c", sizeof(float), PRES_VT_FLOAT }, /* PRES_REGTAB_CONST */ + { "v", sizeof(float), PRES_VT_FLOAT }, /* PRES_REGTAB_INPUT */ { "oc", sizeof(float), PRES_VT_FLOAT }, /* PRES_REGTAB_OCONST */ { "ob", sizeof(BOOL), PRES_VT_BOOL }, /* PRES_REGTAB_OBCONST */ { "oi", sizeof(int), PRES_VT_INT, }, /* PRES_REGTAB_OICONST */ @@ -411,7 +412,7 @@ static unsigned int *parse_pres_reg(unsigned int *ptr, struct d3dx_pres_reg *reg { static const enum pres_reg_tables reg_table[8] = { - PRES_REGTAB_COUNT, PRES_REGTAB_IMMED, PRES_REGTAB_CONST, PRES_REGTAB_COUNT, + PRES_REGTAB_COUNT, PRES_REGTAB_IMMED, PRES_REGTAB_CONST, PRES_REGTAB_INPUT, PRES_REGTAB_OCONST, PRES_REGTAB_OBCONST, PRES_REGTAB_OICONST, PRES_REGTAB_TEMP };
@@ -1016,7 +1017,7 @@ static void update_table_sizes_consts(unsigned int *table_sizes, struct d3dx_con static void dump_arg(struct d3dx_regstore *rs, const struct d3dx_pres_operand *arg, int component_count) { static const char *xyzw_str = "xyzw"; - unsigned int i, table; + unsigned int i, table, reg_offset;
table = arg->reg.table; if (table == PRES_REGTAB_IMMED && arg->index_reg.table == PRES_REGTAB_COUNT) @@ -1029,16 +1030,22 @@ static void dump_arg(struct d3dx_regstore *rs, const struct d3dx_pres_operand *a } else { + reg_offset = get_reg_offset(table, arg->reg.offset); + if (arg->index_reg.table == PRES_REGTAB_COUNT) { - TRACE("%s%u.", table_info[table].symbol, get_reg_offset(table, arg->reg.offset)); + TRACE("%s", table_info[table].symbol); + if (table == PRES_REGTAB_INPUT && reg_offset < 2) + TRACE("%s.", reg_offset ? "PSize" : "Pos"); + else + TRACE("%u.", reg_offset); } else { unsigned int index_reg;
index_reg = get_reg_offset(arg->index_reg.table, arg->index_reg.offset); - TRACE("%s[%u + %s%u.%c].", table_info[table].symbol, get_reg_offset(table, arg->reg.offset), + TRACE("%s[%u + %s%u.%c].", table_info[table].symbol, reg_offset, table_info[arg->index_reg.table].symbol, index_reg, xyzw_str[arg->index_reg.offset - get_offset_reg(arg->index_reg.table, index_reg)]); }