Kale
Loading...
Searching...
No Matches
src
Kale
Vulkan
QueueFamilyIndices
QueueFamilyIndices.cpp
Go to the documentation of this file.
1
/*
2
Copyright 2022 Rishi Challa
3
4
Licensed under the Apache License, Version 2.0 (the "License");
5
you may not use this file except in compliance with the License.
6
You may obtain a copy of the License at
7
8
http://www.apache.org/licenses/LICENSE-2.0
9
10
Unless required by applicable law or agreed to in writing, software
11
distributed under the License is distributed on an "AS IS" BASIS,
12
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
See the License for the specific language governing permissions and
14
limitations under the License.
15
*/
16
17
#ifdef KALE_VULKAN
18
19
#include "
QueueFamilyIndices.hpp
"
20
21
#include <
Kale/Vulkan/Core/Core.hpp
>
22
23
using namespace
Kale
;
24
using namespace
Kale::Vulkan
;
25
29
QueueFamilyIndices::QueueFamilyIndices
() {
30
// Empty Body
31
}
32
37
QueueFamilyIndices::QueueFamilyIndices
(
const
vk::PhysicalDevice& device) {
38
39
// Loop through the family properties and set each index
40
uint32_t i = 0;
41
for
(
const
vk::QueueFamilyProperties& familyProperties : device.getQueueFamilyProperties()) {
42
// Check the queue flags and set the indices based on them
43
if
(familyProperties.queueFlags & vk::QueueFlagBits::eGraphics)
graphicsFamilyIndex
= i;
44
if
(device.getSurfaceSupportKHR(i,
Core::surface
.get()))
presentFamilyIndex
= i;
45
46
// Break the loop if we've completed all indices
47
if
(
hasAllIndices
())
break
;
48
i++;
49
}
50
}
51
56
bool
QueueFamilyIndices::hasAllIndices
()
const
{
57
return
graphicsFamilyIndex
.has_value() &&
presentFamilyIndex
.has_value();
58
}
59
64
std::unordered_set<uint32_t>
QueueFamilyIndices::getUniqueIndices
()
const
{
65
std::unordered_set<uint32_t> set;
66
if
(
graphicsFamilyIndex
.has_value()) set.insert(
graphicsFamilyIndex
.value());
67
if
(
presentFamilyIndex
.has_value()) set.insert(
presentFamilyIndex
.value());
68
return
set;
69
}
70
71
#endif
QueueFamilyIndices.hpp
Core.hpp
Kale::Vulkan::Core::surface
static vk::UniqueSurfaceKHR surface
Definition
Core.hpp:94
Kale::Vulkan::QueueFamilyIndices::hasAllIndices
bool hasAllIndices() const
Definition
QueueFamilyIndices.cpp:56
Kale::Vulkan::QueueFamilyIndices::graphicsFamilyIndex
std::optional< uint32_t > graphicsFamilyIndex
Definition
QueueFamilyIndices.hpp:36
Kale::Vulkan::QueueFamilyIndices::getUniqueIndices
std::unordered_set< uint32_t > getUniqueIndices() const
Definition
QueueFamilyIndices.cpp:64
Kale::Vulkan::QueueFamilyIndices::QueueFamilyIndices
QueueFamilyIndices()
Definition
QueueFamilyIndices.cpp:29
Kale::Vulkan::QueueFamilyIndices::presentFamilyIndex
std::optional< uint32_t > presentFamilyIndex
Definition
QueueFamilyIndices.hpp:41
Kale::Vulkan
Definition
Window.hpp:42
Kale
Definition
Application.hpp:38
Generated on Tue Mar 12 2024 00:05:56 for Kale by
1.10.0