aboutsummaryrefslogtreecommitdiffstats
path: root/src/amd/vulkan
diff options
context:
space:
mode:
authorRhys Perry <[email protected]>2020-04-14 20:15:46 +0100
committerMarge Bot <[email protected]>2020-04-24 18:52:54 +0000
commit03568249f92eb1def932696e6ddc83fa305a7083 (patch)
treed81ca3a5cf791491d71c4fa92e242b8254971f03 /src/amd/vulkan
parent51363bd4751c2f8e388c229fe91507a7a181517c (diff)
radv: allocate larger shader memory slabs if needed
Fixes dEQP-VK.ssbo.phys.layout.random.16bit.scalar.13 hang with ACO (features needed for the test are implemented in a later commit) Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4639>
Diffstat (limited to 'src/amd/vulkan')
-rw-r--r--src/amd/vulkan/radv_shader.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
index 7ed697057b4..42a664f7f36 100644
--- a/src/amd/vulkan/radv_shader.c
+++ b/src/amd/vulkan/radv_shader.c
@@ -641,7 +641,7 @@ radv_alloc_shader_memory(struct radv_device *device,
}
offset = align_u64(s->bo_offset + s->code_size, 256);
}
- if (slab->size - offset >= shader->code_size) {
+ if (offset <= slab->size && slab->size - offset >= shader->code_size) {
shader->bo = slab->bo;
shader->bo_offset = offset;
list_addtail(&shader->slab_list, &slab->shaders);
@@ -653,7 +653,7 @@ radv_alloc_shader_memory(struct radv_device *device,
mtx_unlock(&device->shader_slab_mutex);
struct radv_shader_slab *slab = calloc(1, sizeof(struct radv_shader_slab));
- slab->size = 256 * 1024;
+ slab->size = MAX2(256 * 1024, shader->code_size);
slab->bo = device->ws->buffer_create(device->ws, slab->size, 256,
RADEON_DOMAIN_VRAM,
RADEON_FLAG_NO_INTERPROCESS_SHARING |