From 49f042c5e85a2a8fabcfa84ab3ea896e5d6e606e Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 14 Jul 2025 19:12:46 -0400 Subject: [PATCH] hk: plumb sampler state counts Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/vulkan/hk_cmd_dispatch.c | 3 ++- src/asahi/vulkan/hk_shader.c | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/asahi/vulkan/hk_cmd_dispatch.c b/src/asahi/vulkan/hk_cmd_dispatch.c index ee8d4ee2124..9ff1006134e 100644 --- a/src/asahi/vulkan/hk_cmd_dispatch.c +++ b/src/asahi/vulkan/hk_cmd_dispatch.c @@ -76,7 +76,8 @@ hk_dispatch_with_usc(struct hk_device *dev, struct hk_cs *cs, struct agx_cdm_launch_word_0_packed launch; agx_pack(&launch, CDM_LAUNCH_WORD_0, cfg) { cfg.texture_state_register_count = info->texture_state_count; - cfg.sampler_state_register_count = 1; + cfg.sampler_state_register_count = + agx_translate_sampler_state_count(info->sampler_state_count, false); cfg.uniform_register_count = info->push_count; cfg.preshader_register_count = info->nr_preamble_gprs; } diff --git a/src/asahi/vulkan/hk_shader.c b/src/asahi/vulkan/hk_shader.c index 0ec80cb67e5..f981c36a348 100644 --- a/src/asahi/vulkan/hk_shader.c +++ b/src/asahi/vulkan/hk_shader.c @@ -915,7 +915,7 @@ hk_upload_shader(struct hk_device *dev, struct hk_shader *shader) cfg.uniform_register_count = shader->b.info.push_count; cfg.preshader_register_count = shader->b.info.nr_preamble_gprs; cfg.sampler_state_register_count = agx_translate_sampler_state_count( - shader->b.info.uses_txf ? 1 : 0, false); + shader->b.info.sampler_state_count, false); cfg.texture_state_register_count = shader->b.info.texture_state_count; } } @@ -1676,13 +1676,17 @@ hk_fast_link(struct hk_device *dev, bool fragment, struct hk_shader *main, nr_samples_shaded); if (fragment) { + unsigned samplers = main->b.info.sampler_state_count; + if (s->b.uses_txf) + samplers = MAX2(samplers, 1); + agx_pack(&s->fs_counts, FRAGMENT_SHADER_WORD_0, cfg) { cfg.cf_binding_count = s->b.cf.nr_bindings; cfg.uniform_register_count = main->b.info.push_count; cfg.preshader_register_count = main->b.info.nr_preamble_gprs; cfg.texture_state_register_count = main->b.info.texture_state_count; cfg.sampler_state_register_count = - agx_translate_sampler_state_count(s->b.uses_txf ? 1 : 0, false); + agx_translate_sampler_state_count(samplers, false); } }