diff options
author | Dave Airlie <[email protected]> | 2010-10-14 14:40:51 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2010-10-15 14:59:17 +1000 |
commit | fc6caef4cb67fb13642c5ebccee53019d1764df6 (patch) | |
tree | 76657ab68c4d297eb619285f64beb5a6d57d1324 /src/gallium/drivers/r600/r600_shader.h | |
parent | 07a30e3d18a528a2dc8a247af5c43e7428be1743 (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.h | 2 |
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; |