Mesa (master): radv: allocate larger shader memory slabs if needed

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Apr 24 19:01:30 UTC 2020


Module: Mesa
Branch: master
Commit: 03568249f92eb1def932696e6ddc83fa305a7083
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=03568249f92eb1def932696e6ddc83fa305a7083

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Tue Apr 14 20:15:46 2020 +0100

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 <pendingchaos02 at gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4639>

---

 src/amd/vulkan/radv_shader.c | 4 ++--
 1 file 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 |



More information about the mesa-commit mailing list