Polyphase Game Engine
Loading...
Searching...
No Matches
MaterialPipelineCache.h
Go to the documentation of this file.
1#pragma once
2
3#include "EngineTypes.h"
5#include "VulkanTypes.h"
6#include "Pipeline.h"
7
8#include <unordered_map>
9#include <unordered_set>
10#include <vector>
11
12#if 0
13
14struct MaterialPipelineRequest
15{
16 uint32_t mId = 0;
17};
18
19struct MaterialPipelineResult
20{
21 uint32_t mId = 0;
22 Pipeline* mPipeline = nullptr;
23};
24
25class MaterialPipelineCache
26{
27public:
28
29 void Create();
30 void Destroy();
31
32 Pipeline* GetPipeline(Material* material, VertexType vertexType);
33 Pipeline* GetPipeline(uint32_t id, VertexType vertexType);
34 uint32_t GetNumPipelines() const;
35 void Reset();
36 void Update();
37 void Enable(bool enable);
38
39 uint32_t GetMaxPipelines() const;
40 void SetMaxPipelines(uint32_t maxPipelines);
41
42protected:
43
44 static ThreadFuncRet BuildThreadFunc(void* arg);
45
46 // These two data structures can be queried on main thread without locking mutex.
47 std::unordered_map<uint32_t, Pipeline*> mPipelines;
48 uint32_t mMaxPipelines = 256;
49
50 MutexObject* mMutex = nullptr;
51 //CondObject* mWorkCondition = nullptr;
52 std::vector<MaterialPipelineRequest> mRequests;
53 std::vector<MaterialPipelineResult> mResults;
54 VkRenderPass mRenderPass;
55 bool mEnabled = false;
56
57 ThreadObject* mBuildThread = nullptr;
58};
59
60#endif
bool Update()
Definition Engine.cpp:710
VertexType
Definition Vertex.h:7
Definition Material.h:48
void Enable(bool enable)
Definition ImGuizmo.cpp:1055