diff options
author | Dave Airlie <airlied@redhat.com> | 2014-01-29 23:11:12 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2014-02-05 21:13:52 -0500 |
commit | 7c4c62a04a2a80e3feb5d6c97aca1e413b11c790 (patch) | |
tree | 39f6647a4a002f71960fd4fac08c654ccd177c03 /drivers/gpu/drm/radeon/r600_cs.c | |
parent | 9ca5d4b4e1d4416b6d01804be843f8e39845c73d (diff) |
drm/radeon: allow geom rings to be setup on r600/r700 (v2)
the evergreen CS parser has allowed this for a while, just port
the code to the r600 one.
This is required before geom shaders can be made work.
v2: agd5f: minor cleanup and add additional 7xx reg.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/r600_cs.c')
-rw-r--r-- | drivers/gpu/drm/radeon/r600_cs.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/r600_cs.c b/drivers/gpu/drm/radeon/r600_cs.c index 7b399dc5fd54..2812c7d1ae6f 100644 --- a/drivers/gpu/drm/radeon/r600_cs.c +++ b/drivers/gpu/drm/radeon/r600_cs.c | |||
@@ -1007,8 +1007,22 @@ static int r600_cs_check_reg(struct radeon_cs_parser *p, u32 reg, u32 idx) | |||
1007 | case R_008C64_SQ_VSTMP_RING_SIZE: | 1007 | case R_008C64_SQ_VSTMP_RING_SIZE: |
1008 | case R_0288C8_SQ_GS_VERT_ITEMSIZE: | 1008 | case R_0288C8_SQ_GS_VERT_ITEMSIZE: |
1009 | /* get value to populate the IB don't remove */ | 1009 | /* get value to populate the IB don't remove */ |
1010 | tmp =radeon_get_ib_value(p, idx); | 1010 | /*tmp =radeon_get_ib_value(p, idx); |
1011 | ib[idx] = 0; | 1011 | ib[idx] = 0;*/ |
1012 | break; | ||
1013 | case SQ_ESGS_RING_BASE: | ||
1014 | case SQ_GSVS_RING_BASE: | ||
1015 | case SQ_ESTMP_RING_BASE: | ||
1016 | case SQ_GSTMP_RING_BASE: | ||
1017 | case SQ_PSTMP_RING_BASE: | ||
1018 | case SQ_VSTMP_RING_BASE: | ||
1019 | r = radeon_cs_packet_next_reloc(p, &reloc, 0); | ||
1020 | if (r) { | ||
1021 | dev_warn(p->dev, "bad SET_CONTEXT_REG " | ||
1022 | "0x%04X\n", reg); | ||
1023 | return -EINVAL; | ||
1024 | } | ||
1025 | ib[idx] += (u32)((reloc->lobj.gpu_offset >> 8) & 0xffffffff); | ||
1012 | break; | 1026 | break; |
1013 | case SQ_CONFIG: | 1027 | case SQ_CONFIG: |
1014 | track->sq_config = radeon_get_ib_value(p, idx); | 1028 | track->sq_config = radeon_get_ib_value(p, idx); |