diff --git a/renderdoc/driver/vulkan/vk_debug.cpp b/renderdoc/driver/vulkan/vk_debug.cpp index b0d75c88f..1cdcbbd98 100644 --- a/renderdoc/driver/vulkan/vk_debug.cpp +++ b/renderdoc/driver/vulkan/vk_debug.cpp @@ -737,7 +737,7 @@ VulkanDebugManager::VulkanDebugManager(WrappedVulkan *driver, VkDevice dev) vt->CreateRenderPass(Unwrap(dev), &rpinfo, &RGBA16RP); - attDesc.samples = 4; + attDesc.samples = VULKAN_MESH_VIEW_SAMPLES; attDesc.format = VK_FORMAT_R8G8B8A8_SRGB; vt->CreateRenderPass(Unwrap(dev), &rpinfo, &RGBA8MSRP); @@ -829,7 +829,7 @@ VulkanDebugManager::VulkanDebugManager(WrappedVulkan *driver, VkDevice dev) GetResourceManager()->WrapResource(Unwrap(dev), m_CheckerboardPipeline); - msaa.rasterSamples = 4; + msaa.rasterSamples = VULKAN_MESH_VIEW_SAMPLES; pipeInfo.renderPass = RGBA8MSRP; vkr = vt->CreateGraphicsPipelines(Unwrap(dev), VK_NULL_HANDLE, 1, &pipeInfo, &m_CheckerboardMSAAPipeline); @@ -2899,7 +2899,7 @@ MeshDisplayPipelines VulkanDebugManager::CacheMeshDisplayPipelines(const MeshFor VkPipelineMultisampleStateCreateInfo msaa = { VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, NULL, - 4, false, 0.0f, NULL, + VULKAN_MESH_VIEW_SAMPLES, false, 0.0f, NULL, }; VkPipelineDepthStencilStateCreateInfo ds = { @@ -2937,14 +2937,14 @@ MeshDisplayPipelines VulkanDebugManager::CacheMeshDisplayPipelines(const MeshFor VkAttachmentDescription attDesc[] = { { VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION, NULL, - VK_FORMAT_R8G8B8A8_SRGB, 4, + VK_FORMAT_R8G8B8A8_SRGB, VULKAN_MESH_VIEW_SAMPLES, VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_STORE_OP_STORE, VK_ATTACHMENT_LOAD_OP_DONT_CARE, VK_ATTACHMENT_STORE_OP_DONT_CARE, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL }, { VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION, NULL, - VK_FORMAT_D32_SFLOAT, 4, + VK_FORMAT_D32_SFLOAT, VULKAN_MESH_VIEW_SAMPLES, VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_STORE_OP_STORE, VK_ATTACHMENT_LOAD_OP_DONT_CARE, VK_ATTACHMENT_STORE_OP_DONT_CARE, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL diff --git a/renderdoc/driver/vulkan/vk_replay.cpp b/renderdoc/driver/vulkan/vk_replay.cpp index d58e89574..d665bbfdc 100644 --- a/renderdoc/driver/vulkan/vk_replay.cpp +++ b/renderdoc/driver/vulkan/vk_replay.cpp @@ -362,7 +362,7 @@ void VulkanReplay::OutputWindow::Create(WrappedVulkan *driver, VkDevice device, VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, NULL, VK_IMAGE_TYPE_2D, VK_FORMAT_D32_SFLOAT, { width, height, 1 }, - 1, 1, 4, + 1, 1, VULKAN_MESH_VIEW_SAMPLES, VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT|VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, 0, VK_SHARING_MODE_EXCLUSIVE, 0, NULL, @@ -414,14 +414,14 @@ void VulkanReplay::OutputWindow::Create(WrappedVulkan *driver, VkDevice device, VkAttachmentDescription attDesc[] = { { VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION, NULL, - imformat, depth ? 4U : 1U, + imformat, depth ? VULKAN_MESH_VIEW_SAMPLES : 1U, VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_STORE_OP_STORE, VK_ATTACHMENT_LOAD_OP_DONT_CARE, VK_ATTACHMENT_STORE_OP_DONT_CARE, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL }, { VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION, NULL, - VK_FORMAT_D32_SFLOAT, depth ? 4U : 1U, + VK_FORMAT_D32_SFLOAT, depth ? VULKAN_MESH_VIEW_SAMPLES : 1U, VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_STORE_OP_STORE, VK_ATTACHMENT_LOAD_OP_DONT_CARE, VK_ATTACHMENT_STORE_OP_DONT_CARE, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL @@ -470,7 +470,7 @@ void VulkanReplay::OutputWindow::Create(WrappedVulkan *driver, VkDevice device, VkImageCreateInfo imInfo = { VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, NULL, VK_IMAGE_TYPE_2D, imformat, { width, height, 1 }, - 1, 1, depth ? 4U : 1U, + 1, 1, depth ? VULKAN_MESH_VIEW_SAMPLES : 1U, VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT|VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT|VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, 0, VK_SHARING_MODE_EXCLUSIVE, 0, NULL, @@ -2438,7 +2438,7 @@ void VulkanReplay::FlipOutputWindow(uint64_t id) { outw.width, outw.height, 1 }, }; - if(outw.dsimg != VK_NULL_HANDLE) + if(outw.dsimg != VK_NULL_HANDLE && VULKAN_MESH_VIEW_SAMPLES > 1U) vt->CmdResolveImage(Unwrap(cmd), Unwrap(outw.bb), VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL, Unwrap(outw.colimg[outw.curidx]), VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL, 1, &resolve); else vt->CmdCopyImage(Unwrap(cmd), Unwrap(outw.bb), VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL, Unwrap(outw.colimg[outw.curidx]), VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL, 1, &cpy); diff --git a/renderdoc/driver/vulkan/vk_replay.h b/renderdoc/driver/vulkan/vk_replay.h index 4a11432b0..d33d54075 100644 --- a/renderdoc/driver/vulkan/vk_replay.h +++ b/renderdoc/driver/vulkan/vk_replay.h @@ -57,6 +57,9 @@ using std::map; // similar to RDCUNIMPLEMENTED but for things that are hit often so we don't want to fire the debugbreak. #define VULKANNOTIMP(...) do { static bool msgprinted = false; if(!msgprinted) RDCDEBUG("Vulkan not implemented - " __VA_ARGS__); msgprinted = true; } while(0) +// allows easy disabling of MSAA +#define VULKAN_MESH_VIEW_SAMPLES 1U + class WrappedVulkan; class VulkanDebugManager; class VulkanResourceManager;