diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_dispatch.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_dispatch.c index 2387edc6a42..45fc5d252b1 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_cmd_dispatch.c +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_dispatch.c @@ -51,7 +51,8 @@ prepare_driver_set(struct panvk_cmd_buffer *cmdbuf) return VK_ERROR_OUT_OF_DEVICE_MEMORY; /* Dummy sampler always comes first. */ - pan_pack(&descs[0], SAMPLER, _) { + pan_pack(&descs[0], SAMPLER, cfg) { + cfg.clamp_integer_array_indices = false; } panvk_per_arch(cmd_fill_dyn_bufs)(desc_state, cs, diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c index e9ef2e9c326..5dd45dde260 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c @@ -160,7 +160,8 @@ prepare_vs_driver_set(struct panvk_cmd_buffer *cmdbuf) } /* Dummy sampler always comes right after the vertex attribs. */ - pan_pack(&descs[MAX_VS_ATTRIBS], SAMPLER, _) { + pan_pack(&descs[MAX_VS_ATTRIBS], SAMPLER, cfg) { + cfg.clamp_integer_array_indices = false; } panvk_per_arch(cmd_fill_dyn_bufs)( @@ -203,7 +204,8 @@ prepare_fs_driver_set(struct panvk_cmd_buffer *cmdbuf) return VK_ERROR_OUT_OF_DEVICE_MEMORY; /* Dummy sampler always comes first. */ - pan_pack(&descs[0], SAMPLER, _) { + pan_pack(&descs[0], SAMPLER, cfg) { + cfg.clamp_integer_array_indices = false; } panvk_per_arch(cmd_fill_dyn_bufs)(desc_state, fs, diff --git a/src/panfrost/vulkan/panvk_vX_cmd_desc_state.c b/src/panfrost/vulkan/panvk_vX_cmd_desc_state.c index cfaa19833f0..0b267394f39 100644 --- a/src/panfrost/vulkan/panvk_vX_cmd_desc_state.c +++ b/src/panfrost/vulkan/panvk_vX_cmd_desc_state.c @@ -234,7 +234,8 @@ panvk_per_arch(cmd_prepare_shader_desc_tables)( return VK_ERROR_OUT_OF_DEVICE_MEMORY; /* Emit a dummy sampler if we have to. */ - pan_pack(sampler.cpu, SAMPLER, _) { + pan_pack(sampler.cpu, SAMPLER, cfg) { + cfg.clamp_integer_array_indices = false; } shader_desc_state->tables[PANVK_BIFROST_DESC_TABLE_SAMPLER] = sampler.gpu; diff --git a/src/panfrost/vulkan/panvk_vX_cmd_fb_preload.c b/src/panfrost/vulkan/panvk_vX_cmd_fb_preload.c index c0fd55880f7..b3e0faf8c2e 100644 --- a/src/panfrost/vulkan/panvk_vX_cmd_fb_preload.c +++ b/src/panfrost/vulkan/panvk_vX_cmd_fb_preload.c @@ -428,6 +428,7 @@ cmd_emit_dcd(struct panvk_cmd_buffer *cmdbuf, pan_pack(sampler.cpu, SAMPLER, cfg) { cfg.seamless_cube_map = false; cfg.normalized_coordinates = false; + cfg.clamp_integer_array_indices = false; cfg.minify_nearest = true; cfg.magnify_nearest = true; } @@ -558,6 +559,7 @@ cmd_emit_dcd(struct panvk_cmd_buffer *cmdbuf, pan_pack(sampler, SAMPLER, cfg) { cfg.seamless_cube_map = false; cfg.normalized_coordinates = false; + cfg.clamp_integer_array_indices = false; cfg.minify_nearest = true; cfg.magnify_nearest = true; } diff --git a/src/panfrost/vulkan/panvk_vX_sampler.c b/src/panfrost/vulkan/panvk_vX_sampler.c index bb3ec406a06..873ba41c229 100644 --- a/src/panfrost/vulkan/panvk_vX_sampler.c +++ b/src/panfrost/vulkan/panvk_vX_sampler.c @@ -106,6 +106,7 @@ panvk_per_arch(CreateSampler)(VkDevice _device, cfg.mipmap_mode = panvk_translate_sampler_mipmap_mode(pCreateInfo->mipmapMode); cfg.normalized_coordinates = !pCreateInfo->unnormalizedCoordinates; + cfg.clamp_integer_array_indices = false; cfg.lod_bias = pCreateInfo->mipLodBias; cfg.minimum_lod = pCreateInfo->minLod;