1#pragma once
2
3#include <nn/gfx/detail/gfx_DataContainer.h>
4#include <nn/gfx/gfx_Common.h>
5#include <nn/gfx/gfx_RootSignatureData-api.common.h>
6
7namespace nn::gfx {
8
9class RootSignatureInfo;
10
11namespace detail {
12template <class TTarget>
13class RootSignatureImplCommon
14 : public DataContainer<RootSignatureImplData<ApiType<LowLevelApi_Common>>> {
15public:
16 typedef RootSignatureInfo InfoType;
17
18 static size_t GetRequiredMemorySize(const InfoType&);
19
20 RootSignatureImplCommon();
21 ~RootSignatureImplCommon();
22
23 void SetMemory(void*, size_t);
24 void* GetMemory();
25 const void* GetMemory() const;
26 void Initialize(DeviceImpl<TTarget>*, const InfoType&);
27 void Finalize(DeviceImpl<TTarget>*);
28};
29} // namespace detail
30} // namespace nn::gfx