mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-11-13 01:29:41 +01:00
Simpler way to deal with the GL deleter
This commit is contained in:
1 parent
bd2c875c9a
commit
3a988400a7
4 files changed
+60
-23
No files matched your search
@@ -13,7 +13,6 @@
|
||||
#endif
|
||||
|
||||
void GLDeleter::Perform() {
|
||||
deleterMutex_.lock();
|
||||
for (auto shader : shaders) {
|
||||
delete shader;
|
||||
}
|
||||
@@ -38,7 +37,6 @@ void GLDeleter::Perform() {
|
||||
delete framebuffer;
|
||||
}
|
||||
framebuffers.clear();
|
||||
deleterMutex_.unlock();
|
||||
}
|
||||
|
||||
GLRenderManager::GLRenderManager() {
|
||||
@@ -357,8 +355,6 @@ void GLRenderManager::Finish() {
|
||||
frameData.pull_condVar.notify_all();
|
||||
}
|
||||
|
||||
frameData_[curFrame_].deleter.Take(deleter_);
|
||||
|
||||
curFrame_++;
|
||||
if (curFrame_ >= MAX_INFLIGHT_FRAMES)
|
||||
curFrame_ = 0;
|
||||
@@ -380,10 +376,6 @@ void GLRenderManager::Submit(int frame, bool triggerFence) {
|
||||
|
||||
// When !triggerFence, we notify after syncing with Vulkan.
|
||||
|
||||
// Putting deletes here is safe but only because OpenGL has its own delete handling..
|
||||
// ideally we'd like to wait a frame or two.
|
||||
frameData.deleter.Perform();
|
||||
|
||||
if (useThread_ && triggerFence) {
|
||||
VLOG("PULL: Frame %d.readyForFence = true", frame);
|
||||
|
||||
@@ -414,6 +406,10 @@ void GLRenderManager::Run(int frame) {
|
||||
BeginSubmitFrame(frame);
|
||||
|
||||
FrameData &frameData = frameData_[frame];
|
||||
|
||||
// Delete stuff from the last round.
|
||||
frameData.deleter_prev.Perform();
|
||||
|
||||
auto &stepsOnThread = frameData_[frame].steps;
|
||||
auto &initStepsOnThread = frameData_[frame].initSteps;
|
||||
// queueRunner_.LogSteps(stepsOnThread);
|
||||
@@ -424,6 +420,7 @@ void GLRenderManager::Run(int frame) {
|
||||
|
||||
switch (frameData.type) {
|
||||
case GLRRunType::END:
|
||||
frameData.deleter_prev.Take(frameData.deleter);
|
||||
EndSubmitFrame(frame);
|
||||
break;
|
||||
|
||||
|
||||
Reference in new issue
Block a user