tests: Get rid of split elemsize/count size in VkConstantBufferObj
Half the callers passed invalid nonsense here. Fixes some real read
overruns.
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index 81710e7..36a6317 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -434,7 +434,6 @@
glm::mat4 Model = glm::mat4(1.0f);
glm::mat4 MVP = Projection * View * Model;
const int matrixSize = sizeof(MVP);
- const int bufSize = sizeof(vktriangle_vs_uniform) / sizeof(float);
memcpy(&data.mvp, &MVP[0][0], matrixSize);
@@ -455,7 +454,7 @@
ASSERT_NO_FATAL_FAILURE(InitViewport());
- VkConstantBufferObj constantBuffer(m_device, bufSize * 2, sizeof(float), (const void *)&data,
+ VkConstantBufferObj constantBuffer(m_device, sizeof(vktriangle_vs_uniform), (const void *)&data,
VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT);
VkShaderObj vs(m_device, vertShaderText, VK_SHADER_STAGE_VERTEX_BIT, this);
@@ -727,7 +726,7 @@
BindingCount(aBindingCount),
BindId(BindIdGenerator),
PipelineVertexInputStateCreateInfo(),
- VulkanMemoryBuffer(aVulkanDevice, 1, static_cast<int>(aByteStride * aVertexCount),
+ VulkanMemoryBuffer(aVulkanDevice, static_cast<int>(aByteStride * aVertexCount),
reinterpret_cast<const void *>(aVerticies), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT) {
BindIdGenerator++; // NB: This can wrap w/misuse
@@ -12235,7 +12234,7 @@
vkCmdBindPipeline(m_commandBuffer->GetBufferHandle(), VK_PIPELINE_BIND_POINT_GRAPHICS, pipe.handle());
// Don't care about actual data, just need to get to draw to flag error
static const float vbo_data[3] = {1.f, 0.f, 1.f};
- VkConstantBufferObj vbo(m_device, sizeof(vbo_data), sizeof(float), (const void *)&vbo_data);
+ VkConstantBufferObj vbo(m_device, sizeof(vbo_data), (const void *)&vbo_data);
m_commandBuffer->BindVertexBuffer(&vbo, (VkDeviceSize)0, 1); // VBO idx 1, but no VBO in PSO
m_commandBuffer->Draw(1, 0, 0, 0);
@@ -12591,7 +12590,7 @@
ASSERT_NO_FATAL_FAILURE(Init());
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
static const float vbo_data[3] = {1.f, 0.f, 1.f};
- VkConstantBufferObj vbo(m_device, 3, sizeof(float), (const void *)&vbo_data);
+ VkConstantBufferObj vbo(m_device, sizeof(vbo_data), (const void *)&vbo_data);
m_commandBuffer->BeginCommandBuffer();
m_commandBuffer->BeginRenderPass(m_renderPassBeginInfo);
m_errorMonitor->SetDesiredFailureMsg(VK_DEBUG_REPORT_ERROR_BIT_EXT, VALIDATION_ERROR_182004e4);
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index e1bab5e..d90b229 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -902,14 +902,13 @@
}
}
-VkConstantBufferObj::VkConstantBufferObj(VkDeviceObj *device, int constantCount, int constantSize, const void *data,
+VkConstantBufferObj::VkConstantBufferObj(VkDeviceObj *device, VkDeviceSize allocationSize, const void *data,
VkBufferUsageFlags usage) {
m_device = device;
memset(&m_descriptorBufferInfo, 0, sizeof(m_descriptorBufferInfo));
VkMemoryPropertyFlags reqs = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT;
- const VkDeviceSize allocationSize = static_cast<VkDeviceSize>(constantCount * constantSize);
if ((VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT) == usage) {
init_as_src_and_dst(*m_device, allocationSize, reqs);
diff --git a/tests/vkrenderframework.h b/tests/vkrenderframework.h
index 16de410..cf76cc3 100644
--- a/tests/vkrenderframework.h
+++ b/tests/vkrenderframework.h
@@ -199,7 +199,7 @@
public:
VkConstantBufferObj(VkDeviceObj *device,
VkBufferUsageFlags usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT);
- VkConstantBufferObj(VkDeviceObj *device, int constantCount, int constantSize, const void *data,
+ VkConstantBufferObj(VkDeviceObj *device, VkDeviceSize size, const void *data,
VkBufferUsageFlags usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT);
VkDescriptorBufferInfo m_descriptorBufferInfo;