1#pragma once
2
3#include <nn/gfx/gfx_Common.h>
4#include <nn/gfx/gfx_PipelineData-api.nvn.8.h>
5
6namespace nn::gfx {
7
8class GraphicsPipelineInfo;
9class ComputePipelineInfo;
10
11namespace detail {
12
13template <>
14class PipelineImpl<ApiVariationNvn8> : public DataContainer<PipelineImplData<ApiVariationNvn8>> {
15 NN_NO_COPY(PipelineImpl);
16
17public:
18 typedef GraphicsPipelineInfo GraphicsInfoType;
19 typedef ComputePipelineInfo ComputeInfoType;
20
21 static size_t GetRequiredMemorySize(const GraphicsInfoType&);
22 static size_t GetRequiredMemorySize(const ComputeInfoType&);
23
24 PipelineImpl();
25 ~PipelineImpl();
26 void SetMemory(void*, size_t);
27 void* GetMemory();
28 const void* GetMemory() const;
29 void Initialize(DeviceImpl<ApiVariationNvn8>*, const GraphicsInfoType&);
30 void Initialize(DeviceImpl<ApiVariationNvn8>*, const ComputeInfoType&);
31 void Finalize(DeviceImpl<ApiVariationNvn8>*);
32};
33
34} // namespace detail
35
36} // namespace nn::gfx