Grindstone Game Engine
v0.2.0
An open source game engine and toolkit.
Toggle main menu visibility
Loading...
Searching...
No Matches
PipelineLayout.hpp
1
#pragma once
2
3
#include <string>
4
#include <vector>
5
#include <iostream>
6
#include <xkeycheck.h>
7
8
#include <Common/Hash.hpp>
9
#include "DescriptorSetLayout.hpp"
10
#include "Formats.hpp"
11
12
namespace
Grindstone::GraphicsAPI {
13
class
RenderPass
;
14
class
DescriptorSetLayout
;
15
18
class
PipelineLayout
{
19
public
:
20
struct
CreateInfo
{
21
const
char
* debugName;
22
const
DescriptorSetLayout
*
const
* descriptorSetLayouts;
23
uint32_t descriptorSetLayoutCount;
24
25
bool
operator==(
const
PipelineLayout::CreateInfo
& o)
const
{
26
if
(descriptorSetLayoutCount != o.descriptorSetLayoutCount) {
27
return
false
;
28
}
29
30
for
(uint32_t i = 0; i < descriptorSetLayoutCount; ++i) {
31
const
DescriptorSetLayout
* a = descriptorSetLayouts[i];
32
const
DescriptorSetLayout
* b = o.descriptorSetLayouts[i];
33
if
(a != b) {
34
return
false
;
35
}
36
}
37
38
return
true
;
39
}
40
41
bool
operator!=(
const
PipelineLayout::CreateInfo
& o)
const
{
42
return
!(*
this
== o);
43
}
44
};
45
46
std::vector<const DescriptorSetLayout*> descriptorSetLayouts;
47
};
48
}
49
50
namespace
std {
51
template
<>
52
struct
hash<Grindstone::GraphicsAPI::PipelineLayout::CreateInfo> {
53
std::size_t operator()(
const
Grindstone::GraphicsAPI::PipelineLayout::CreateInfo
& pipelineLayout)
const
noexcept
{
54
size_t
result = std::hash<uint32_t>{}(pipelineLayout.descriptorSetLayoutCount);
55
for
(uint8_t i = 0; i < pipelineLayout.descriptorSetLayoutCount; ++i) {
56
result ^= std::hash<Grindstone::GraphicsAPI::DescriptorSetLayout>{}(*pipelineLayout.descriptorSetLayouts[i]);
57
}
58
59
return
result;
60
}
61
};
62
}
Grindstone::GraphicsAPI::DescriptorSetLayout
Definition
DescriptorSetLayout.hpp:14
Grindstone::GraphicsAPI::PipelineLayout
Definition
PipelineLayout.hpp:18
Grindstone::GraphicsAPI::RenderPass
Definition
RenderPass.hpp:10
Grindstone::GraphicsAPI::PipelineLayout::CreateInfo
Definition
PipelineLayout.hpp:20
sources
code
Common
Graphics
PipelineLayout.hpp
Generated by
1.17.0