projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
glsl: fix crash in loop analysis when some controls can't be determined
[mesa.git]
/
src
/
gallium
/
drivers
/
softpipe
/
sp_fs_sse.c
diff --git
a/src/gallium/drivers/softpipe/sp_fs_sse.c
b/src/gallium/drivers/softpipe/sp_fs_sse.c
index 9d3e4670eef9b43a032907c7f0ba09830804c93e..5b18cd035e36f35211b8af04cf6bcf82bd5f71af 100644
(file)
--- a/
src/gallium/drivers/softpipe/sp_fs_sse.c
+++ b/
src/gallium/drivers/softpipe/sp_fs_sse.c
@@
-135,10
+135,10
@@
fs_sse_run( const struct sp_fragment_shader *base,
tgsi_set_exec_mask(machine, 1, 1, 1, 1);
shader->func( machine,
tgsi_set_exec_mask(machine, 1, 1, 1, 1);
shader->func( machine,
-
machine->Consts
,
+
(const float (*)[4])machine->Consts[0]
,
(const float (*)[4])shader->immediates,
machine->InterpCoefs
(const float (*)[4])shader->immediates,
machine->InterpCoefs
- /
/ , &machine->QuadPos
+ /
*, &machine->QuadPos*/
);
quad->inout.mask &= ~(machine->Temps[TGSI_EXEC_TEMP_KILMASK_I].xyzw[TGSI_EXEC_TEMP_KILMASK_C].u[0]);
);
quad->inout.mask &= ~(machine->Temps[TGSI_EXEC_TEMP_KILMASK_I].xyzw[TGSI_EXEC_TEMP_KILMASK_C].u[0]);
@@
-156,17
+156,28
@@
fs_sse_run( const struct sp_fragment_shader *base,
case TGSI_SEMANTIC_COLOR:
{
uint cbuf = sem_index[i];
case TGSI_SEMANTIC_COLOR:
{
uint cbuf = sem_index[i];
+
+ assert(sizeof(quad->output.color[cbuf]) ==
+ sizeof(machine->Outputs[i]));
+
+ /* copy float[4][4] result */
memcpy(quad->output.color[cbuf],
memcpy(quad->output.color[cbuf],
- &machine->Outputs[i]
.xyzw[0].f[0]
,
+ &machine->Outputs[i],
sizeof(quad->output.color[0]) );
}
break;
case TGSI_SEMANTIC_POSITION:
{
uint j;
sizeof(quad->output.color[0]) );
}
break;
case TGSI_SEMANTIC_POSITION:
{
uint j;
- for (j = 0; j < 4; j++) {
- quad->output.depth[j] = machine->Outputs[0].xyzw[2].f[j];
- }
+ for (j = 0; j < 4; j++)
+ quad->output.depth[j] = machine->Outputs[i].xyzw[2].f[j];
+ }
+ break;
+ case TGSI_SEMANTIC_STENCIL:
+ {
+ uint j;
+ for (j = 0; j < 4; j++)
+ quad->output.stencil[j] = machine->Outputs[i].xyzw[1].f[j];
}
break;
}
}
break;
}