Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
GFXRTPool.cpp
Go to the documentation of this file.
1
2
3#include "Headers/GFXRTPool.h"
6#include "Headers/GFXDevice.h"
7
9
10namespace Divide {
11
13 : _parent(parent)
14{
15}
16
19
20 RenderTargetID uid = 0u;
21 for (auto& target : _renderTargets) {
22 if (target == nullptr) {
23 target = MOV(Attorney::GFXDeviceGFXRTPool::newRT(_parent, descriptor));
24 return { target.get(), uid };
25 }
26 ++uid;
27 }
28
29 RenderTarget* rt = _renderTargets.emplace_back(MOV(Attorney::GFXDeviceGFXRTPool::newRT(_parent, descriptor))).get();
30 return { rt, _renderTargetIndex++ };
31}
32
34 if (handle._rt == nullptr) {
35 return true;
36 }
37
38 const RenderTargetID id = handle._targetID;
39 if (id != INVALID_RENDER_TARGET_ID) {
41 handle._rt = nullptr;
43 _renderTargets[id].reset();
44 return true;
45 }
46
47 return false;
48}
49
51 DIVIDE_ASSERT(target != INVALID_RENDER_TARGET_ID && _renderTargets.size() > to_base(target));
53 return _renderTargets[target].get();
54}
55
56} //namespace Divide
#define MOV(...)
#define DIVIDE_ASSERT(...)
static RenderTarget_uptr newRT(GFXDevice &device, const RenderTargetDescriptor &descriptor)
Definition: GFXDevice.h:636
Rough around the edges Adapter pattern abstracting the actual rendering API and access to the GPU.
Definition: GFXDevice.h:215
RenderTarget * getRenderTarget(const RenderTargetID target) const
Definition: GFXRTPool.cpp:50
vector< RenderTarget_uptr > _renderTargets
Definition: GFXRTPool.h:55
GFXDevice & _parent
Definition: GFXRTPool.h:53
RenderTargetHandle allocateRT(const RenderTargetDescriptor &descriptor)
Definition: GFXRTPool.cpp:17
SharedMutex _renderTargetLock
Definition: GFXRTPool.h:54
RenderTargetID _renderTargetIndex
Definition: GFXRTPool.h:56
bool deallocateRT(RenderTargetHandle &handle)
Definition: GFXRTPool.cpp:33
GFXRTPool(GFXDevice &parent)
Definition: GFXRTPool.cpp:12
Handle console commands that start with a forward slash.
Definition: AIProcessor.cpp:7
std::lock_guard< mutex > LockGuard
Definition: SharedMutex.h:55
std::shared_lock< mutex > SharedLock
Definition: SharedMutex.h:49
Project & parent
Definition: DefaultScene.h:41
constexpr RenderTargetID INVALID_RENDER_TARGET_ID
U32 RenderTargetID
constexpr auto to_base(const Type value) -> Type
RenderTargetID _targetID
Definition: RenderTarget.h:47