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_exec.c
diff --git
a/src/gallium/drivers/softpipe/sp_fs_exec.c
b/src/gallium/drivers/softpipe/sp_fs_exec.c
index 27fa126b7c391e5e8e77e34b74af414b804c9206..346e1b402baba023916102fdc59789429216e3ab 100644
(file)
--- a/
src/gallium/drivers/softpipe/sp_fs_exec.c
+++ b/
src/gallium/drivers/softpipe/sp_fs_exec.c
@@
-145,17
+145,30
@@
exec_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++) {
+
+ for (j = 0; j < 4; j++)
quad->output.depth[j] = machine->Outputs[i].xyzw[2].f[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] = (unsigned)machine->Outputs[i].xyzw[1].f[j];
}
break;
}
}
break;
}