From fcd9c77beae497a0deeba845870a8c586c826931 Mon Sep 17 00:00:00 2001 From: Ivan Avdeev Date: Wed, 1 May 2024 17:21:22 -0400 Subject: [PATCH] vk: make rt renderer not fail validation at startup --- ref/vk/vk_framectl.c | 26 +++++++++++++------------- ref/vk/vk_ray_internal.h | 3 ++- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/ref/vk/vk_framectl.c b/ref/vk/vk_framectl.c index e9bd9382..a7e43176 100644 --- a/ref/vk/vk_framectl.c +++ b/ref/vk/vk_framectl.c @@ -142,7 +142,7 @@ static VkRenderPass createRenderPass( VkFormat depth_format, qboolean ray_tracin }; BOUNDED_ARRAY(dependencies, VkSubpassDependency, 2); - if (ray_tracing) { + if (vk_core.rtx) { const VkSubpassDependency color = { .srcSubpass = VK_SUBPASS_EXTERNAL, .dstSubpass = 0, @@ -159,24 +159,24 @@ static VkRenderPass createRenderPass( VkFormat depth_format, qboolean ray_tracin .dstSubpass = 0, .srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, .dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, - .srcAccessMask = 0, // VK_ACCESS_COLOR_ATTACHMENT_READ_BIT, + .srcAccessMask = 0, .dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, .dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT, }; BOUNDED_ARRAY_APPEND(dependencies, color); - - const VkSubpassDependency depth = { - .srcSubpass = VK_SUBPASS_EXTERNAL, - .dstSubpass = 0, - .srcStageMask = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, - .dstStageMask = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, - .srcAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, - .dstAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT, - .dependencyFlags = 0, - }; - BOUNDED_ARRAY_APPEND(dependencies, depth); } + const VkSubpassDependency depth = { + .srcSubpass = VK_SUBPASS_EXTERNAL, + .dstSubpass = 0, + .srcStageMask = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, + .dstStageMask = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, + .srcAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, + .dstAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT, + .dependencyFlags = 0, + }; + BOUNDED_ARRAY_APPEND(dependencies, depth); + const VkRenderPassCreateInfo rpci = { .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, .attachmentCount = ARRAYSIZE(attachments), diff --git a/ref/vk/vk_ray_internal.h b/ref/vk/vk_ray_internal.h index 85945406..b549d851 100644 --- a/ref/vk/vk_ray_internal.h +++ b/ref/vk/vk_ray_internal.h @@ -41,7 +41,8 @@ struct vk_combuf_s; qboolean createOrUpdateAccelerationStructure(struct vk_combuf_s *combuf, const as_build_args_t *args); #define MAX_SCRATCH_BUFFER (32*1024*1024) -#define MAX_ACCELS_BUFFER (128*1024*1024) +// FIXME compute this by lazily allocating #define MAX_ACCELS_BUFFER (128*1024*1024) +#define MAX_ACCELS_BUFFER (256*1024*1024) typedef struct { // Geometry metadata. Lifetime is similar to geometry lifetime itself.