From a1524cc3a80714a54d8efc7994c2279fe6e52e7d Mon Sep 17 00:00:00 2001 From: Hyunjun Ko Date: Fri, 17 Jan 2020 07:23:03 +0000 Subject: [PATCH] turnip: fix invalid VK_ERROR_OUT_OF_POOL_MEMORY When VK_DESCRIPTOR_TYPE_SAMPLER is provided, it doesn't need to be counted as a buffer count. Otherwise it leads to mismatch of allocated buffer size, hitting VK_ERROR_OUT_OF_POOL_MEMORY finally. Fixes: c39afe68f0390d45130c1317b3b7e65f55542c36 Also fixes amber tests: ./tests/cases/address_modes_float.amber ./tests/cases/address_modes_int.amber ./tests/cases/magfilter_linear.amber ./tests/cases/magfilter_nearest.amber Reviewed-by: Jonathan Marek (cherry picked from commit 26d93a7495511ded7cca3ed46bcdf7e134c0f929) --- .pick_status.json | 2 +- src/freedreno/vulkan/tu_descriptor_set.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 02c784ba300..f1d7cfa0486 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2038,7 +2038,7 @@ "description": "turnip: fix invalid VK_ERROR_OUT_OF_POOL_MEMORY", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "c39afe68f0390d45130c1317b3b7e65f55542c36" }, diff --git a/src/freedreno/vulkan/tu_descriptor_set.c b/src/freedreno/vulkan/tu_descriptor_set.c index 4965274aac6..7bf278ad32c 100644 --- a/src/freedreno/vulkan/tu_descriptor_set.c +++ b/src/freedreno/vulkan/tu_descriptor_set.c @@ -157,6 +157,9 @@ tu_CreateDescriptorSetLayout( unsigned binding_buffer_count = 1; switch (binding->descriptorType) { + case VK_DESCRIPTOR_TYPE_SAMPLER: + binding_buffer_count = 0; + break; case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC: case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: assert(!(pCreateInfo->flags & VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR));