diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2010-09-04 05:04:34 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-10-05 21:38:08 -0400 |
commit | d0f8a854c340986359a3b0a97e380c71def7a440 (patch) | |
tree | 4f4065bb8c920badc92f56c25b5b105066ae6fc2 /drivers/gpu/drm/radeon/r600d.h | |
parent | 724c80e1d630296d1324859e964d80d35007d83c (diff) |
drm/radeon/kms/r6xx+: use new style fencing (v3)
On r6xx+ a newer fence mechanism was implemented to replace
the old wait_until plus scratch regs setup. A single EOP event
will flush the destination caches, write a fence value, and generate
an interrupt. This is the recommended fence mechanism on r6xx+ asics.
This requires my previous writeback patch.
v2: fix typo that enabled event fence checking on all asics
rather than just r6xx+.
v3: properly enable EOP interrupts
Should fix:
https://bugs.freedesktop.org/show_bug.cgi?id=29972
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/r600d.h')
-rw-r--r-- | drivers/gpu/drm/radeon/r600d.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/r600d.h b/drivers/gpu/drm/radeon/r600d.h index 858a1920c0d7..966a793e225b 100644 --- a/drivers/gpu/drm/radeon/r600d.h +++ b/drivers/gpu/drm/radeon/r600d.h | |||
@@ -474,6 +474,7 @@ | |||
474 | #define VGT_VERTEX_REUSE_BLOCK_CNTL 0x28C58 | 474 | #define VGT_VERTEX_REUSE_BLOCK_CNTL 0x28C58 |
475 | #define VTX_REUSE_DEPTH_MASK 0x000000FF | 475 | #define VTX_REUSE_DEPTH_MASK 0x000000FF |
476 | #define VGT_EVENT_INITIATOR 0x28a90 | 476 | #define VGT_EVENT_INITIATOR 0x28a90 |
477 | # define CACHE_FLUSH_AND_INV_EVENT_TS (0x14 << 0) | ||
477 | # define CACHE_FLUSH_AND_INV_EVENT (0x16 << 0) | 478 | # define CACHE_FLUSH_AND_INV_EVENT (0x16 << 0) |
478 | 479 | ||
479 | #define VM_CONTEXT0_CNTL 0x1410 | 480 | #define VM_CONTEXT0_CNTL 0x1410 |
@@ -775,7 +776,27 @@ | |||
775 | #define PACKET3_ME_INITIALIZE_DEVICE_ID(x) ((x) << 16) | 776 | #define PACKET3_ME_INITIALIZE_DEVICE_ID(x) ((x) << 16) |
776 | #define PACKET3_COND_WRITE 0x45 | 777 | #define PACKET3_COND_WRITE 0x45 |
777 | #define PACKET3_EVENT_WRITE 0x46 | 778 | #define PACKET3_EVENT_WRITE 0x46 |
779 | #define EVENT_TYPE(x) ((x) << 0) | ||
780 | #define EVENT_INDEX(x) ((x) << 8) | ||
781 | /* 0 - any non-TS event | ||
782 | * 1 - ZPASS_DONE | ||
783 | * 2 - SAMPLE_PIPELINESTAT | ||
784 | * 3 - SAMPLE_STREAMOUTSTAT* | ||
785 | * 4 - *S_PARTIAL_FLUSH | ||
786 | * 5 - TS events | ||
787 | */ | ||
778 | #define PACKET3_EVENT_WRITE_EOP 0x47 | 788 | #define PACKET3_EVENT_WRITE_EOP 0x47 |
789 | #define DATA_SEL(x) ((x) << 29) | ||
790 | /* 0 - discard | ||
791 | * 1 - send low 32bit data | ||
792 | * 2 - send 64bit data | ||
793 | * 3 - send 64bit counter value | ||
794 | */ | ||
795 | #define INT_SEL(x) ((x) << 24) | ||
796 | /* 0 - none | ||
797 | * 1 - interrupt only (DATA_SEL = 0) | ||
798 | * 2 - interrupt when data write is confirmed | ||
799 | */ | ||
779 | #define PACKET3_ONE_REG_WRITE 0x57 | 800 | #define PACKET3_ONE_REG_WRITE 0x57 |
780 | #define PACKET3_SET_CONFIG_REG 0x68 | 801 | #define PACKET3_SET_CONFIG_REG 0x68 |
781 | #define PACKET3_SET_CONFIG_REG_OFFSET 0x00008000 | 802 | #define PACKET3_SET_CONFIG_REG_OFFSET 0x00008000 |