From a1b8c6c404256bf9e76f2b84671a06da08dfbb8d Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Tue, 18 Feb 2025 16:45:18 +0100 Subject: [PATCH] radeosi: assert addresses are not NULL in a couple of places MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Marek Olšák Part-of: --- src/gallium/drivers/radeonsi/si_cp_dma.c | 1 + src/gallium/drivers/radeonsi/si_descriptors.c | 1 + src/gallium/drivers/radeonsi/si_state_draw.cpp | 1 + 3 files changed, 3 insertions(+) diff --git a/src/gallium/drivers/radeonsi/si_cp_dma.c b/src/gallium/drivers/radeonsi/si_cp_dma.c index 7063a950cb9..83332747e2a 100644 --- a/src/gallium/drivers/radeonsi/si_cp_dma.c +++ b/src/gallium/drivers/radeonsi/si_cp_dma.c @@ -46,6 +46,7 @@ static void si_emit_cp_dma(struct si_context *sctx, struct radeon_cmdbuf *cs, ui assert(sctx->screen->info.has_cp_dma); assert(size <= cp_dma_max_byte_count(sctx)); + assert(size == 0 || (src_va && dst_va)); if (sctx->gfx_level >= GFX9) command |= S_415_BYTE_COUNT_GFX9(size); diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c index c2b9d81f970..cacffadf8fe 100644 --- a/src/gallium/drivers/radeonsi/si_descriptors.c +++ b/src/gallium/drivers/radeonsi/si_descriptors.c @@ -1317,6 +1317,7 @@ static void si_set_shader_buffer(struct si_context *sctx, struct si_buffer_resou assert(sbuffer->buffer_offset + sbuffer->buffer_size <= align(buf->bo_size, 4)); uint64_t va = buf->gpu_address + sbuffer->buffer_offset; + assert(va); desc[0] = va; desc[1] = S_008F04_BASE_ADDRESS_HI(va >> 32) | S_008F04_STRIDE(0); desc[2] = sbuffer->buffer_size; diff --git a/src/gallium/drivers/radeonsi/si_state_draw.cpp b/src/gallium/drivers/radeonsi/si_state_draw.cpp index 2358baeb7ef..305cd22a11c 100644 --- a/src/gallium/drivers/radeonsi/si_state_draw.cpp +++ b/src/gallium/drivers/radeonsi/si_state_draw.cpp @@ -542,6 +542,7 @@ static void si_cp_dma_prefetch_inline(struct si_context *sctx, uint64_t address, assert(size % SI_CPDMA_ALIGNMENT == 0); assert(address % SI_CPDMA_ALIGNMENT == 0); assert(size < S_415_BYTE_COUNT_GFX6(~0u)); + assert(address || size == 0); uint32_t header = S_411_SRC_SEL(V_411_SRC_ADDR_TC_L2); uint32_t command = S_415_BYTE_COUNT_GFX6(size);