From ab7adaf47f2606e6b85a46470a586718cd409517 Mon Sep 17 00:00:00 2001 From: Jocelyn Falempe Date: Fri, 26 Jun 2026 11:01:57 +0200 Subject: [PATCH 12/19] Revert "tu: Disable features using performance counter for KGSL" This reverts commit 18437c7a65a909044add3cb78c1e291bbf871743. --- src/freedreno/vulkan/tu_autotune.cc | 3 +-- src/freedreno/vulkan/tu_device.cc | 2 +- src/freedreno/vulkan/tu_device.h | 3 --- src/freedreno/vulkan/tu_knl_drm_msm.cc | 2 -- src/freedreno/vulkan/tu_knl_drm_virtio.cc | 1 - src/freedreno/vulkan/tu_knl_kgsl.cc | 3 --- 6 files changed, 2 insertions(+), 12 deletions(-) diff --git a/src/freedreno/vulkan/tu_autotune.cc b/src/freedreno/vulkan/tu_autotune.cc index c456c248cdb..439ac05a845 100644 --- a/src/freedreno/vulkan/tu_autotune.cc +++ b/src/freedreno/vulkan/tu_autotune.cc @@ -323,8 +323,7 @@ uint32_t tu_autotune::get_supported_mod_flags(tu_device *device) const { uint32_t supported_mod_flags = (uint32_t) mod_flag::BIG_GMEM | (uint32_t) mod_flag::TUNE_SMALL; - if (device->physical_device->info->props.max_draw_states > TU_DRAW_STATE_AT_WRITE_RP_HASH && - device->physical_device->is_perf_cntr_selectable) { + if (device->physical_device->info->props.max_draw_states > TU_DRAW_STATE_AT_WRITE_RP_HASH) { supported_mod_flags |= (uint32_t) mod_flag::PREEMPT_OPTIMIZE; } return supported_mod_flags; diff --git a/src/freedreno/vulkan/tu_device.cc b/src/freedreno/vulkan/tu_device.cc index 25e11d45f8f..24ca3d2391c 100644 --- a/src/freedreno/vulkan/tu_device.cc +++ b/src/freedreno/vulkan/tu_device.cc @@ -212,7 +212,7 @@ get_device_extensions(const struct tu_physical_device *device, .KHR_maintenance8 = tu_is_vk_1_1(device), .KHR_map_memory2 = true, .KHR_multiview = tu_has_multiview(device), - .KHR_performance_query = (TU_DEBUG(PERFC) || TU_DEBUG(PERFCRAW)) && device->is_perf_cntr_selectable, + .KHR_performance_query = TU_DEBUG(PERFC) || TU_DEBUG(PERFCRAW), .KHR_pipeline_executable_properties = true, .KHR_pipeline_library = true, #ifdef TU_USE_WSI_PLATFORM diff --git a/src/freedreno/vulkan/tu_device.h b/src/freedreno/vulkan/tu_device.h index b0ecf2f62ba..638ea404fa7 100644 --- a/src/freedreno/vulkan/tu_device.h +++ b/src/freedreno/vulkan/tu_device.h @@ -140,9 +140,6 @@ struct tu_physical_device bool has_preemption; - /* Whether performance counter selector registers can be written by userspace CSes. */ - bool is_perf_cntr_selectable; - struct { uint32_t non_lazy_type_count; uint32_t type_count; diff --git a/src/freedreno/vulkan/tu_knl_drm_msm.cc b/src/freedreno/vulkan/tu_knl_drm_msm.cc index 16e1cb40337..75a6e1a0250 100644 --- a/src/freedreno/vulkan/tu_knl_drm_msm.cc +++ b/src/freedreno/vulkan/tu_knl_drm_msm.cc @@ -1667,8 +1667,6 @@ tu_knl_drm_msm_load(struct tu_instance *instance, device->has_preemption = tu_drm_has_preemption(device); - device->is_perf_cntr_selectable = true; - /* Even if kernel is new enough, the GPU itself may not support it. */ device->has_cached_coherent_memory = (device->msm_minor_version >= 8) && diff --git a/src/freedreno/vulkan/tu_knl_drm_virtio.cc b/src/freedreno/vulkan/tu_knl_drm_virtio.cc index ea4d31ab665..9dbf9ee166d 100644 --- a/src/freedreno/vulkan/tu_knl_drm_virtio.cc +++ b/src/freedreno/vulkan/tu_knl_drm_virtio.cc @@ -1343,7 +1343,6 @@ tu_knl_drm_virtio_load(struct tu_instance *instance, device->has_set_iova = true; device->has_lazy_bos = true; device->has_preemption = has_preemption; - device->is_perf_cntr_selectable = true; device->uche_trap_base = uche_trap_base; device->ubwc_config.bank_swizzle_levels = bank_swizzle_levels; diff --git a/src/freedreno/vulkan/tu_knl_kgsl.cc b/src/freedreno/vulkan/tu_knl_kgsl.cc index c01160ea1f3..b960ef16673 100644 --- a/src/freedreno/vulkan/tu_knl_kgsl.cc +++ b/src/freedreno/vulkan/tu_knl_kgsl.cc @@ -1868,9 +1868,6 @@ tu_knl_kgsl_load(struct tu_instance *instance, int fd) /* preemption is always supported on kgsl */ device->has_preemption = true; - /* KGSL doesn't allow writing the perf counter selector as the expectation is to use the uAPI provided for this. */ - device->is_perf_cntr_selectable = false; - device->ubwc_config.highest_bank_bit = highest_bank_bit; /* The other config values can be partially inferred from the UBWC version, -- 2.54.0