summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2015-11-30 16:01:31 +1000
committerDave Airlie <airlied@redhat.com>2015-12-04 04:10:51 +0000
commit8fda7a8326f035fe604702f4ec4ae0007de16cb9 (patch)
treebed24597ceff80ce4d54b0d6dad7fb858027799f
parent5641bf893d697d2265fff1cc141c3e07ba3696de (diff)
r600: enable tessellation for evergreen/cayman (v2)
This enables tessellation for evergreen/cayman, This will need changes before committing depending on what hw works etc. working are CAYMAN/REDWOOD/BARTS/TURKS/SUMO/CAICOS v2: only enable on evergreen and above.
-rw-r--r--src/gallium/drivers/r600/r600_pipe.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c
index 78af44ddda5..822dfe7cc21 100644
--- a/src/gallium/drivers/r600/r600_pipe.c
+++ b/src/gallium/drivers/r600/r600_pipe.c
@@ -343,7 +343,6 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
case PIPE_CAP_USER_VERTEX_BUFFERS:
case PIPE_CAP_TEXTURE_GATHER_OFFSETS:
case PIPE_CAP_VERTEXID_NOBASE:
- case PIPE_CAP_MAX_SHADER_PATCH_VARYINGS:
case PIPE_CAP_DEPTH_BOUNDS_TEST:
case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
case PIPE_CAP_SHAREABLE_SHADERS:
@@ -351,6 +350,11 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
case PIPE_CAP_CLEAR_TEXTURE:
return 0;
+ case PIPE_CAP_MAX_SHADER_PATCH_VARYINGS:
+ if (family >= CHIP_CEDAR)
+ return 30;
+ else
+ return 0;
/* Stream output. */
case PIPE_CAP_MAX_STREAM_OUTPUT_BUFFERS:
return rscreen->b.has_streamout ? 4 : 0;
@@ -446,6 +450,10 @@ static int r600_get_shader_param(struct pipe_screen* pscreen, unsigned shader, e
if (rscreen->b.info.drm_minor >= 37)
break;
return 0;
+ case PIPE_SHADER_TESS_CTRL:
+ case PIPE_SHADER_TESS_EVAL:
+ if (rscreen->b.family >= CHIP_CEDAR)
+ break;
default:
/* XXX: support tessellation on Evergreen */
return 0;