summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Bumiller <[email protected]>2010-07-31 21:30:35 +0200
committerChristoph Bumiller <[email protected]>2010-08-05 00:50:00 +0200
commit720e0c430d0a66cbf5adfcf40030f27e55ad6c6a (patch)
treefbcfa439334e7b403548162270b5893ad7661214
parent2c695d38e6b194572becf82300fba5e34b1fd7d7 (diff)
nv50: fix constbuf validation
We only uploaded up to the highest offset a program would use, and if the constant buffer isn't changed when a new program is used, the new program is missing the rest of them. Might want to introduce a "fill state" for user mem constbufs.
-rw-r--r--src/gallium/drivers/nv50/nv50_shader_state.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/gallium/drivers/nv50/nv50_shader_state.c b/src/gallium/drivers/nv50/nv50_shader_state.c
index f7e63552867..3d5df596ef7 100644
--- a/src/gallium/drivers/nv50/nv50_shader_state.c
+++ b/src/gallium/drivers/nv50/nv50_shader_state.c
@@ -44,7 +44,7 @@ nv50_transfer_constbuf(struct nv50_context *nv50,
if (!map)
return;
- count = MIN2(buf->width0, size);
+ count = buf->width0; /* MIN2(buf->width0, size); */
start = 0;
while (count) {
@@ -92,8 +92,13 @@ nv50_program_validate_data(struct nv50_context *nv50, struct nv50_program *p)
}
}
+ /* If the state tracker doesn't change the constbuf, and it is first
+ * validated with a program that doesn't use it, this check prevents
+ * it from even being uploaded. */
+ /*
if (p->parm_size == 0)
return;
+ */
switch (p->type) {
case PIPE_SHADER_VERTEX: