1#pragma once
2
3#include <nn/gfx/detail/gfx_DataContainer.h>
4#include <nn/gfx/gfx_Common.h>
5#include <nn/gfx/gfx_Enum.h>
6#include <nn/gfx/gfx_ShaderData-api.nvn.8.h>
7
8namespace nn::gfx {
9class ShaderInfo;
10
11namespace detail {
12
13template <>
14class ShaderImpl<ApiVariationNvn8> : public DataContainer<ShaderImplData<ApiVariationNvn8>> {
15 NN_NO_COPY(ShaderImpl);
16
17public:
18 typedef ShaderInfo InfoType;
19
20 static size_t GetBinaryCodeAlignment(DeviceImpl<ApiVariationNvn8>*);
21
22 ShaderImpl();
23 ~ShaderImpl();
24 ShaderInitializeResult Initialize(DeviceImpl<ApiVariationNvn8>*, const InfoType&);
25 void Finalize(DeviceImpl<ApiVariationNvn8>*);
26 int GetInterfaceSlot(ShaderStage, ShaderInterfaceType, const char*) const;
27 void GetWorkGroupSize(int*, int*, int*) const;
28};
29
30} // namespace detail
31} // namespace nn::gfx