etnaviv: Implement ICACHE
authorWladimir J. van der Laan <laanwj@gmail.com>
Mon, 24 Jul 2017 08:28:17 +0000 (10:28 +0200)
committerChristian Gmeiner <christian.gmeiner@gmail.com>
Sun, 6 Aug 2017 18:44:02 +0000 (20:44 +0200)
commit39056b0e2ac10342d8a3a6000f12a510f5dbd773
tree2af42477d466d63ab23518123737f70b0e52e760
parent6c321c8b0b3547b0af0b0939391eef4dc8d2f873
etnaviv: Implement ICACHE

This patch adds support for large shaders on GC3000. For example the "terrain"
glmark benchmark with a large fragment shader will work after this.

If the GPU supports ICACHE, shaders larger than the available state area will
be uploaded to a bo of their own and instructed to be loaded from memory on
demand. Small shaders will be uploaded in the usual way. This mimics the
behavior of the blob.

On GPUs that don't support ICACHE, this patch should make no difference.

Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
src/gallium/drivers/etnaviv/etnaviv_compiler.c
src/gallium/drivers/etnaviv/etnaviv_compiler.h
src/gallium/drivers/etnaviv/etnaviv_emit.c
src/gallium/drivers/etnaviv/etnaviv_internal.h
src/gallium/drivers/etnaviv/etnaviv_screen.c
src/gallium/drivers/etnaviv/etnaviv_shader.c