Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
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
12namespace Grindstone::GraphicsAPI {
13 class RenderPass;
15
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
50namespace 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}
Definition DescriptorSetLayout.hpp:14
Definition PipelineLayout.hpp:18
Definition RenderPass.hpp:10