summaryrefslogtreecommitdiff
path: root/src/mesa/state_tracker/st_mesa_to_tgsi.c
diff options
context:
space:
mode:
authorZack Rusin <zackr@vmware.com>2010-07-10 02:02:35 -0400
committerZack Rusin <zackr@vmware.com>2010-07-10 02:02:35 -0400
commit425870c5fdb40f7daf2e25323fa28c90c4367bae (patch)
tree00c1aed27016d3404c7c1d5a794a5ae5192b8879 /src/mesa/state_tracker/st_mesa_to_tgsi.c
parent9808308f9ad05c5fd6916cb808c66be23f21db60 (diff)
mesa: get the translation from mesa 2d regs to tgsi working
first working version of arb_geometry_shader4
Diffstat (limited to 'src/mesa/state_tracker/st_mesa_to_tgsi.c')
-rw-r--r--src/mesa/state_tracker/st_mesa_to_tgsi.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/mesa/state_tracker/st_mesa_to_tgsi.c b/src/mesa/state_tracker/st_mesa_to_tgsi.c
index 050b5d164d..c870db2d69 100644
--- a/src/mesa/state_tracker/st_mesa_to_tgsi.c
+++ b/src/mesa/state_tracker/st_mesa_to_tgsi.c
@@ -176,7 +176,7 @@ dst_register( struct st_translate *t,
else if (t->procType == TGSI_PROCESSOR_FRAGMENT)
assert(index < FRAG_RESULT_MAX);
else
- assert(0 && "geom shaders not handled in dst_register() yet");
+ assert(index < GEOM_RESULT_MAX);
assert(t->outputMapping[index] < Elements(t->outputs));
@@ -305,6 +305,15 @@ translate_src( struct st_translate *t,
{
struct ureg_src src = src_register( t, SrcReg->File, SrcReg->Index );
+ if (t->procType == TGSI_PROCESSOR_GEOMETRY && SrcReg->HasIndex2D) {
+ src = src_register( t, SrcReg->File, SrcReg->Index2D );
+ if (SrcReg->RelAddr2D)
+ src = ureg_src_dimension_indirect( src, ureg_src(t->address[0]),
+ SrcReg->Index);
+ else
+ src = ureg_src_dimension( src, SrcReg->Index);
+ }
+
src = ureg_swizzle( src,
GET_SWZ( SrcReg->Swizzle, 0 ) & 0x3,
GET_SWZ( SrcReg->Swizzle, 1 ) & 0x3,
@@ -330,14 +339,6 @@ translate_src( struct st_translate *t,
}
}
- if (SrcReg->HasIndex2D) {
- if (SrcReg->RelAddr2D)
- src = ureg_src_dimension_indirect( src, ureg_src(t->address[0]),
- SrcReg->Index2D);
- else
- src = ureg_src_dimension( src, SrcReg->Index2D);
- }
-
return src;
}