summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r600/r600_shader.h
diff options
context:
space:
mode:
authorDave Airlie <[email protected]>2010-10-14 14:40:51 +1000
committerDave Airlie <[email protected]>2010-10-15 14:59:17 +1000
commitfc6caef4cb67fb13642c5ebccee53019d1764df6 (patch)
tree76657ab68c4d297eb619285f64beb5a6d57d1324 /src/gallium/drivers/r600/r600_shader.h
parent07a30e3d18a528a2dc8a247af5c43e7428be1743 (diff)
r600g: evergreen interpolation support.
On evergreen, interpolation has moved into the fragment shader, with the interpolation parmaters being passed via GPRs and LDS entries. This works out the number of interps required and reserves GPR/LDS storage for them, it also correctly routes face/position values which aren't interpolated from the vertex shader. Also if we noticed nothing is to be interpolated we always setup perspective interpolation for one value otherwise the GPU appears to lockup. This fixes about 15 piglit tests on evergreen.
Diffstat (limited to 'src/gallium/drivers/r600/r600_shader.h')
-rw-r--r--src/gallium/drivers/r600/r600_shader.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_shader.h b/src/gallium/drivers/r600/r600_shader.h
index a341cca0836..f8bc5951395 100644
--- a/src/gallium/drivers/r600/r600_shader.h
+++ b/src/gallium/drivers/r600/r600_shader.h
@@ -32,6 +32,7 @@ struct r600_shader_io {
int sid;
unsigned interpolate;
boolean centroid;
+ unsigned lds_pos; /* for evergreen */
};
struct r600_shader {
@@ -40,6 +41,7 @@ struct r600_shader {
boolean flat_shade;
unsigned ninput;
unsigned noutput;
+ unsigned nlds;
struct r600_shader_io input[32];
struct r600_shader_io output[32];
enum radeon_family family;