Skip to content

Commit 5e07033

Browse files
authored
Merge pull request #291 from gpx1000/game-fixes
addressing Game tutorial reported issues
2 parents 51bb6d9 + 42a09d5 commit 5e07033

4 files changed

Lines changed: 9 additions & 33 deletions

File tree

attachments/simple_engine/renderer.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1566,7 +1566,6 @@ class Renderer {
15661566
VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME,
15671567
VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME,
15681568
VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME,
1569-
VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME,
15701569
VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME,
15711570
// Robustness and safety
15721571
VK_EXT_ROBUSTNESS_2_EXTENSION_NAME,

attachments/simple_engine/renderer_core.cpp

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -795,23 +795,7 @@ void Renderer::addSupportedOptionalExtensions() {
795795
avail.insert(e.extensionName);
796796
}
797797

798-
// First, handle dependency: VK_EXT_attachment_feedback_loop_dynamic_state requires VK_EXT_attachment_feedback_loop_layout
799-
const char* dynState = VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME;
800-
const char* layoutReq = "VK_EXT_attachment_feedback_loop_layout";
801-
bool dynSupported = avail.contains(dynState);
802-
bool layoutSupported = avail.contains(layoutReq);
803798
for (const auto& optionalExt : optionalDeviceExtensions) {
804-
if (std::strcmp(optionalExt, dynState) == 0) {
805-
if (dynSupported && layoutSupported) {
806-
deviceExtensions.push_back(dynState);
807-
deviceExtensions.push_back(layoutReq);
808-
std::cout << "Adding optional extension: " << dynState << std::endl;
809-
std::cout << "Adding required-by-optional extension: " << layoutReq << std::endl;
810-
} else if (dynSupported && !layoutSupported) {
811-
std::cout << "Skipping extension due to missing dependency: " << dynState << " requires " << layoutReq << std::endl;
812-
}
813-
continue; // handled
814-
}
815799
if (avail.contains(optionalExt)) {
816800
deviceExtensions.push_back(optionalExt);
817801
std::cout << "Adding optional extension: " << optionalExt << std::endl;

attachments/simple_engine/renderer_rendering.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ void Renderer::renderReflectionPass(vk::raii::CommandBuffer& cmd,
314314
.srcStageMask = vk::PipelineStageFlagBits2::eTopOfPipe,
315315
.srcAccessMask = {},
316316
.dstStageMask = vk::PipelineStageFlagBits2::eColorAttachmentOutput,
317-
.dstAccessMask = vk::AccessFlagBits2::eColorAttachmentWrite,
317+
.dstAccessMask = vk::AccessFlagBits2::eColorAttachmentWrite | vk::AccessFlagBits2::eColorAttachmentRead,
318318
.oldLayout = vk::ImageLayout::eShaderReadOnlyOptimal,
319319
.newLayout = vk::ImageLayout::eColorAttachmentOptimal,
320320
.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
@@ -327,7 +327,7 @@ void Renderer::renderReflectionPass(vk::raii::CommandBuffer& cmd,
327327
.srcStageMask = vk::PipelineStageFlagBits2::eTopOfPipe,
328328
.srcAccessMask = {},
329329
.dstStageMask = vk::PipelineStageFlagBits2::eEarlyFragmentTests,
330-
.dstAccessMask = vk::AccessFlagBits2::eDepthStencilAttachmentWrite,
330+
.dstAccessMask = vk::AccessFlagBits2::eDepthStencilAttachmentWrite | vk::AccessFlagBits2::eDepthStencilAttachmentRead,
331331
.oldLayout = vk::ImageLayout::eUndefined,
332332
.newLayout = vk::ImageLayout::eDepthAttachmentOptimal,
333333
.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
@@ -1924,7 +1924,7 @@ void Renderer::Render(const std::vector<Entity *>& entities, CameraComponent* ca
19241924
swapchainToColor.srcStageMask = vk::PipelineStageFlagBits2::eBottomOfPipe;
19251925
swapchainToColor.srcAccessMask = vk::AccessFlagBits2::eNone;
19261926
swapchainToColor.dstStageMask = vk::PipelineStageFlagBits2::eColorAttachmentOutput;
1927-
swapchainToColor.dstAccessMask = vk::AccessFlagBits2::eColorAttachmentWrite;
1927+
swapchainToColor.dstAccessMask = vk::AccessFlagBits2::eColorAttachmentWrite | vk::AccessFlagBits2::eColorAttachmentRead;
19281928
swapchainToColor.oldLayout = (imageIndex < swapChainImageLayouts.size()) ? swapChainImageLayouts[imageIndex] : vk::ImageLayout::eUndefined;
19291929
swapchainToColor.newLayout = vk::ImageLayout::eColorAttachmentOptimal;
19301930
swapchainToColor.image = swapChainImages[imageIndex];
@@ -2362,7 +2362,7 @@ void Renderer::Render(const std::vector<Entity *>& entities, CameraComponent* ca
23622362
.srcStageMask = oscSrcStage,
23632363
.srcAccessMask = oscSrcAccess,
23642364
.dstStageMask = vk::PipelineStageFlagBits2::eColorAttachmentOutput,
2365-
.dstAccessMask = vk::AccessFlagBits2::eColorAttachmentWrite,
2365+
.dstAccessMask = vk::AccessFlagBits2::eColorAttachmentWrite | vk::AccessFlagBits2::eColorAttachmentRead,
23662366
.oldLayout = oscOldLayout,
23672367
.newLayout = vk::ImageLayout::eColorAttachmentOptimal,
23682368
.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
@@ -2471,7 +2471,7 @@ void Renderer::Render(const std::vector<Entity *>& entities, CameraComponent* ca
24712471
.srcStageMask = vk::PipelineStageFlagBits2::eBottomOfPipe,
24722472
.srcAccessMask = vk::AccessFlagBits2::eNone,
24732473
.dstStageMask = vk::PipelineStageFlagBits2::eColorAttachmentOutput,
2474-
.dstAccessMask = vk::AccessFlagBits2::eColorAttachmentWrite,
2474+
.dstAccessMask = vk::AccessFlagBits2::eColorAttachmentWrite | vk::AccessFlagBits2::eColorAttachmentRead,
24752475
.oldLayout = vk::ImageLayout::eUndefined,
24762476
.newLayout = vk::ImageLayout::eColorAttachmentOptimal,
24772477
.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
@@ -2620,7 +2620,7 @@ void Renderer::Render(const std::vector<Entity *>& entities, CameraComponent* ca
26202620
.srcStageMask = vk::PipelineStageFlagBits2::eBottomOfPipe,
26212621
.srcAccessMask = vk::AccessFlagBits2::eNone,
26222622
.dstStageMask = vk::PipelineStageFlagBits2::eColorAttachmentOutput,
2623-
.dstAccessMask = vk::AccessFlagBits2::eColorAttachmentWrite,
2623+
.dstAccessMask = vk::AccessFlagBits2::eColorAttachmentWrite | vk::AccessFlagBits2::eColorAttachmentRead,
26242624
.oldLayout = (imageIndex < swapChainImageLayouts.size()) ? swapChainImageLayouts[imageIndex] : vk::ImageLayout::eUndefined,
26252625
.newLayout = vk::ImageLayout::eColorAttachmentOptimal,
26262626
.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,

attachments/simple_engine/vulkan_device.cpp

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -86,17 +86,12 @@ bool VulkanDevice::pickPhysicalDevice() {
8686
}
8787

8888
// Check for required features
89-
auto features = device.template getFeatures2<vk::PhysicalDeviceFeatures2, vk::PhysicalDeviceVulkan13Features, vk::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT>();
89+
auto features = device.template getFeatures2<vk::PhysicalDeviceFeatures2, vk::PhysicalDeviceVulkan13Features>();
9090
bool supportsRequiredFeatures = (features.template get<vk::PhysicalDeviceVulkan13Features>().dynamicRendering == VK_TRUE);
9191
if (!supportsRequiredFeatures) {
9292
std::cout << " - Does not support required features (dynamicRendering)" << std::endl;
9393
}
9494

95-
if (features.template get<vk::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT>().attachmentFeedbackLoopLayout == VK_FALSE) {
96-
supportsRequiredFeatures = false;
97-
std::cout << " - Does not support required feature (attachmentFeedbackLoopLayout)" << std::endl;
98-
}
99-
10095
return supportsVulkan1_3 && supportsGraphics && supportsAllRequiredExtensions && swapChainAdequate && supportsRequiredFeatures;
10196
});
10297

@@ -142,12 +137,10 @@ bool VulkanDevice::createLogicalDevice(bool enableValidationLayers, const std::v
142137
// Enable required features using StructureChain
143138
vk::StructureChain<
144139
vk::PhysicalDeviceFeatures2,
145-
vk::PhysicalDeviceVulkan13Features,
146-
vk::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT
140+
vk::PhysicalDeviceVulkan13Features
147141
> featureChain{
148142
{.features = {.depthClamp = vk::True, .samplerAnisotropy = vk::True}},
149-
{.synchronization2 = vk::True, .dynamicRendering = vk::True},
150-
{.attachmentFeedbackLoopLayout = vk::True}
143+
{.synchronization2 = vk::True, .dynamicRendering = vk::True}
151144
};
152145
auto& features = featureChain.get<vk::PhysicalDeviceFeatures2>();
153146

0 commit comments

Comments
 (0)