Skip to content

Commit 109a000

Browse files
authored
Merge pull request #84 from gpx1000/wrong-color-space-74
Refactor `chooseSwapSurfaceFormat` issue #74
2 parents 8907b64 + 588660c commit 109a000

24 files changed

+139
-25
lines changed

attachments/00_base_code.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,8 @@ class HelloTriangleApplication {
4848
};
4949

5050
int main() {
51-
HelloTriangleApplication app{};
52-
5351
try {
52+
HelloTriangleApplication app;
5453
app.run();
5554
} catch (const std::exception& e) {
5655
std::cerr << e.what() << std::endl;

attachments/06_swap_chain_creation.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,12 @@ class HelloTriangleApplication {
295295
}
296296

297297
static vk::Format chooseSwapSurfaceFormat(const std::vector<vk::SurfaceFormatKHR>& availableFormats) {
298-
return ( availableFormats[0].format == vk::Format::eUndefined ) ? vk::Format::eB8G8R8A8Unorm : availableFormats[0].format;
298+
const auto formatIt = std::ranges::find_if(availableFormats,
299+
[](const auto& format) {
300+
return format.format == vk::Format::eB8G8R8A8Srgb &&
301+
format.colorSpace == vk::ColorSpaceKHR::eSrgbNonlinear;
302+
});
303+
return formatIt != availableFormats.end() ? formatIt->format : availableFormats[0].format;
299304
}
300305

301306
static vk::PresentModeKHR chooseSwapPresentMode(const std::vector<vk::PresentModeKHR>& availablePresentModes) {

attachments/07_image_views.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,12 @@ class HelloTriangleApplication {
308308
}
309309

310310
static vk::Format chooseSwapSurfaceFormat(const std::vector<vk::SurfaceFormatKHR>& availableFormats) {
311-
return ( availableFormats[0].format == vk::Format::eUndefined ) ? vk::Format::eB8G8R8A8Unorm : availableFormats[0].format;
311+
const auto formatIt = std::ranges::find_if(availableFormats,
312+
[](const auto& format) {
313+
return format.format == vk::Format::eB8G8R8A8Srgb &&
314+
format.colorSpace == vk::ColorSpaceKHR::eSrgbNonlinear;
315+
});
316+
return formatIt != availableFormats.end() ? formatIt->format : availableFormats[0].format;
312317
}
313318

314319
static vk::PresentModeKHR chooseSwapPresentMode(const std::vector<vk::PresentModeKHR>& availablePresentModes) {

attachments/08_graphics_pipeline.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,12 @@ class HelloTriangleApplication {
313313
}
314314

315315
static vk::Format chooseSwapSurfaceFormat(const std::vector<vk::SurfaceFormatKHR>& availableFormats) {
316-
return ( availableFormats[0].format == vk::Format::eUndefined ) ? vk::Format::eB8G8R8A8Unorm : availableFormats[0].format;
316+
const auto formatIt = std::ranges::find_if(availableFormats,
317+
[](const auto& format) {
318+
return format.format == vk::Format::eB8G8R8A8Srgb &&
319+
format.colorSpace == vk::ColorSpaceKHR::eSrgbNonlinear;
320+
});
321+
return formatIt != availableFormats.end() ? formatIt->format : availableFormats[0].format;
317322
}
318323

319324
static vk::PresentModeKHR chooseSwapPresentMode(const std::vector<vk::PresentModeKHR>& availablePresentModes) {

attachments/09_shader_modules.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,12 @@ class HelloTriangleApplication {
325325
}
326326

327327
static vk::Format chooseSwapSurfaceFormat(const std::vector<vk::SurfaceFormatKHR>& availableFormats) {
328-
return ( availableFormats[0].format == vk::Format::eUndefined ) ? vk::Format::eB8G8R8A8Unorm : availableFormats[0].format;
328+
const auto formatIt = std::ranges::find_if(availableFormats,
329+
[](const auto& format) {
330+
return format.format == vk::Format::eB8G8R8A8Srgb &&
331+
format.colorSpace == vk::ColorSpaceKHR::eSrgbNonlinear;
332+
});
333+
return formatIt != availableFormats.end() ? formatIt->format : availableFormats[0].format;
329334
}
330335

331336
static vk::PresentModeKHR chooseSwapPresentMode(const std::vector<vk::PresentModeKHR>& availablePresentModes) {

attachments/10_fixed_functions.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,12 @@ class HelloTriangleApplication {
354354
}
355355

356356
static vk::Format chooseSwapSurfaceFormat(const std::vector<vk::SurfaceFormatKHR>& availableFormats) {
357-
return ( availableFormats[0].format == vk::Format::eUndefined ) ? vk::Format::eB8G8R8A8Unorm : availableFormats[0].format;
357+
const auto formatIt = std::ranges::find_if(availableFormats,
358+
[](const auto& format) {
359+
return format.format == vk::Format::eB8G8R8A8Srgb &&
360+
format.colorSpace == vk::ColorSpaceKHR::eSrgbNonlinear;
361+
});
362+
return formatIt != availableFormats.end() ? formatIt->format : availableFormats[0].format;
358363
}
359364

360365
static vk::PresentModeKHR chooseSwapPresentMode(const std::vector<vk::PresentModeKHR>& availablePresentModes) {

attachments/12_graphics_pipeline_complete.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,12 @@ class HelloTriangleApplication {
365365
}
366366

367367
static vk::Format chooseSwapSurfaceFormat(const std::vector<vk::SurfaceFormatKHR>& availableFormats) {
368-
return ( availableFormats[0].format == vk::Format::eUndefined ) ? vk::Format::eB8G8R8A8Unorm : availableFormats[0].format;
368+
const auto formatIt = std::ranges::find_if(availableFormats,
369+
[](const auto& format) {
370+
return format.format == vk::Format::eB8G8R8A8Srgb &&
371+
format.colorSpace == vk::ColorSpaceKHR::eSrgbNonlinear;
372+
});
373+
return formatIt != availableFormats.end() ? formatIt->format : availableFormats[0].format;
369374
}
370375

371376
static vk::PresentModeKHR chooseSwapPresentMode(const std::vector<vk::PresentModeKHR>& availablePresentModes) {

attachments/14_command_buffers.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,12 @@ class HelloTriangleApplication {
462462
}
463463

464464
static vk::Format chooseSwapSurfaceFormat(const std::vector<vk::SurfaceFormatKHR>& availableFormats) {
465-
return ( availableFormats[0].format == vk::Format::eUndefined ) ? vk::Format::eB8G8R8A8Unorm : availableFormats[0].format;
465+
const auto formatIt = std::ranges::find_if(availableFormats,
466+
[](const auto& format) {
467+
return format.format == vk::Format::eB8G8R8A8Srgb &&
468+
format.colorSpace == vk::ColorSpaceKHR::eSrgbNonlinear;
469+
});
470+
return formatIt != availableFormats.end() ? formatIt->format : availableFormats[0].format;
466471
}
467472

468473
static vk::PresentModeKHR chooseSwapPresentMode(const std::vector<vk::PresentModeKHR>& availablePresentModes) {

attachments/15_hello_triangle.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,12 @@ class HelloTriangleApplication {
505505
}
506506

507507
static vk::Format chooseSwapSurfaceFormat(const std::vector<vk::SurfaceFormatKHR>& availableFormats) {
508-
return ( availableFormats[0].format == vk::Format::eUndefined ) ? vk::Format::eB8G8R8A8Unorm : availableFormats[0].format;
508+
const auto formatIt = std::ranges::find_if(availableFormats,
509+
[](const auto& format) {
510+
return format.format == vk::Format::eB8G8R8A8Srgb &&
511+
format.colorSpace == vk::ColorSpaceKHR::eSrgbNonlinear;
512+
});
513+
return formatIt != availableFormats.end() ? formatIt->format : availableFormats[0].format;
509514
}
510515

511516
static vk::PresentModeKHR chooseSwapPresentMode(const std::vector<vk::PresentModeKHR>& availablePresentModes) {

attachments/16_frames_in_flight.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,12 @@ class HelloTriangleApplication {
521521
}
522522

523523
static vk::Format chooseSwapSurfaceFormat(const std::vector<vk::SurfaceFormatKHR>& availableFormats) {
524-
return ( availableFormats[0].format == vk::Format::eUndefined ) ? vk::Format::eB8G8R8A8Unorm : availableFormats[0].format;
524+
const auto formatIt = std::ranges::find_if(availableFormats,
525+
[](const auto& format) {
526+
return format.format == vk::Format::eB8G8R8A8Srgb &&
527+
format.colorSpace == vk::ColorSpaceKHR::eSrgbNonlinear;
528+
});
529+
return formatIt != availableFormats.end() ? formatIt->format : availableFormats[0].format;
525530
}
526531

527532
static vk::PresentModeKHR chooseSwapPresentMode(const std::vector<vk::PresentModeKHR>& availablePresentModes) {

0 commit comments

Comments
 (0)