1#pragma once
2
3#include <nn/gfx/detail/gfx_Device-api.nvn.8.h>
4#include <nn/gfx/detail/gfx_RequiredMemory.h>
5#include <nn/util.h>
6
7namespace nn::gfx {
8
9class DeviceInfo;
10
11template <class TTarget>
12class TDevice : public detail::DeviceImpl<TTarget>,
13 private detail::RequiredMemory<detail::DeviceImpl<TTarget>> {
14 NN_NO_COPY(TDevice);
15
16public:
17 typedef DeviceInfo InfoType;
18
19 static size_t GetRequiredMemorySize(const InfoType&);
20
21 TDevice();
22 void Initialize(const InfoType&);
23 void Finalize();
24 void SetUserPtr(void*);
25 void* GetUserPtr();
26 const void* GetUserPtr() const;
27};
28
29} // namespace nn::gfx