mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-11-12 08:53:27 +00:00
Fix normal validation issues in vulkan tests
* Missing usage flags, invalid state creation/setting, invalid combination of LOAD op and UNDEFINED layout, etc.
This commit is contained in:
7 files changed
+28
-13
No files matched your search
@@ -145,7 +145,8 @@ void main()
|
||||
AllocatedImage smiley(
|
||||
this,
|
||||
vkh::ImageCreateInfo(rgba8.width, rgba8.height, 0, VK_FORMAT_R8G8B8A8_UNORM,
|
||||
VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT),
|
||||
VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT |
|
||||
VK_IMAGE_USAGE_SAMPLED_BIT),
|
||||
VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY}));
|
||||
{
|
||||
VkCommandBuffer cmd = GetCommandBuffer();
|
||||
|
||||
@@ -148,9 +148,12 @@ void main()
|
||||
AllocatedImage MakeTex2D(VkFormat fmt, uint32_t width, uint32_t height, uint32_t mips = 1,
|
||||
uint32_t arraySlices = 1)
|
||||
{
|
||||
return AllocatedImage(this,
|
||||
vkh::ImageCreateInfo(width, height, 0, fmt,
|
||||
VK_IMAGE_USAGE_TRANSFER_DST_BIT, mips, arraySlices),
|
||||
VkImageCreateFlags flags = VK_IMAGE_USAGE_TRANSFER_DST_BIT;
|
||||
if(fmt == VK_FORMAT_D32_SFLOAT_S8_UINT || fmt == VK_FORMAT_D24_UNORM_S8_UINT ||
|
||||
fmt == VK_FORMAT_D32_SFLOAT || fmt == VK_FORMAT_D16_UNORM || fmt == VK_FORMAT_S8_UINT)
|
||||
flags |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
|
||||
|
||||
return AllocatedImage(this, vkh::ImageCreateInfo(width, height, 0, fmt, flags, mips, arraySlices),
|
||||
VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY}));
|
||||
}
|
||||
|
||||
@@ -319,10 +322,10 @@ void main()
|
||||
|
||||
renderPassCreateInfo.attachments[0].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||
renderPassCreateInfo.attachments[1].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||
renderPassCreateInfo.attachments[0].loadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
|
||||
renderPassCreateInfo.attachments[1].loadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
|
||||
renderPassCreateInfo.attachments[0].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
|
||||
renderPassCreateInfo.attachments[1].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
|
||||
renderPassCreateInfo.attachments[0].loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
|
||||
renderPassCreateInfo.attachments[1].loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
|
||||
renderPassCreateInfo.attachments[0].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
|
||||
renderPassCreateInfo.attachments[1].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
|
||||
renderPassCreateInfo.attachments[0].storeOp = VK_ATTACHMENT_STORE_OP_STORE;
|
||||
renderPassCreateInfo.attachments[1].storeOp = VK_ATTACHMENT_STORE_OP_STORE;
|
||||
renderPassCreateInfo.attachments[0].stencilStoreOp = VK_ATTACHMENT_STORE_OP_STORE;
|
||||
|
||||
@@ -179,6 +179,7 @@ void main()
|
||||
tests.push_back({VK_NULL_HANDLE});
|
||||
|
||||
lineRasterSetup.stippledLineEnable = VK_TRUE;
|
||||
lineRasterSetup.lineStippleFactor = 1;
|
||||
pipeCreateInfo.dynamicState.dynamicStates.push_back(VK_DYNAMIC_STATE_LINE_STIPPLE_EXT);
|
||||
|
||||
if(lineRasterFeatures.rectangularLines && lineRasterFeatures.stippledRectangularLines)
|
||||
|
||||
@@ -133,7 +133,7 @@ RD_TEST(VK_Multi_Thread_Windows, VulkanGraphicsTest)
|
||||
|
||||
win->Submit(0, 1, {cmd}, {}, q);
|
||||
|
||||
win->Present(q);
|
||||
win->Present(q, true);
|
||||
} while(win);
|
||||
};
|
||||
|
||||
|
||||
@@ -1885,12 +1885,15 @@ void VulkanWindow::MultiPresent(VkQueue queue, std::vector<VulkanWindow *> windo
|
||||
}
|
||||
}
|
||||
|
||||
void VulkanWindow::Present(VkQueue queue)
|
||||
void VulkanWindow::Present(VkQueue queue, bool queueWaitIdle)
|
||||
{
|
||||
if(swap == VK_NULL_HANDLE)
|
||||
return;
|
||||
|
||||
vkDeviceWaitIdle(m_Test->device);
|
||||
if(queueWaitIdle)
|
||||
vkQueueWaitIdle(queue);
|
||||
else
|
||||
vkDeviceWaitIdle(m_Test->device);
|
||||
|
||||
VkResult vkr =
|
||||
vkQueuePresentKHR(queue, vkh::PresentInfoKHR(swap, imgIndex, &renderEndSemaphore[semIdx]));
|
||||
|
||||
@@ -164,7 +164,7 @@ struct VulkanWindow : public GraphicsWindow, public VulkanCommands
|
||||
void Submit(int index, int totalSubmits, const std::vector<VkCommandBuffer> &cmds,
|
||||
const std::vector<VkCommandBuffer> &seccmds, VkQueue q);
|
||||
static void MultiPresent(VkQueue queue, std::vector<VulkanWindow *> windows);
|
||||
void Present(VkQueue q);
|
||||
void Present(VkQueue q, bool queueWaitIdle = false);
|
||||
|
||||
// forward GraphicsWindow functions to internal window
|
||||
void Resize(int width, int height) { m_Win->Resize(width, height); }
|
||||
|
||||
@@ -577,9 +577,11 @@ void main()
|
||||
// vulkan doesn't have 4:4:4 packed formats, makes sense as it can use normal formats
|
||||
// MAKE_TEX(AYUV, VK_FORMAT_R8G8B8A8_UNORM, Vec4i(2, 1, 0, 1), yuv8, rgba8.width * 4);
|
||||
// MAKE_TEX(Y416, VK_FORMAT_R16G16B16A16_UNORM, Vec4i(1, 0, 2, 1), yuv16, rgba8.width * 8);
|
||||
/*
|
||||
MAKE_TEX(444, VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR,
|
||||
VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR, Vec4i(1, 2, 0, 1), yuv16,
|
||||
rgba8.width * 8);
|
||||
*/
|
||||
|
||||
///////////////////////////////////////
|
||||
// 4:4:4 3-plane
|
||||
@@ -878,7 +880,12 @@ void main()
|
||||
VkSamplerYcbcrConversionInfo ycbcrChain = {VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO};
|
||||
|
||||
ycbcrChain.conversion = ycbcr[i].conv;
|
||||
ycbcr[i].sampler = createSampler(vkh::SamplerCreateInfo(VK_FILTER_LINEAR).next(&ycbcrChain));
|
||||
ycbcr[i].sampler = createSampler(
|
||||
vkh::SamplerCreateInfo(VK_FILTER_LINEAR, VK_FILTER_LINEAR, VK_SAMPLER_MIPMAP_MODE_LINEAR,
|
||||
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
|
||||
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
|
||||
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE)
|
||||
.next(&ycbcrChain));
|
||||
|
||||
setlayout = createDescriptorSetLayout(vkh::DescriptorSetLayoutCreateInfo({
|
||||
{0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT,
|
||||
|
||||
Reference in new issue
Block a user