diff options
author | Marcin Slusarz <[email protected]> | 2012-06-27 14:45:17 +0200 |
---|---|---|
committer | Marcin Slusarz <[email protected]> | 2012-06-28 00:01:02 +0200 |
commit | 1906d2b46b21a8e7496409e0639d8463ad86dcfe (patch) | |
tree | 24800adb306c232fe2253c536b6071292a04b293 /src/gallium/drivers/nv50/nv50_screen.h | |
parent | 0fceaee4fd8f745e71cbc4e1d24520ac7e11c2cd (diff) |
nv50: dynamically allocate space for shader local storage
Fixes 21 piglit tests:
spec/glsl-1.10/execution/variable-indexing/
fs-temp-array-mat4-index-col-row-wr
vs-temp-array-mat4-index-col-row-wr
vs-temp-array-mat4-index-row-wr
spec/glsl-1.20/execution/variable-indexing/
fs-temp-array-mat3-index-col-row-rd
fs-temp-array-mat3-index-row-rd
fs-temp-array-mat4-col-row-wr
fs-temp-array-mat4-index-col-row-rd
fs-temp-array-mat4-index-col-row-wr
fs-temp-array-mat4-index-row-rd
fs-temp-array-mat4-index-row-wr
vs-temp-array-mat3-index-col-row-rd
vs-temp-array-mat3-index-col-row-wr
vs-temp-array-mat3-index-row-rd
vs-temp-array-mat3-index-row-wr
vs-temp-array-mat4-col-row-wr
vs-temp-array-mat4-index-col-row-rd
vs-temp-array-mat4-index-col-row-wr
vs-temp-array-mat4-index-col-wr
vs-temp-array-mat4-index-row-rd
vs-temp-array-mat4-index-row-wr
vs-temp-array-mat4-index-wr
... and prevents a lot of GPU lockups
Diffstat (limited to 'src/gallium/drivers/nv50/nv50_screen.h')
-rw-r--r-- | src/gallium/drivers/nv50/nv50_screen.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/gallium/drivers/nv50/nv50_screen.h b/src/gallium/drivers/nv50/nv50_screen.h index 4292f7fc9a6..3ecf20c1e03 100644 --- a/src/gallium/drivers/nv50/nv50_screen.h +++ b/src/gallium/drivers/nv50/nv50_screen.h @@ -34,7 +34,10 @@ struct nv50_screen { struct nouveau_bo *stack_bo; struct nouveau_bo *tls_bo; - uint64_t tls_size; + unsigned TPs; + unsigned MPsInTP; + unsigned max_tls_space; + unsigned cur_tls_space; struct nouveau_heap *vp_code_heap; struct nouveau_heap *gp_code_heap; @@ -143,4 +146,6 @@ nv50_screen_tsc_free(struct nv50_screen *screen, struct nv50_tsc_entry *tsc) } } +extern int nv50_tls_realloc(struct nv50_screen *screen, unsigned tls_space); + #endif |