MAX_DESCRIPTOR_SET_COMBINED_BUFFERS_DYNAMIC related assert fix

The assert was firing off when there were already
MAX_DESCRIPTOR_SET_COMBINED_BUFFERS_DYNAMIC dynamic descriptors
(which is valid), while the last set layouts contained no
dynamic descriptors, because the offset was already set to
MAX_DESCRIPTOR_SET_COMBINED_BUFFERS_DYNAMIC, which shouldn't
matter if there are no dynamic descriptors left.

Bug b/118386749 b/123244275

Change-Id: I1536e6a47b7837c6b052d4e169a5396daf7d34cb
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/34148
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Alexis Hétu <sugoi@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Vulkan/VkPipelineLayout.cpp b/src/Vulkan/VkPipelineLayout.cpp
index cd47bab..da0d3ae 100644
--- a/src/Vulkan/VkPipelineLayout.cpp
+++ b/src/Vulkan/VkPipelineLayout.cpp
@@ -40,9 +40,10 @@
 	uint32_t dynamicOffsetBase = 0;
 	for (uint32_t i = 0; i < setLayoutCount; i++)
 	{
-		ASSERT_OR_RETURN(dynamicOffsetBase < MAX_DESCRIPTOR_SET_COMBINED_BUFFERS_DYNAMIC);
-		dynamicOffsetBases[i] = dynamicOffsetBase;
-		dynamicOffsetBase += setLayouts[i]->getDynamicDescriptorCount();
+		uint32_t dynamicDescriptorCount = setLayouts[i]->getDynamicDescriptorCount();

+		ASSERT_OR_RETURN((dynamicOffsetBase + dynamicDescriptorCount) <= MAX_DESCRIPTOR_SET_COMBINED_BUFFERS_DYNAMIC);

+		dynamicOffsetBases[i] = dynamicOffsetBase;

+		dynamicOffsetBase += dynamicDescriptorCount;
 	}
 }