#include "vktDynamicStateTestCaseUtil.hpp"
#include "vkImageUtil.hpp"
+#include "vkTypeUtil.hpp"
+#include "vkCmdUtil.hpp"
#include "tcuTextureUtil.hpp"
#include "tcuImageCompare.hpp"
deUint8* ptr = reinterpret_cast<unsigned char *>(m_vertexBuffer->getBoundMemory().getHostPtr());
deMemcpy(ptr, &m_data[0], static_cast<size_t>(dataSize));
- vk::flushMappedMemoryRange(m_vk, device,
- m_vertexBuffer->getBoundMemory().getMemory(),
- m_vertexBuffer->getBoundMemory().getOffset(),
- dataSize);
+ vk::flushAlloc(m_vk, device, m_vertexBuffer->getBoundMemory());
const CmdPoolCreateInfo cmdPoolCreateInfo(m_context.getUniversalQueueFamilyIndex());
m_cmdPool = vk::createCommandPool(m_vk, device, &cmdPoolCreateInfo);
void beginRenderPassWithClearColor (const vk::VkClearColorValue &clearColor)
{
- const CmdBufferBeginInfo beginInfo;
- m_vk.beginCommandBuffer(*m_cmdBuffer, &beginInfo);
+ beginCommandBuffer(m_vk, *m_cmdBuffer, 0u);
initialTransitionColor2DImage(m_vk, *m_cmdBuffer, m_colorTargetImage->object(), vk::VK_IMAGE_LAYOUT_GENERAL,
vk::VK_ACCESS_TRANSFER_WRITE_BIT, vk::VK_PIPELINE_STAGE_TRANSFER_BIT);
vk::VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | vk::VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
0, 1, &memBarrier, 0, DE_NULL, 0, DE_NULL);
- const vk::VkRect2D renderArea = { { 0, 0 }, { WIDTH, HEIGHT } };
- const RenderPassBeginInfo renderPassBegin(*m_renderPass, *m_framebuffer, renderArea);
-
transition2DImage(m_vk, *m_cmdBuffer, m_depthStencilImage->object(), vk::VK_IMAGE_ASPECT_DEPTH_BIT | vk::VK_IMAGE_ASPECT_STENCIL_BIT,
vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, vk::VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
vk::VK_ACCESS_TRANSFER_WRITE_BIT, vk::VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
vk::VK_PIPELINE_STAGE_TRANSFER_BIT, vk::VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | vk::VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT);
- m_vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBegin, vk::VK_SUBPASS_CONTENTS_INLINE);
+ vk::beginRenderPass(m_vk, *m_cmdBuffer, *m_renderPass, *m_framebuffer, vk::makeRect2D(0, 0, WIDTH, HEIGHT));
}
void setDynamicViewportState (const deUint32 width, const deUint32 height)
{
- vk::VkViewport viewport;
- viewport.x = 0;
- viewport.y = 0;
- viewport.width = static_cast<float>(width);
- viewport.height = static_cast<float>(height);
- viewport.minDepth = 0.0f;
- viewport.maxDepth = 1.0f;
-
+ vk::VkViewport viewport = vk::makeViewport(tcu::UVec2(width, height));
m_vk.cmdSetViewport(*m_cmdBuffer, 0, 1, &viewport);
- vk::VkRect2D scissor;
- scissor.offset.x = 0;
- scissor.offset.y = 0;
- scissor.extent.width = width;
- scissor.extent.height = height;
+ vk::VkRect2D scissor = vk::makeRect2D(tcu::UVec2(width, height));
m_vk.cmdSetScissor(*m_cmdBuffer, 0, 1, &scissor);
}
virtual tcu::TestStatus iterate (void)
{
- tcu::TestLog &log = m_context.getTestContext().getLog();
- const vk::VkQueue queue = m_context.getUniversalQueue();
+ tcu::TestLog& log = m_context.getTestContext().getLog();
+ const vk::VkQueue queue = m_context.getUniversalQueue();
+ const vk::VkDevice device = m_context.getDevice();
beginRenderPass();
setDynamicRasterizationState(1.0f, -1.0f);
m_vk.cmdDraw(*m_cmdBuffer, 4, 1, 8, 0);
- m_vk.cmdEndRenderPass(*m_cmdBuffer);
- m_vk.endCommandBuffer(*m_cmdBuffer);
+ endRenderPass(m_vk, *m_cmdBuffer);
+ endCommandBuffer(m_vk, *m_cmdBuffer);
- vk::VkSubmitInfo submitInfo =
- {
- vk::VK_STRUCTURE_TYPE_SUBMIT_INFO, // VkStructureType sType;
- DE_NULL, // const void* pNext;
- 0, // deUint32 waitSemaphoreCount;
- DE_NULL, // const VkSemaphore* pWaitSemaphores;
- (const vk::VkPipelineStageFlags*)DE_NULL,
- 1, // deUint32 commandBufferCount;
- &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers;
- 0, // deUint32 signalSemaphoreCount;
- DE_NULL // const VkSemaphore* pSignalSemaphores;
- };
- m_vk.queueSubmit(queue, 1, &submitInfo, DE_NULL);
+ submitCommandsAndWait(m_vk, device, queue, m_cmdBuffer.get());
// validation
{
virtual tcu::TestStatus iterate (void)
{
- tcu::TestLog &log = m_context.getTestContext().getLog();
- const vk::VkQueue queue = m_context.getUniversalQueue();
+ tcu::TestLog& log = m_context.getTestContext().getLog();
+ const vk::VkQueue queue = m_context.getUniversalQueue();
+ const vk::VkDevice device = m_context.getDevice();
+
+ if (!m_context.getDeviceFeatures().depthBiasClamp)
+ TCU_THROW(NotSupportedError, "depthBiasClamp feature is not supported");
beginRenderPass();
setDynamicRasterizationState(1.0f, 0.0f);
m_vk.cmdDraw(*m_cmdBuffer, 4, 1, 4, 0);
- m_vk.cmdEndRenderPass(*m_cmdBuffer);
- m_vk.endCommandBuffer(*m_cmdBuffer);
+ endRenderPass(m_vk, *m_cmdBuffer);
+ endCommandBuffer(m_vk, *m_cmdBuffer);
- vk::VkSubmitInfo submitInfo =
- {
- vk::VK_STRUCTURE_TYPE_SUBMIT_INFO, // VkStructureType sType;
- DE_NULL, // const void* pNext;
- 0, // deUint32 waitSemaphoreCount;
- DE_NULL, // const VkSemaphore* pWaitSemaphores;
- (const vk::VkPipelineStageFlags*)DE_NULL,
- 1, // deUint32 commandBufferCount;
- &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers;
- 0, // deUint32 signalSemaphoreCount;
- DE_NULL // const VkSemaphore* pSignalSemaphores;
- };
- m_vk.queueSubmit(queue, 1, &submitInfo, DE_NULL);
+ submitCommandsAndWait(m_vk, device, queue, m_cmdBuffer.get());
// validation
{
- VK_CHECK(m_vk.queueWaitIdle(queue));
-
tcu::Texture2D referenceFrame(vk::mapVkFormat(m_colorAttachmentFormat), (int)(0.5 + WIDTH), (int)(0.5 + HEIGHT));
referenceFrame.allocLevel(0);
virtual tcu::TestStatus iterate (void)
{
- tcu::TestLog &log = m_context.getTestContext().getLog();
- const vk::VkQueue queue = m_context.getUniversalQueue();
+ tcu::TestLog& log = m_context.getTestContext().getLog();
+ const vk::VkQueue queue = m_context.getUniversalQueue();
+ const vk::VkDevice device = m_context.getDevice();
beginRenderPass();
m_vk.cmdDraw(*m_cmdBuffer, static_cast<deUint32>(m_data.size()), 1, 0, 0);
- m_vk.cmdEndRenderPass(*m_cmdBuffer);
- m_vk.endCommandBuffer(*m_cmdBuffer);
+ endRenderPass(m_vk, *m_cmdBuffer);
+ endCommandBuffer(m_vk, *m_cmdBuffer);
- vk::VkSubmitInfo submitInfo =
- {
- vk::VK_STRUCTURE_TYPE_SUBMIT_INFO, // VkStructureType sType;
- DE_NULL, // const void* pNext;
- 0, // deUint32 waitSemaphoreCount;
- DE_NULL, // const VkSemaphore* pWaitSemaphores;
- (const vk::VkPipelineStageFlags*)DE_NULL,
- 1, // deUint32 commandBufferCount;
- &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers;
- 0, // deUint32 signalSemaphoreCount;
- DE_NULL // const VkSemaphore* pSignalSemaphores;
- };
- m_vk.queueSubmit(queue, 1, &submitInfo, DE_NULL);
+ submitCommandsAndWait(m_vk, device, queue, m_cmdBuffer.get());
// validation
{
- VK_CHECK(m_vk.queueWaitIdle(queue));
-
tcu::Texture2D referenceFrame(vk::mapVkFormat(m_colorAttachmentFormat), (int)(0.5 + WIDTH), (int)(0.5 + HEIGHT));
referenceFrame.allocLevel(0);