From 8a9ab86ca6d510763bfe8532071c5fcfd977e3c4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sun, 30 Aug 2015 17:41:23 +0200 Subject: [PATCH] winsys/radeon: add a flag telling how gfx IBs should be padded MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This is always false on amdgpu (set by calloc). Reviewed-by: Alex Deucher Acked-by: Christian König --- src/gallium/drivers/radeon/radeon_winsys.h | 1 + src/gallium/winsys/radeon/drm/radeon_drm_cs.c | 8 ++------ src/gallium/winsys/radeon/drm/radeon_drm_winsys.c | 7 +++++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/radeon/radeon_winsys.h b/src/gallium/drivers/radeon/radeon_winsys.h index a4a2ae15acd..00accd5b3e6 100644 --- a/src/gallium/drivers/radeon/radeon_winsys.h +++ b/src/gallium/drivers/radeon/radeon_winsys.h @@ -223,6 +223,7 @@ struct radeon_info { boolean has_uvd; uint32_t vce_fw_version; boolean has_userptr; + bool gfx_ib_pad_with_type2; uint32_t r300_num_gb_pipes; uint32_t r300_num_z_pipes; diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c index 341af55df8b..2c4f990944c 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c +++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c @@ -466,14 +466,10 @@ static void radeon_drm_cs_flush(struct radeon_winsys_cs *rcs, } break; case RING_GFX: - /* pad DMA ring to 8 DWs to meet CP fetch alignment requirements + /* pad GFX ring to 8 DWs to meet CP fetch alignment requirements * r6xx, requires at least 4 dw alignment to avoid a hw bug. - * hawaii with old firmware needs type2 nop packet. - * accel_working2 with value 3 indicates the new firmware. */ - if (cs->ws->info.chip_class <= SI || - (cs->ws->info.family == CHIP_HAWAII && - cs->ws->accel_working2 < 3)) { + if (cs->ws->info.gfx_ib_pad_with_type2) { while (rcs->cdw & 7) OUT_CS(&cs->base, 0x80000000); /* type2 nop packet */ } else { diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c index 384d7280380..5d440eb7696 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c +++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c @@ -469,6 +469,13 @@ static boolean do_winsys_init(struct radeon_drm_winsys *ws) ws->info.cik_macrotile_mode_array_valid = TRUE; } + /* Hawaii with old firmware needs type2 nop packet. + * accel_working2 with value 3 indicates the new firmware. + */ + ws->info.gfx_ib_pad_with_type2 = ws->info.chip_class <= SI || + (ws->info.family == CHIP_HAWAII && + ws->accel_working2 < 3); + return TRUE; } -- 2.30.2