diff --git a/util/test/demos/vk/vk_device_address_commands.cpp b/util/test/demos/vk/vk_device_address_commands.cpp index 4e88ead51..1b1987cac 100644 --- a/util/test/demos/vk/vk_device_address_commands.cpp +++ b/util/test/demos/vk/vk_device_address_commands.cpp @@ -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(); diff --git a/util/test/demos/vk/vk_discard_zoo.cpp b/util/test/demos/vk/vk_discard_zoo.cpp index 47974c1fd..2eaec3930 100644 --- a/util/test/demos/vk/vk_discard_zoo.cpp +++ b/util/test/demos/vk/vk_discard_zoo.cpp @@ -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; diff --git a/util/test/demos/vk/vk_line_raster.cpp b/util/test/demos/vk/vk_line_raster.cpp index ba8c83969..db569a9ca 100644 --- a/util/test/demos/vk/vk_line_raster.cpp +++ b/util/test/demos/vk/vk_line_raster.cpp @@ -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) diff --git a/util/test/demos/vk/vk_multi_thread_windows.cpp b/util/test/demos/vk/vk_multi_thread_windows.cpp index 6eef28d7a..d1fbe8da5 100644 --- a/util/test/demos/vk/vk_multi_thread_windows.cpp +++ b/util/test/demos/vk/vk_multi_thread_windows.cpp @@ -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); }; diff --git a/util/test/demos/vk/vk_test.cpp b/util/test/demos/vk/vk_test.cpp index d1269a048..9f1a8970e 100644 --- a/util/test/demos/vk/vk_test.cpp +++ b/util/test/demos/vk/vk_test.cpp @@ -1885,12 +1885,15 @@ void VulkanWindow::MultiPresent(VkQueue queue, std::vector 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])); diff --git a/util/test/demos/vk/vk_test.h b/util/test/demos/vk/vk_test.h index db3f9a574..182184531 100644 --- a/util/test/demos/vk/vk_test.h +++ b/util/test/demos/vk/vk_test.h @@ -164,7 +164,7 @@ struct VulkanWindow : public GraphicsWindow, public VulkanCommands void Submit(int index, int totalSubmits, const std::vector &cmds, const std::vector &seccmds, VkQueue q); static void MultiPresent(VkQueue queue, std::vector 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); } diff --git a/util/test/demos/vk/vk_video_textures.cpp b/util/test/demos/vk/vk_video_textures.cpp index b99d22b4e..2800e1a90 100644 --- a/util/test/demos/vk/vk_video_textures.cpp +++ b/util/test/demos/vk/vk_video_textures.cpp @@ -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,