Mesa (master): amd: add proper definitions for NOP packets
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jun 26 07:16:56 UTC 2020
Module: Mesa
Branch: master
Commit: 556f4458fe90cea54caa63310dce9dded4034aea
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=556f4458fe90cea54caa63310dce9dded4034aea
Author: Marek Olšák <marek.olsak at amd.com>
Date: Thu Jun 18 01:04:51 2020 -0400
amd: add proper definitions for NOP packets
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5603>
---
src/amd/common/ac_debug.c | 2 +-
src/amd/common/sid.h | 3 +++
src/amd/vulkan/si_cmd_buffer.c | 4 ++--
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 6 +++---
src/gallium/winsys/amdgpu/drm/amdgpu_cs.c | 8 ++++----
5 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/src/amd/common/ac_debug.c b/src/amd/common/ac_debug.c
index 77c0e0aa790..b81897811a1 100644
--- a/src/amd/common/ac_debug.c
+++ b/src/amd/common/ac_debug.c
@@ -441,7 +441,7 @@ static void ac_parse_packet3(FILE *f, uint32_t header, struct ac_ib_parser *ib,
case PKT3_PFP_SYNC_ME:
break;
case PKT3_NOP:
- if (header == 0xffff1000) {
+ if (header == PKT3_NOP_PAD) {
count = -1; /* One dword NOP. */
} else if (count == 0 && ib->cur_dw < ib->num_dw &&
AC_IS_TRACE_POINT(ib->ib[ib->cur_dw])) {
diff --git a/src/amd/common/sid.h b/src/amd/common/sid.h
index d77d2ff5750..fef3e14d5e2 100644
--- a/src/amd/common/sid.h
+++ b/src/amd/common/sid.h
@@ -231,6 +231,9 @@
#define PKT0(index, count) (PKT_TYPE_S(0) | PKT0_BASE_INDEX_S(index) | PKT_COUNT_S(count))
#define PKT3(op, count, predicate) (PKT_TYPE_S(3) | PKT_COUNT_S(count) | PKT3_IT_OPCODE_S(op) | PKT3_PREDICATE(predicate))
+#define PKT2_NOP_PAD PKT_TYPE_S(2)
+#define PKT3_NOP_PAD PKT3(PKT3_NOP, 0x3fff, 0) /* header-only version */
+
#define PKT3_CP_DMA 0x41
/* 1. header
* 2. SRC_ADDR_LO [31:0] or DATA [31:0]
diff --git a/src/amd/vulkan/si_cmd_buffer.c b/src/amd/vulkan/si_cmd_buffer.c
index d53aaf33144..e6a3bcd45a2 100644
--- a/src/amd/vulkan/si_cmd_buffer.c
+++ b/src/amd/vulkan/si_cmd_buffer.c
@@ -520,9 +520,9 @@ cik_create_gfx_config(struct radv_device *device)
while (cs->cdw & 7) {
if (device->physical_device->rad_info.gfx_ib_pad_with_type2)
- radeon_emit(cs, 0x80000000);
+ radeon_emit(cs, PKT2_NOP_PAD);
else
- radeon_emit(cs, 0xffff1000);
+ radeon_emit(cs, PKT3_NOP_PAD);
}
device->gfx_init = device->ws->buffer_create(device->ws,
diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
index 65b6bb4187d..7f391a60a72 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
@@ -424,7 +424,7 @@ static void radv_amdgpu_cs_grow(struct radeon_cmdbuf *_cs, size_t min_size)
ib_size = MIN2(ib_size, 0xfffff);
while (!cs->base.cdw || (cs->base.cdw & 7) != 4)
- radeon_emit(&cs->base, 0xffff1000);
+ radeon_emit(&cs->base, PKT3_NOP_PAD);
*cs->ib_size_ptr |= cs->base.cdw + 4;
@@ -480,7 +480,7 @@ static VkResult radv_amdgpu_cs_finalize(struct radeon_cmdbuf *_cs)
if (cs->ws->use_ib_bos) {
while (!cs->base.cdw || (cs->base.cdw & 7) != 0)
- radeon_emit(&cs->base, 0xffff1000);
+ radeon_emit(&cs->base, PKT3_NOP_PAD);
*cs->ib_size_ptr |= cs->base.cdw;
@@ -1042,7 +1042,7 @@ static int radv_amdgpu_winsys_cs_submit_sysmem(struct radeon_winsys_ctx *_ctx,
struct radeon_winsys *ws = (struct radeon_winsys*)cs0->ws;
uint32_t bo_list;
struct radv_amdgpu_cs_request request;
- uint32_t pad_word = 0xffff1000U;
+ uint32_t pad_word = PKT3_NOP_PAD;
bool emit_signal_sem = sem_info->cs_emit_signal;
if (radv_amdgpu_winsys(ws)->info.chip_class == GFX6)
diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
index a8e7ed0f21b..80eb0f6b7f0 100644
--- a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
+++ b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
@@ -1099,7 +1099,7 @@ static bool amdgpu_cs_check_space(struct radeon_cmdbuf *rcs, unsigned dw,
/* Pad with NOPs and add INDIRECT_BUFFER packet */
while ((rcs->current.cdw & 7) != 4)
- radeon_emit(rcs, 0xffff1000); /* type3 nop packet */
+ radeon_emit(rcs, PKT3_NOP_PAD);
radeon_emit(rcs, PKT3(PKT3_INDIRECT_BUFFER_CIK, 2, 0));
radeon_emit(rcs, va);
@@ -1680,10 +1680,10 @@ static int amdgpu_cs_flush(struct radeon_cmdbuf *rcs,
/* pad GFX ring to 8 DWs to meet CP fetch alignment requirements */
if (ws->info.gfx_ib_pad_with_type2) {
while (rcs->current.cdw & 7)
- radeon_emit(rcs, 0x80000000); /* type2 nop packet */
+ radeon_emit(rcs, PKT2_NOP_PAD);
} else {
while (rcs->current.cdw & 7)
- radeon_emit(rcs, 0xffff1000); /* type3 nop packet */
+ radeon_emit(rcs, PKT3_NOP_PAD);
}
if (cs->ring_type == RING_GFX)
ws->gfx_ib_size_counter += (rcs->prev_dw + rcs->current.cdw) * 4;
@@ -1691,7 +1691,7 @@ static int amdgpu_cs_flush(struct radeon_cmdbuf *rcs,
/* Also pad secondary IBs. */
if (cs->compute_ib.ib_mapped) {
while (cs->compute_ib.base.current.cdw & 7)
- radeon_emit(&cs->compute_ib.base, 0xffff1000); /* type3 nop packet */
+ radeon_emit(&cs->compute_ib.base, PKT3_NOP_PAD);
}
break;
case RING_UVD:
More information about the mesa-commit
mailing list