1#pragma once
2
3#include <nn/gfx/gfx_Common.h>
4
5namespace nn::gfx {
6
7class ResShaderProgram;
8class ResShaderContainer;
9class ResShaderFile;
10
11namespace detail {
12class ResShaderProgramImpl {
13public:
14 template <typename TTarget>
15 static size_t NvnGetRecommendedScrachMemorySize(const ResShaderProgram*, DeviceImpl<TTarget>*);
16};
17
18class ResShaderContainerImpl {
19public:
20 template <typename TTarget>
21 static void Initialize(ResShaderContainer*, DeviceImpl<TTarget>*) {
22 // todo: implement this, used in vfx_Resource.cpp
23 }
24
25 template <typename TTarget>
26 static void Initialize(ResShaderContainer*, DeviceImpl<TTarget>*, MemoryPoolImpl<TTarget>*,
27 ptrdiff_t, size_t);
28
29 template <typename TTarget>
30 static void Finalize(ResShaderContainer*, DeviceImpl<TTarget>*);
31};
32} // namespace detail
33
34// todo: figure out where to put this
35template <typename TTarget>
36size_t NvnGetMaxRecommendedScratchMemorySize(TDevice<TTarget>* pDevice,
37 const ResShaderFile* const* ppResShaderFileArray,
38 int shaderFileCount);
39
40} // namespace nn::gfx