1#pragma once
2
3#include <nn/gfx/detail/gfx_DataContainer.h>
4#include <nn/gfx/gfx_Enum.h>
5#include <nn/gfx/gfx_RootSignatureInfoData.h>
6
7namespace nn::gfx {
8class DescriptorRangeInfo : public detail::DataContainer<DescriptorRangeInfoData> {
9public:
10 DescriptorRangeInfo();
11 void SetDefault();
12 void SetDescriptorSlotType(DescriptorSlotType);
13 void SetDescriptorSlotCount(int);
14 void SetBaseShaderSlot(int);
15 void SetBufferDescriptorSlotOffset(int);
16 void SetTextureSamplerDescriptorSlotOffset(int, int);
17 DescriptorSlotType GetDescriptorSlotType() const;
18 int GetDescriptorSlotCount() const;
19 int GetBaseShaderSlot() const;
20 int GetBufferDescriptorSlotOffset() const;
21 int GetTextureDescriptorSlotOffset() const;
22 int GetSamplerDescriptorSlotOffset() const;
23};
24
25class DescriptorTableInfo : public detail::DataContainer<DescriptorTableInfoData> {
26public:
27 DescriptorTableInfo();
28 void SetDefault();
29 void SetShaderStage(ShaderStage);
30 void SetDescriptorRangeInfoArray(const DescriptorRangeInfo*, int);
31 ShaderStage GetShaderStage() const;
32 const DescriptorRangeInfo* GetDescriptorRangeInfoArray() const;
33 int GetDescriptorRangeCount() const;
34};
35
36class DynamicDescriptorInfo : public detail::DataContainer<DynamicDescriptorInfoData> {
37public:
38 DynamicDescriptorInfo();
39 void SetDefault();
40 void SetShaderStage(ShaderStage);
41 void SetShaderSlot(int);
42 ShaderStage GetShaderStage() const;
43 int GetShaderSlot() const;
44};
45
46class RootSignatureInfo : public detail::DataContainer<RootSignatureInfoData> {
47public:
48 RootSignatureInfo();
49 void SetDefault();
50 void SetDescriptorTableInfoArray(const DescriptorTableInfo*, int);
51 void SetDynamicDescriptorInfoArray(const DynamicDescriptorInfo*, int);
52 const DescriptorTableInfo* GetDescriptorTableInfoArray() const;
53 int GetDescriptorTableCount() const;
54 const DynamicDescriptorInfo* GetDynamicDescriptorInfoArray() const;
55 int GetDynamicDescriptorCount() const;
56};
57
58} // namespace nn::gfx