Bug 14084: Get tests compiling and running
Some layer tests still have issues.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1697736..07deeeb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -46,7 +46,7 @@
set(PYTHON_CMD "py")
endif()
-option(BUILD_TESTS "Build tests" OFF)
+option(BUILD_TESTS "Build tests" ON)
# loader: Generic VULKAN ICD loader
# icd: Device dependent (DD) VULKAN components
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index fc511d8..d7d0762 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -748,11 +748,8 @@
vk_testing::Buffer bufs[3];
VkEventCreateInfo event_info;
VkEvent event;
- VkMemoryRequirements mem_req;
VkResult err;
VkMemoryPropertyFlags reqs = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
- VkMemoryAllocInfo mem_info;
- VkDeviceMemory event_mem;
// typedef struct VkEventCreateInfo_
// {
@@ -766,26 +763,6 @@
err = vkCreateEvent(dev_.handle(), &event_info, &event);
ASSERT_VK_SUCCESS(err);
- err = vkGetObjectMemoryRequirements(dev_.handle(), VK_OBJECT_TYPE_EVENT, event, &mem_req);
- ASSERT_VK_SUCCESS(err);
-
- if (mem_req.size) {
-
- memset(&mem_info, 0, sizeof(mem_info));
- mem_info.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO;
- mem_info.allocationSize = mem_req.size;
- mem_info.memoryTypeIndex = 0;
-
- err = dev_.phy().set_memory_type(mem_req.memoryTypeBits, &mem_info, 0);
- ASSERT_VK_SUCCESS(err);
-
- err = vkAllocMemory(dev_.handle(), &mem_info, &event_mem);
- ASSERT_VK_SUCCESS(err);
-
- err = vkBindObjectMemory(dev_.handle(), VK_OBJECT_TYPE_EVENT, event, event_mem, 0);
- ASSERT_VK_SUCCESS(err);
- }
-
err = vkResetEvent(dev_.handle(), event);
ASSERT_VK_SUCCESS(err);
@@ -840,14 +817,9 @@
EXPECT_EQ(0x11111111, data[0]);
bufs[2].memory().unmap();
- err = vkDestroyObject(dev_.handle(), VK_OBJECT_TYPE_EVENT, event);
+ err = vkDestroyEvent(dev_.handle(), event);
ASSERT_VK_SUCCESS(err);
- if (mem_req.size) {
- // All done with event memory, clean up
- err = vkFreeMemory(dev_.handle(), event_mem);
- ASSERT_VK_SUCCESS(err);
- }
}
class VkCmdBlitImageTest : public VkCmdBlitTest {
diff --git a/tests/image_tests.cpp b/tests/image_tests.cpp
index 6193dca..0504d96 100644
--- a/tests/image_tests.cpp
+++ b/tests/image_tests.cpp
@@ -218,7 +218,7 @@
mem_info.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO;
mem_info.pNext = NULL;
- err = vkGetObjectMemoryRequirements(device(), VK_OBJECT_TYPE_IMAGE, m_image, &mem_req);
+ err = vkGetImageMemoryRequirements(device(), m_image, &mem_req);
ASSERT_VK_SUCCESS(err);
ASSERT_NE(0, mem_req.size) << "vkGetObjectMemoryRequirements (Image): Failed - expect images to require memory";
@@ -233,7 +233,7 @@
ASSERT_VK_SUCCESS(err);
/* bind memory */
- err = vkBindObjectMemory(device(), VK_OBJECT_TYPE_IMAGE, m_image, m_image_mem, 0);
+ err = vkBindImageMemory(device(), m_image, m_image_mem, 0);
ASSERT_VK_SUCCESS(err);
}
@@ -244,7 +244,7 @@
err = vkFreeMemory(device(), m_image_mem);
ASSERT_VK_SUCCESS(err);
- ASSERT_VK_SUCCESS(vkDestroyObject(device(), VK_OBJECT_TYPE_IMAGE, m_image));
+ ASSERT_VK_SUCCESS(vkDestroyImage(device(), m_image));
}
void VkImageTest::CreateImageView(VkImageViewCreateInfo *pCreateInfo,
@@ -256,7 +256,7 @@
void VkImageTest::DestroyImageView(VkImageView imageView)
{
- ASSERT_VK_SUCCESS(vkDestroyObject(device(), VK_OBJECT_TYPE_IMAGE_VIEW, imageView));
+ ASSERT_VK_SUCCESS(vkDestroyImageView(device(), imageView));
}
TEST_F(VkImageTest, CreateImageViewTest) {
diff --git a/tests/init.cpp b/tests/init.cpp
index 4c1881e..d298fc1 100644
--- a/tests/init.cpp
+++ b/tests/init.cpp
@@ -169,8 +169,6 @@
TEST_F(VkTest, Event) {
VkEventCreateInfo event_info;
VkEvent event;
- VkMemoryRequirements mem_req;
- VkDeviceMemory event_mem;
VkResult err;
// typedef struct VkEventCreateInfo_
@@ -185,31 +183,6 @@
err = vkCreateEvent(device(), &event_info, &event);
ASSERT_VK_SUCCESS(err);
- err = vkGetObjectMemoryRequirements(device(), VK_OBJECT_TYPE_EVENT, event, &mem_req);
- ASSERT_VK_SUCCESS(err);
-
- if (mem_req.size) {
-
- // VkResult VKAPI vkAllocMemory(
- // VkDevice device,
- // const VkMemoryAllocInfo* pAllocInfo,
- // VkDeviceMemory* pMem);
- VkMemoryAllocInfo mem_info;
-
- memset(&mem_info, 0, sizeof(mem_info));
- mem_info.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO;
- mem_info.allocationSize = mem_req.size;
- mem_info.memoryTypeIndex = 0;
-
- err = m_device->phy().set_memory_type(mem_req.memoryTypeBits, &mem_info, 0);
- ASSERT_VK_SUCCESS(err);
-
- err = vkAllocMemory(device(), &mem_info, &event_mem);
- ASSERT_VK_SUCCESS(err);
-
- err = vkBindObjectMemory(device(), VK_OBJECT_TYPE_EVENT, event, event_mem, 0);
- ASSERT_VK_SUCCESS(err);
- }
err = vkResetEvent(device(), event);
ASSERT_VK_SUCCESS(err);
@@ -225,13 +198,8 @@
// TODO: Test actual synchronization with command buffer event.
// All done with event memory, clean up
- err = vkDestroyObject(device(), VK_OBJECT_TYPE_EVENT, event);
+ err = vkDestroyEvent(device(), event);
ASSERT_VK_SUCCESS(err);
-
- if (mem_req.size) {
- err = vkFreeMemory(device(), event_mem);
- ASSERT_VK_SUCCESS(err);
- }
}
#define MAX_QUERY_SLOTS 10
@@ -239,10 +207,8 @@
TEST_F(VkTest, Query) {
VkQueryPoolCreateInfo query_info;
VkQueryPool query_pool;
- VkMemoryRequirements mem_req;
size_t query_result_size;
uint32_t *query_result_data;
- VkDeviceMemory query_mem;
VkResult err;
// typedef enum VkQueryType_
@@ -277,32 +243,6 @@
err = vkCreateQueryPool(device(), &query_info, &query_pool);
ASSERT_VK_SUCCESS(err);
- err = vkGetObjectMemoryRequirements(device(), VK_OBJECT_TYPE_QUERY_POOL, query_pool, &mem_req);
- ASSERT_VK_SUCCESS(err);
-
- if (mem_req.size) {
-
- // VkResult VKAPI vkAllocMemory(
- // VkDevice device,
- // const VkMemoryAllocInfo* pAllocInfo,
- // VkDeviceMemory* pMem);
- VkMemoryAllocInfo mem_info;
-
- memset(&mem_info, 0, sizeof(mem_info));
- mem_info.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO;
- // TODO: Is a simple multiple all that's needed here?
- mem_info.allocationSize = mem_req.size * MAX_QUERY_SLOTS;
- mem_info.memoryTypeIndex = 0;
-
- err = m_device->phy().set_memory_type(mem_req.memoryTypeBits, &mem_info, 0);
- ASSERT_VK_SUCCESS(err);
-
- err = vkAllocMemory(device(), &mem_info, &query_mem);
- ASSERT_VK_SUCCESS(err);
-
- err = vkBindObjectMemory(device(), VK_OBJECT_TYPE_QUERY_POOL, query_pool, query_mem, 0);
- ASSERT_VK_SUCCESS(err);
- }
// TODO: Test actual synchronization with command buffer event.
// TODO: Create command buffer
// TODO: vkCmdResetQueryPool
@@ -324,14 +264,8 @@
}
- err = vkDestroyObject(device(), VK_OBJECT_TYPE_QUERY_POOL, query_pool);
+ err = vkDestroyQueryPool(device(), query_pool);
ASSERT_VK_SUCCESS(err);
-
- if (mem_req.size) {
- // All done with QueryPool memory, clean up
- err = vkFreeMemory(device(), query_mem);
- ASSERT_VK_SUCCESS(err);
- }
}
void getQueue(vk_testing::Device *device, uint32_t queue_node_index, const char *qname)
@@ -474,7 +408,7 @@
VkMemoryRequirements mem_req;
VkDeviceMemory image_mem;
- err = vkGetObjectMemoryRequirements(device(), VK_OBJECT_TYPE_IMAGE, image, &mem_req);
+ err = vkGetImageMemoryRequirements(device(), image, &mem_req);
ASSERT_VK_SUCCESS(err);
if (mem_req.size) {
@@ -496,7 +430,7 @@
err = vkAllocMemory(device(), &mem_info, &image_mem);
ASSERT_VK_SUCCESS(err);
- err = vkBindObjectMemory(device(), VK_OBJECT_TYPE_IMAGE, image, image_mem, 0);
+ err = vkBindImageMemory(device(), image, image_mem, 0);
ASSERT_VK_SUCCESS(err);
}
@@ -540,8 +474,8 @@
// TODO: Test image memory.
// All done with image memory, clean up
- ASSERT_VK_SUCCESS(vkDestroyObject(device(), VK_OBJECT_TYPE_IMAGE_VIEW, view));
- ASSERT_VK_SUCCESS(vkDestroyObject(device(), VK_OBJECT_TYPE_IMAGE, image));
+ ASSERT_VK_SUCCESS(vkDestroyImageView(device(), view));
+ ASSERT_VK_SUCCESS(vkDestroyImage(device(), image));
if (mem_req.size) {
ASSERT_VK_SUCCESS(vkFreeMemory(device(), image_mem));
@@ -571,7 +505,7 @@
err = vkCreateCommandBuffer(device(), &info, &cmdBuffer);
ASSERT_VK_SUCCESS(err) << "vkCreateCommandBuffer failed";
- ASSERT_VK_SUCCESS(vkDestroyObject(device(), VK_OBJECT_TYPE_COMMAND_BUFFER, cmdBuffer));
+ ASSERT_VK_SUCCESS(vkDestroyCommandBuffer(device(), cmdBuffer));
}
TEST_F(VkTest, TestCommandBuffer) {
@@ -617,7 +551,7 @@
err = vkCreateShader(device(), &createInfo, &shader);
ASSERT_VK_SUCCESS(err);
- err = vkDestroyObject(device(), VK_OBJECT_TYPE_SHADER_MODULE, module);
+ err = vkDestroyShaderModule(device(), module);
ASSERT_VK_SUCCESS(err);
*pshader = shader;
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index b37511d..14d4a51 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -61,9 +61,9 @@
"}\n";
static void myDbgFunc(
- VkFlags msgFlags,
- VkObjectType objType,
- VkObject srcObject,
+ VkFlags msgFlags,
+ VkDbgObjectType objType,
+ uint64_t srcObject,
size_t location,
int32_t msgCode,
const char* pLayerPrefix,
@@ -121,8 +121,8 @@
static void myDbgFunc(
VkFlags msgFlags,
- VkObjectType objType,
- VkObject srcObject,
+ VkDbgObjectType objType,
+ uint64_t srcObject,
size_t location,
int32_t msgCode,
const char* pLayerPrefix,
@@ -298,16 +298,16 @@
cmdBuffer->PrepareAttachments();
if ((failMask & BsoFailRaster) != BsoFailRaster) {
- cmdBuffer->BindStateObject(VK_STATE_BIND_POINT_RASTER, m_stateRaster);
+ cmdBuffer->BindDynamicRasterState(m_stateRaster);
}
if ((failMask & BsoFailViewport) != BsoFailViewport) {
- cmdBuffer->BindStateObject(VK_STATE_BIND_POINT_VIEWPORT, m_stateViewport);
+ cmdBuffer->BindDynamicViewportState(m_stateViewport);
}
if ((failMask & BsoFailColorBlend) != BsoFailColorBlend) {
- cmdBuffer->BindStateObject(VK_STATE_BIND_POINT_COLOR_BLEND, m_colorBlend);
+ cmdBuffer->BindDynamicColorBlendState(m_colorBlend);
}
if ((failMask & BsoFailDepthStencil) != BsoFailDepthStencil) {
- cmdBuffer->BindStateObject(VK_STATE_BIND_POINT_DEPTH_STENCIL, m_stateDepthStencil);
+ cmdBuffer->BindDynamicDepthStencilState(m_stateDepthStencil);
}
// Make sure depthWriteEnable is set so that DepthStencil fail test will work correctly
VkStencilOpState stencil = {
@@ -461,8 +461,7 @@
err = vkCreateImage(m_device->device(), &image_create_info, &image);
ASSERT_VK_SUCCESS(err);
- err = vkGetObjectMemoryRequirements(m_device->device(),
- VK_OBJECT_TYPE_IMAGE,
+ err = vkGetImageMemoryRequirements(m_device->device(),
image,
&mem_reqs);
ASSERT_VK_SUCCESS(err);
@@ -474,7 +473,7 @@
ASSERT_VK_SUCCESS(err);
// Try to bind free memory that has been freed
- err = vkBindObjectMemory(m_device->device(), VK_OBJECT_TYPE_IMAGE, image, mem, 0);
+ err = vkBindImageMemory(m_device->device(), image, mem, 0);
ASSERT_VK_SUCCESS(err);
// Map memory as if to initialize the image
@@ -529,8 +528,7 @@
err = vkCreateImage(m_device->device(), &image_create_info, &image);
ASSERT_VK_SUCCESS(err);
- err = vkGetObjectMemoryRequirements(m_device->device(),
- VK_OBJECT_TYPE_IMAGE,
+ err = vkGetImageMemoryRequirements(m_device->device(),
image,
&mem_reqs);
ASSERT_VK_SUCCESS(err);
@@ -549,7 +547,7 @@
ASSERT_VK_SUCCESS(err);
// Try to bind free memory that has been freed
- err = vkBindObjectMemory(m_device->device(), VK_OBJECT_TYPE_IMAGE, image, mem, 0);
+ err = vkBindImageMemory(m_device->device(), image, mem, 0);
ASSERT_VK_SUCCESS(err);
msgFlags = m_errorMonitor->GetState(&msgString);
@@ -600,8 +598,7 @@
err = vkCreateImage(m_device->device(), &image_create_info, &image);
ASSERT_VK_SUCCESS(err);
- err = vkGetObjectMemoryRequirements(m_device->device(),
- VK_OBJECT_TYPE_IMAGE,
+ err = vkGetImageMemoryRequirements(m_device->device(),
image,
&mem_reqs);
ASSERT_VK_SUCCESS(err);
@@ -616,7 +613,7 @@
ASSERT_VK_SUCCESS(err);
// Bind memory to Image object
- err = vkBindObjectMemory(m_device->device(), VK_OBJECT_TYPE_IMAGE, image, mem, 0);
+ err = vkBindImageMemory(m_device->device(), image, mem, 0);
ASSERT_VK_SUCCESS(err);
// Introduce validation failure, free memory while still bound to object
@@ -672,8 +669,7 @@
err = vkCreateImage(m_device->device(), &image_create_info, &image);
ASSERT_VK_SUCCESS(err);
- err = vkGetObjectMemoryRequirements(m_device->device(),
- VK_OBJECT_TYPE_IMAGE,
+ err = vkGetImageMemoryRequirements(m_device->device(),
image,
&mem_reqs);
ASSERT_VK_SUCCESS(err);
@@ -689,11 +685,11 @@
ASSERT_VK_SUCCESS(err);
// Bind first memory object to Image object
- err = vkBindObjectMemory(m_device->device(), VK_OBJECT_TYPE_IMAGE, image, mem1, 0);
+ err = vkBindImageMemory(m_device->device(), image, mem1, 0);
ASSERT_VK_SUCCESS(err);
// Introduce validation failure, try to bind a different memory object to the same image object
- err = vkBindObjectMemory(m_device->device(), VK_OBJECT_TYPE_IMAGE, image, mem2, 0);
+ err = vkBindImageMemory(m_device->device(), image, mem2, 0);
ASSERT_VK_SUCCESS(err);
msgFlags = m_errorMonitor->GetState(&msgString);
@@ -744,8 +740,7 @@
err = vkCreateImage(m_device->device(), &image_create_info, &image);
ASSERT_VK_SUCCESS(err);
- err = vkGetObjectMemoryRequirements(m_device->device(),
- VK_OBJECT_TYPE_IMAGE,
+ err = vkGetImageMemoryRequirements(m_device->device(),
image,
&mem_reqs);
ASSERT_VK_SUCCESS(err);
@@ -759,11 +754,11 @@
ASSERT_VK_SUCCESS(err);
// Introduce validation failure, destroy Image object before binding
- vkDestroyObject(m_device->device(), VK_OBJECT_TYPE_IMAGE, image);
+ vkDestroyImage(m_device->device(), image);
ASSERT_VK_SUCCESS(err);
// Now Try to bind memory to this destroyted object
- err = vkBindObjectMemory(m_device->device(), VK_OBJECT_TYPE_IMAGE, image, mem, 0);
+ err = vkBindImageMemory(m_device->device(), image, mem, 0);
ASSERT_VK_SUCCESS(err);
msgFlags = m_errorMonitor->GetState(&msgString);
@@ -2288,7 +2283,6 @@
VkEventCreateInfo event_info;
VkEvent event;
- VkMemoryRequirements mem_req;
VkResult err;
memset(&event_info, 0, sizeof(event_info));
@@ -2297,26 +2291,6 @@
err = vkCreateEvent(device(), &event_info, &event);
ASSERT_VK_SUCCESS(err);
- err = vkGetObjectMemoryRequirements(device(), VK_OBJECT_TYPE_EVENT, event, &mem_req);
- ASSERT_VK_SUCCESS(err);
-
- VkMemoryAllocInfo mem_info;
- VkDeviceMemory event_mem;
-
- memset(&mem_info, 0, sizeof(mem_info));
- mem_info.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO;
- mem_info.allocationSize = mem_req.size;
- mem_info.memoryTypeIndex = 0;
-
- err = m_device->phy().set_memory_type(mem_req.memoryTypeBits, &mem_info, 0);
- ASSERT_VK_SUCCESS(err);
-
- err = vkAllocMemory(device(), &mem_info, &event_mem);
- ASSERT_VK_SUCCESS(err);
-
- err = vkBindObjectMemory(device(), VK_OBJECT_TYPE_EVENT, event, event_mem, 0);
- ASSERT_VK_SUCCESS(err);
-
err = vkResetEvent(device(), event);
ASSERT_VK_SUCCESS(err);
diff --git a/tests/render_tests.cpp b/tests/render_tests.cpp
index 1bb54ab..7d0749d 100644
--- a/tests/render_tests.cpp
+++ b/tests/render_tests.cpp
@@ -344,10 +344,10 @@
}
cmdBuffer->PrepareAttachments();
- cmdBuffer->BindStateObject(VK_STATE_BIND_POINT_RASTER, m_stateRaster);
- cmdBuffer->BindStateObject(VK_STATE_BIND_POINT_VIEWPORT, m_stateViewport);
- cmdBuffer->BindStateObject(VK_STATE_BIND_POINT_COLOR_BLEND, m_colorBlend);
- cmdBuffer->BindStateObject(VK_STATE_BIND_POINT_DEPTH_STENCIL, m_stateDepthStencil);
+ cmdBuffer->BindDynamicRasterState(m_stateRaster);
+ cmdBuffer->BindDynamicViewportState(m_stateViewport);
+ cmdBuffer->BindDynamicColorBlendState(m_colorBlend);
+ cmdBuffer->BindDynamicDepthStencilState(m_stateDepthStencil);
descriptorSet.CreateVKDescriptorSet(cmdBuffer);
pipelineobj.CreateVKPipeline(descriptorSet, renderPass());
cmdBuffer->BindPipeline(pipelineobj);
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index cd8ec6b..4b45f10 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -146,22 +146,22 @@
void VkRenderFramework::ShutdownFramework()
{
- if (m_colorBlend) vkDestroyObject(device(), VK_OBJECT_TYPE_DYNAMIC_CB_STATE, m_colorBlend);
- if (m_stateDepthStencil) vkDestroyObject(device(), VK_OBJECT_TYPE_DYNAMIC_DS_STATE, m_stateDepthStencil);
- if (m_stateRaster) vkDestroyObject(device(), VK_OBJECT_TYPE_DYNAMIC_RS_STATE, m_stateRaster);
- if (m_cmdBuffer) vkDestroyObject(device(), VK_OBJECT_TYPE_COMMAND_BUFFER, m_cmdBuffer);
- if (m_framebuffer) vkDestroyObject(device(), VK_OBJECT_TYPE_FRAMEBUFFER, m_framebuffer);
- if (m_renderPass) vkDestroyObject(device(), VK_OBJECT_TYPE_RENDER_PASS, m_renderPass);
+ if (m_colorBlend) vkDestroyDynamicColorBlendState(device(), m_colorBlend);
+ if (m_stateDepthStencil) vkDestroyDynamicDepthStencilState(device(), m_stateDepthStencil);
+ if (m_stateRaster) vkDestroyDynamicRasterState(device(), m_stateRaster);
+ if (m_cmdBuffer) vkDestroyCommandBuffer(device(), m_cmdBuffer);
+ if (m_framebuffer) vkDestroyFramebuffer(device(), m_framebuffer);
+ if (m_renderPass) vkDestroyRenderPass(device(), m_renderPass);
if (m_globalMsgCallback) m_dbgDestroyMsgCallback(this->inst, m_globalMsgCallback);
if (m_devMsgCallback) m_dbgDestroyMsgCallback(this->inst, m_devMsgCallback);
if (m_stateViewport) {
- vkDestroyObject(device(), VK_OBJECT_TYPE_DYNAMIC_VP_STATE, m_stateViewport);
+ vkDestroyDynamicViewportState(device(), m_stateViewport);
}
while (!m_renderTargets.empty()) {
- vkDestroyObject(device(), VK_OBJECT_TYPE_ATTACHMENT_VIEW, m_renderTargets.back()->targetView());
- vkDestroyObject(device(), VK_OBJECT_TYPE_IMAGE, m_renderTargets.back()->image());
+ vkDestroyAttachmentView(device(), m_renderTargets.back()->targetView());
+ vkDestroyImage(device(), m_renderTargets.back()->image());
vkFreeMemory(device(), m_renderTargets.back()->memory());
m_renderTargets.pop_back();
}
@@ -180,14 +180,14 @@
m_render_target_fmt = VK_FORMAT_B8G8R8A8_UNORM;
// create a raster state (solid, back-face culling)
- VkDynamicRsStateCreateInfo raster = {};
- raster.sType = VK_STRUCTURE_TYPE_DYNAMIC_RS_STATE_CREATE_INFO;
+ VkDynamicRasterStateCreateInfo raster = {};
+ raster.sType = VK_STRUCTURE_TYPE_DYNAMIC_RASTER_STATE_CREATE_INFO;
err = vkCreateDynamicRasterState( device(), &raster, &m_stateRaster );
ASSERT_VK_SUCCESS(err);
- VkDynamicCbStateCreateInfo blend = {};
- blend.sType = VK_STRUCTURE_TYPE_DYNAMIC_CB_STATE_CREATE_INFO;
+ VkDynamicColorBlendStateCreateInfo blend = {};
+ blend.sType = VK_STRUCTURE_TYPE_DYNAMIC_COLOR_BLEND_STATE_CREATE_INFO;
blend.blendConst[0] = 1.0f;
blend.blendConst[1] = 1.0f;
blend.blendConst[2] = 1.0f;
@@ -195,8 +195,8 @@
err = vkCreateDynamicColorBlendState(device(), &blend, &m_colorBlend);
ASSERT_VK_SUCCESS( err );
- VkDynamicDsStateCreateInfo depthStencil = {};
- depthStencil.sType = VK_STRUCTURE_TYPE_DYNAMIC_DS_STATE_CREATE_INFO;
+ VkDynamicDepthStencilStateCreateInfo depthStencil = {};
+ depthStencil.sType = VK_STRUCTURE_TYPE_DYNAMIC_DEPTH_STENCIL_STATE_CREATE_INFO;
depthStencil.minDepthBounds = 0.f;
depthStencil.maxDepthBounds = 1.f;
depthStencil.stencilFrontRef = 0;
@@ -223,8 +223,8 @@
VkViewport viewport;
VkRect2D scissor;
- VkDynamicVpStateCreateInfo viewportCreate = {};
- viewportCreate.sType = VK_STRUCTURE_TYPE_DYNAMIC_VP_STATE_CREATE_INFO;
+ VkDynamicViewportStateCreateInfo viewportCreate = {};
+ viewportCreate.sType = VK_STRUCTURE_TYPE_DYNAMIC_VIEWPORT_STATE_CREATE_INFO;
viewportCreate.viewportAndScissorCount = 1;
viewport.originX = 0;
viewport.originY = 0;
@@ -1403,9 +1403,24 @@
vkCmdEndRenderPass(handle());
}
-void VkCommandBufferObj::BindStateObject(VkStateBindPoint stateBindPoint, VkDynamicStateObject stateObject)
+void VkCommandBufferObj::BindDynamicViewportState(VkDynamicViewportState viewportState)
{
- vkCmdBindDynamicStateObject( handle(), stateBindPoint, stateObject);
+ vkCmdBindDynamicViewportState( handle(), viewportState);
+}
+
+void VkCommandBufferObj::BindDynamicRasterState(VkDynamicRasterState rasterState)
+{
+ vkCmdBindDynamicRasterState( handle(), rasterState);
+}
+
+void VkCommandBufferObj::BindDynamicColorBlendState(VkDynamicColorBlendState colorBlendState)
+{
+ vkCmdBindDynamicColorBlendState( handle(), colorBlendState);
+}
+
+void VkCommandBufferObj::BindDynamicDepthStencilState(VkDynamicDepthStencilState depthStencilState)
+{
+ vkCmdBindDynamicDepthStencilState( handle(), depthStencilState);
}
void VkCommandBufferObj::AddRenderTarget(VkImageObj *renderTarget)
@@ -1425,7 +1440,8 @@
void VkCommandBufferObj::QueueCommandBuffer()
{
- QueueCommandBuffer(NULL);
+ VkFence nullFence = { VK_NULL_HANDLE };
+ QueueCommandBuffer(nullFence);
}
void VkCommandBufferObj::QueueCommandBuffer(VkFence fence)
diff --git a/tests/vkrenderframework.h b/tests/vkrenderframework.h
index fc27779..bdf508e 100644
--- a/tests/vkrenderframework.h
+++ b/tests/vkrenderframework.h
@@ -106,19 +106,12 @@
VkCmdBuffer m_cmdBuffer;
VkRenderPass m_renderPass;
VkFramebuffer m_framebuffer;
-<<<<<<< HEAD
std::vector<VkClearValue> m_renderPassClearValues;
VkRenderPassBeginInfo m_renderPassBeginInfo;
- VkDynamicRsState m_stateRaster;
- VkDynamicCbState m_colorBlend;
- VkDynamicVpState m_stateViewport;
- VkDynamicDsState m_stateDepthStencil;
-=======
VkDynamicRasterState m_stateRaster;
VkDynamicColorBlendState m_colorBlend;
VkDynamicViewportState m_stateViewport;
VkDynamicDepthStencilState m_stateDepthStencil;
->>>>>>> Bug 14084 - Improve type safety and remove polymorphism
vector<VkImageObj*> m_renderTargets;
float m_width, m_height;
VkFormat m_render_target_fmt;
@@ -177,8 +170,11 @@
void BindDescriptorSet(VkDescriptorSetObj &descriptorSet);
void BindVertexBuffer(VkConstantBufferObj *vertexBuffer, VkDeviceSize offset, uint32_t binding);
void BindIndexBuffer(VkIndexBufferObj *indexBuffer, uint32_t offset);
- void BindStateObject(VkStateBindPoint stateBindPoint, VkDynamicStateObject stateObject);
void BeginRenderPass(const VkRenderPassBeginInfo &info);
+ void BindDynamicViewportState(VkDynamicViewportState viewportState);
+ void BindDynamicRasterState(VkDynamicRasterState rasterState);
+ void BindDynamicColorBlendState(VkDynamicColorBlendState colorBlendState);
+ void BindDynamicDepthStencilState(VkDynamicDepthStencilState depthStencilState);
void EndRenderPass();
void Draw(uint32_t firstVertex, uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount);
void DrawIndexed(uint32_t firstIndex, uint32_t indexCount, int32_t vertexOffset, uint32_t firstInstance, uint32_t instanceCount);
diff --git a/tests/vktestbinding.cpp b/tests/vktestbinding.cpp
index 70483e7..2f21733 100644
--- a/tests/vktestbinding.cpp
+++ b/tests/vktestbinding.cpp
@@ -23,6 +23,7 @@
#include <iostream>
#include <string.h> // memset(), memcmp()
#include <assert.h>
+#include <stdarg.h>
#include "vktestbinding.h"
namespace {
@@ -34,11 +35,11 @@
NonDispHandle::init(dev.handle(), handle); \
} while (0)
-#define NON_DISPATCHABLE_HANDLE_DTOR(cls, destroy_func, ...) \
+#define NON_DISPATCHABLE_HANDLE_DTOR(cls, destroy_func) \
cls::~cls() \
{ \
if (initialized()) \
- EXPECT(destroy_func(device(), __VA_ARGS__, handle()) == VK_SUCCESS); \
+ EXPECT(destroy_func(device(), handle()) == VK_SUCCESS); \
}
#define STRINGIFY(x) #x
@@ -468,21 +469,21 @@
EXPECT(vkUnmapMemory(device(), handle()) == VK_SUCCESS);
}
-NON_DISPATCHABLE_HANDLE_DTOR(Fence, vkDestroyObject, VK_OBJECT_TYPE_FENCE)
+NON_DISPATCHABLE_HANDLE_DTOR(Fence, vkDestroyFence)
void Fence::init(const Device &dev, const VkFenceCreateInfo &info)
{
NON_DISPATCHABLE_HANDLE_INIT(vkCreateFence, dev, &info);
}
-NON_DISPATCHABLE_HANDLE_DTOR(Semaphore, vkDestroyObject, VK_OBJECT_TYPE_SEMAPHORE)
+NON_DISPATCHABLE_HANDLE_DTOR(Semaphore, vkDestroySemaphore)
void Semaphore::init(const Device &dev, const VkSemaphoreCreateInfo &info)
{
NON_DISPATCHABLE_HANDLE_INIT(vkCreateSemaphore, dev, &info);
}
-NON_DISPATCHABLE_HANDLE_DTOR(Event, vkDestroyObject, VK_OBJECT_TYPE_EVENT)
+NON_DISPATCHABLE_HANDLE_DTOR(Event, vkDestroyEvent)
void Event::init(const Device &dev, const VkEventCreateInfo &info)
{
@@ -499,7 +500,7 @@
EXPECT(vkResetEvent(device(), handle()) == VK_SUCCESS);
}
-NON_DISPATCHABLE_HANDLE_DTOR(QueryPool, vkDestroyObject, VK_OBJECT_TYPE_QUERY_POOL)
+NON_DISPATCHABLE_HANDLE_DTOR(QueryPool, vkDestroyQueryPool)
void QueryPool::init(const Device &dev, const VkQueryPoolCreateInfo &info)
{
@@ -520,7 +521,7 @@
return err;
}
-NON_DISPATCHABLE_HANDLE_DTOR(Buffer, vkDestroyObject, VK_OBJECT_TYPE_BUFFER)
+NON_DISPATCHABLE_HANDLE_DTOR(Buffer, vkDestroyBuffer)
void Buffer::init(const Device &dev, const VkBufferCreateInfo &info, VkMemoryPropertyFlags mem_props)
{
@@ -540,24 +541,24 @@
{
VkMemoryRequirements reqs;
- EXPECT(vkGetObjectMemoryRequirements(device(), VK_OBJECT_TYPE_BUFFER, handle(), &reqs) == VK_SUCCESS);
+ EXPECT(vkGetBufferMemoryRequirements(device(), handle(), &reqs) == VK_SUCCESS);
return reqs;
}
void Buffer::bind_memory(const DeviceMemory &mem, VkDeviceSize mem_offset)
{
- EXPECT(vkBindObjectMemory(device(), VK_OBJECT_TYPE_BUFFER, handle(), mem.handle(), mem_offset) == VK_SUCCESS);
+ EXPECT(vkBindBufferMemory(device(), handle(), mem.handle(), mem_offset) == VK_SUCCESS);
}
-NON_DISPATCHABLE_HANDLE_DTOR(BufferView, vkDestroyObject, VK_OBJECT_TYPE_BUFFER_VIEW)
+NON_DISPATCHABLE_HANDLE_DTOR(BufferView, vkDestroyBufferView)
void BufferView::init(const Device &dev, const VkBufferViewCreateInfo &info)
{
NON_DISPATCHABLE_HANDLE_INIT(vkCreateBufferView, dev, &info);
}
-NON_DISPATCHABLE_HANDLE_DTOR(Image, vkDestroyObject, VK_OBJECT_TYPE_IMAGE)
+NON_DISPATCHABLE_HANDLE_DTOR(Image, vkDestroyImage)
void Image::init(const Device &dev, const VkImageCreateInfo &info, VkMemoryPropertyFlags mem_props)
{
@@ -589,14 +590,14 @@
{
VkMemoryRequirements reqs;
- EXPECT(vkGetObjectMemoryRequirements(device(), VK_OBJECT_TYPE_IMAGE, handle(), &reqs) == VK_SUCCESS);
+ EXPECT(vkGetImageMemoryRequirements(device(), handle(), &reqs) == VK_SUCCESS);
return reqs;
}
void Image::bind_memory(const DeviceMemory &mem, VkDeviceSize mem_offset)
{
- EXPECT(vkBindObjectMemory(device(), VK_OBJECT_TYPE_IMAGE, handle(), mem.handle(), mem_offset) == VK_SUCCESS);
+ EXPECT(vkBindImageMemory(device(), handle(), mem.handle(), mem_offset) == VK_SUCCESS);
}
VkSubresourceLayout Image::subresource_layout(const VkImageSubresource &subres) const
@@ -617,21 +618,21 @@
VK_IMAGE_USAGE_DEPTH_STENCIL_BIT)));
}
-NON_DISPATCHABLE_HANDLE_DTOR(ImageView, vkDestroyObject, VK_OBJECT_TYPE_IMAGE_VIEW)
+NON_DISPATCHABLE_HANDLE_DTOR(ImageView, vkDestroyImageView)
void ImageView::init(const Device &dev, const VkImageViewCreateInfo &info)
{
NON_DISPATCHABLE_HANDLE_INIT(vkCreateImageView, dev, &info);
}
-NON_DISPATCHABLE_HANDLE_DTOR(AttachmentView, vkDestroyObject, VK_OBJECT_TYPE_ATTACHMENT_VIEW)
+NON_DISPATCHABLE_HANDLE_DTOR(AttachmentView, vkDestroyAttachmentView)
void AttachmentView::init(const Device &dev, const VkAttachmentViewCreateInfo &info)
{
NON_DISPATCHABLE_HANDLE_INIT(vkCreateAttachmentView, dev, &info);
}
-NON_DISPATCHABLE_HANDLE_DTOR(ShaderModule, vkDestroyObject, VK_OBJECT_TYPE_SHADER_MODULE)
+NON_DISPATCHABLE_HANDLE_DTOR(ShaderModule, vkDestroyShaderModule)
void ShaderModule::init(const Device &dev, const VkShaderModuleCreateInfo &info)
{
@@ -649,7 +650,7 @@
return err;
}
-NON_DISPATCHABLE_HANDLE_DTOR(Shader, vkDestroyObject, VK_OBJECT_TYPE_SHADER)
+NON_DISPATCHABLE_HANDLE_DTOR(Shader, vkDestroyShader)
void Shader::init(const Device &dev, const VkShaderCreateInfo &info)
{
@@ -667,7 +668,7 @@
return err;
}
-NON_DISPATCHABLE_HANDLE_DTOR(Pipeline, vkDestroyObject, VK_OBJECT_TYPE_PIPELINE)
+NON_DISPATCHABLE_HANDLE_DTOR(Pipeline, vkDestroyPipeline)
void Pipeline::init(const Device &dev, const VkGraphicsPipelineCreateInfo &info)
{
@@ -715,7 +716,7 @@
}
}
-NON_DISPATCHABLE_HANDLE_DTOR(PipelineLayout, vkDestroyObject, VK_OBJECT_TYPE_PIPELINE_LAYOUT)
+NON_DISPATCHABLE_HANDLE_DTOR(PipelineLayout, vkDestroyPipelineLayout)
void PipelineLayout::init(const Device &dev, VkPipelineLayoutCreateInfo &info, const std::vector<const DescriptorSetLayout *> &layouts)
{
@@ -725,21 +726,21 @@
NON_DISPATCHABLE_HANDLE_INIT(vkCreatePipelineLayout, dev, &info);
}
-NON_DISPATCHABLE_HANDLE_DTOR(Sampler, vkDestroyObject, VK_OBJECT_TYPE_SAMPLER)
+NON_DISPATCHABLE_HANDLE_DTOR(Sampler, vkDestroySampler)
void Sampler::init(const Device &dev, const VkSamplerCreateInfo &info)
{
NON_DISPATCHABLE_HANDLE_INIT(vkCreateSampler, dev, &info);
}
-NON_DISPATCHABLE_HANDLE_DTOR(DescriptorSetLayout, vkDestroyObject, VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT)
+NON_DISPATCHABLE_HANDLE_DTOR(DescriptorSetLayout, vkDestroyDescriptorSetLayout)
void DescriptorSetLayout::init(const Device &dev, const VkDescriptorSetLayoutCreateInfo &info)
{
NON_DISPATCHABLE_HANDLE_INIT(vkCreateDescriptorSetLayout, dev, &info);
}
-NON_DISPATCHABLE_HANDLE_DTOR(DescriptorPool, vkDestroyObject, VK_OBJECT_TYPE_DESCRIPTOR_POOL)
+NON_DISPATCHABLE_HANDLE_DTOR(DescriptorPool, vkDestroyDescriptorPool)
void DescriptorPool::init(const Device &dev, VkDescriptorPoolUsage usage,
uint32_t max_sets, const VkDescriptorPoolCreateInfo &info)
@@ -769,7 +770,7 @@
sets.reserve(set_count);
for (std::vector<VkDescriptorSet>::const_iterator it = set_handles.begin(); it != set_handles.end(); it++) {
// do descriptor sets need memories bound?
- DescriptorSet *descriptorSet = new DescriptorSet(dev, *it);
+ DescriptorSet *descriptorSet = new DescriptorSet(dev, handle(), *it);
sets.push_back(descriptorSet);
}
return sets;
@@ -786,30 +787,36 @@
return (set.empty()) ? NULL : set[0];
}
-NON_DISPATCHABLE_HANDLE_DTOR(DescriptorSet, vkDestroyObject, VK_OBJECT_TYPE_DESCRIPTOR_SET)
+DescriptorSet::~DescriptorSet()
+{
+ if (initialized()) {
+ VkDescriptorSet sets[1] = { handle() };
+ EXPECT(vkFreeDescriptorSets(device(), pool_, 1, sets) == VK_SUCCESS);
+ }
+}
-NON_DISPATCHABLE_HANDLE_DTOR(DynamicViewportState, vkDestroyObject, VK_OBJECT_TYPE_DYNAMIC_VP_STATE)
+NON_DISPATCHABLE_HANDLE_DTOR(DynamicViewportState, vkDestroyDynamicViewportState)
void DynamicViewportState::init(const Device &dev, const VkDynamicViewportStateCreateInfo &info)
{
NON_DISPATCHABLE_HANDLE_INIT(vkCreateDynamicViewportState, dev, &info);
}
-NON_DISPATCHABLE_HANDLE_DTOR(DynamicRasterState, vkDestroyObject, VK_OBJECT_TYPE_DYNAMIC_RS_STATE)
+NON_DISPATCHABLE_HANDLE_DTOR(DynamicRasterState, vkDestroyDynamicRasterState)
void DynamicRasterState::init(const Device &dev, const VkDynamicRasterStateCreateInfo &info)
{
NON_DISPATCHABLE_HANDLE_INIT(vkCreateDynamicRasterState, dev, &info);
}
-NON_DISPATCHABLE_HANDLE_DTOR(DynamicColorBlendState, vkDestroyObject, VK_OBJECT_TYPE_DYNAMIC_CB_STATE)
+NON_DISPATCHABLE_HANDLE_DTOR(DynamicColorBlendState, vkDestroyDynamicColorBlendState)
-void DynamicColorBlendState::init(const Device &dev, const VkDynamicCbStateCreateInfo &info)
+void DynamicColorBlendState::init(const Device &dev, const VkDynamicColorBlendStateCreateInfo &info)
{
NON_DISPATCHABLE_HANDLE_INIT(vkCreateDynamicColorBlendState, dev, &info);
}
-NON_DISPATCHABLE_HANDLE_DTOR(DynamicDepthStencilState, vkDestroyObject, VK_OBJECT_TYPE_DYNAMIC_DS_STATE)
+NON_DISPATCHABLE_HANDLE_DTOR(DynamicDepthStencilState, vkDestroyDynamicDepthStencilState)
void DynamicDepthStencilState::init(const Device &dev, const VkDynamicDepthStencilStateCreateInfo &info)
{
@@ -819,7 +826,7 @@
CmdBuffer::~CmdBuffer()
{
if (initialized())
- EXPECT(vkDestroyObject(dev_handle_, VK_OBJECT_TYPE_COMMAND_BUFFER, handle()) == VK_SUCCESS);
+ EXPECT(vkDestroyCommandBuffer(dev_handle_, handle()) == VK_SUCCESS);
}
void CmdBuffer::init(const Device &dev, const VkCmdBufferCreateInfo &info)
diff --git a/tests/vktestbinding.h b/tests/vktestbinding.h
index 8480890..2a30ea9 100644
--- a/tests/vktestbinding.h
+++ b/tests/vktestbinding.h
@@ -539,7 +539,10 @@
~DescriptorSet();
explicit DescriptorSet() : NonDispHandle() {}
- explicit DescriptorSet(const Device &dev, VkDescriptorSet set) : NonDispHandle(dev.handle(), set) {}
+ explicit DescriptorSet(const Device &dev, VkDescriptorPool pool, VkDescriptorSet set) : NonDispHandle(dev.handle(), set) { pool_ = pool;}
+
+private:
+ VkDescriptorPool pool_;
};
class DynamicViewportState : public internal::NonDispHandle<VkDynamicViewportState> {
diff --git a/tests/vktestframework.cpp b/tests/vktestframework.cpp
index 1b8315b..3edc058 100644
--- a/tests/vktestframework.cpp
+++ b/tests/vktestframework.cpp
@@ -482,7 +482,8 @@
VkCmdBuffer cmdBufs[1];
cmdBufs[0] = m_cmdbuf.handle();
- vkQueueSubmit(m_queue.handle(), 1, cmdBufs, NULL);
+ VkFence nullFence = { VK_NULL_HANDLE };
+ vkQueueSubmit(m_queue.handle(), 1, cmdBufs, nullFence);
m_queue.wait();
VkPresentInfoWSI present = {};