diff options
| author | Christoph Bumiller <e0425955@student.tuwien.ac.at> | 2010-07-31 21:30:35 +0200 | 
|---|---|---|
| committer | Christoph Bumiller <e0425955@student.tuwien.ac.at> | 2010-08-05 00:50:00 +0200 | 
| commit | 720e0c430d0a66cbf5adfcf40030f27e55ad6c6a (patch) | |
| tree | fbcfa439334e7b403548162270b5893ad7661214 | |
| parent | 2c695d38e6b194572becf82300fba5e34b1fd7d7 (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.c | 7 | 
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 f7e6355286..3d5df596ef 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:  | 
