Added config editor in front end
This commit is contained in:
@@ -8,8 +8,8 @@
|
||||
#include "InputFrameTexture.h"
|
||||
#include "readback/OutputReadbackPipeline.h"
|
||||
#include "GLExtensions.h"
|
||||
#include "RuntimeRenderScene.h"
|
||||
#include "SimpleMotionRenderer.h"
|
||||
#include "RenderContent.h"
|
||||
#include "RuntimeShaderRenderContent.h"
|
||||
|
||||
#include <memory>
|
||||
#include <thread>
|
||||
@@ -41,19 +41,13 @@ void RenderThread::ThreadMain()
|
||||
return;
|
||||
}
|
||||
|
||||
SimpleMotionRenderer renderer;
|
||||
RuntimeRenderScene runtimeRenderScene;
|
||||
RuntimeShaderRenderContent renderContent;
|
||||
OutputReadbackPipeline readback;
|
||||
InputFrameTexture inputTexture;
|
||||
if (!runtimeRenderScene.StartPrepareWorker(std::move(prepareWindow), error))
|
||||
{
|
||||
SignalStartupFailure(error.empty() ? "Runtime shader prepare worker initialization failed." : error);
|
||||
return;
|
||||
}
|
||||
if (!renderer.InitializeGl(mConfig.width, mConfig.height) ||
|
||||
if (!renderContent.InitializeGl(RenderContentGlConfig{ mConfig.width, mConfig.height, std::move(prepareWindow) }, error) ||
|
||||
!readback.Initialize(mConfig.width, mConfig.height, mConfig.outputPixelFormat, mConfig.pboDepth))
|
||||
{
|
||||
SignalStartupFailure("Render pipeline initialization failed.");
|
||||
SignalStartupFailure(error.empty() ? "Render pipeline initialization failed." : error);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -82,16 +76,16 @@ void RenderThread::ThreadMain()
|
||||
continue;
|
||||
}
|
||||
|
||||
TryCommitReadyRuntimeShader(runtimeRenderScene);
|
||||
TryCommitReadyRuntimeShader(renderContent);
|
||||
const GLuint videoInputTexture = inputTexture.PollAndUpload(mInputMailbox);
|
||||
PublishInputMetrics(inputTexture);
|
||||
if (!readback.RenderAndQueue(frameIndex, [this, &renderer, &runtimeRenderScene, videoInputTexture](uint64_t index) {
|
||||
if (runtimeRenderScene.HasLayers())
|
||||
runtimeRenderScene.RenderFrame(index, mConfig.width, mConfig.height, videoInputTexture);
|
||||
else if (videoInputTexture != 0)
|
||||
renderer.RenderTexture(videoInputTexture);
|
||||
else
|
||||
renderer.RenderFrame(index);
|
||||
if (!readback.RenderAndQueue(frameIndex, [this, &renderContent, videoInputTexture](uint64_t index) {
|
||||
renderContent.RenderFrame(RenderContentFrame{
|
||||
index,
|
||||
mConfig.width,
|
||||
mConfig.height,
|
||||
videoInputTexture
|
||||
});
|
||||
}))
|
||||
{
|
||||
mPboQueueMisses.fetch_add(1, std::memory_order_relaxed);
|
||||
@@ -120,8 +114,7 @@ void RenderThread::ThreadMain()
|
||||
|
||||
readback.Shutdown();
|
||||
inputTexture.ShutdownGl();
|
||||
runtimeRenderScene.ShutdownGl();
|
||||
renderer.ShutdownGl();
|
||||
renderContent.ShutdownGl();
|
||||
window.ClearCurrent();
|
||||
mRunning.store(false, std::memory_order_release);
|
||||
RenderCadenceCompositor::TryLog(RenderCadenceCompositor::LogLevel::Log, "render-thread", "Render thread stopped.");
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
#include "RenderCadenceClock.h"
|
||||
#include "RuntimeLayerModel.h"
|
||||
#include "RuntimeShaderArtifact.h"
|
||||
#include "RuntimeRenderScene.h"
|
||||
#include "VideoIOFormat.h"
|
||||
|
||||
#include <atomic>
|
||||
@@ -18,6 +17,7 @@ class SystemFrameExchange;
|
||||
class InputFrameMailbox;
|
||||
class InputFrameTexture;
|
||||
class OutputReadbackPipeline;
|
||||
class RuntimeShaderRenderContent;
|
||||
|
||||
class RenderThread
|
||||
{
|
||||
@@ -81,7 +81,7 @@ private:
|
||||
void CountAcquireMiss();
|
||||
void PublishReadbackMetrics(const OutputReadbackPipeline& readback);
|
||||
void PublishInputMetrics(const InputFrameTexture& inputTexture);
|
||||
void TryCommitReadyRuntimeShader(RuntimeRenderScene& runtimeRenderScene);
|
||||
void TryCommitReadyRuntimeShader(RuntimeShaderRenderContent& renderContent);
|
||||
bool TryTakePendingRuntimeShaderArtifact(RuntimeShaderArtifact& artifact);
|
||||
bool TryTakePendingRenderLayers(std::vector<RenderCadenceCompositor::RuntimeRenderLayerModel>& layers);
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "RenderThread.h"
|
||||
|
||||
#include "../logging/Logger.h"
|
||||
#include "RuntimeShaderRenderContent.h"
|
||||
|
||||
#include <mutex>
|
||||
#include <utility>
|
||||
@@ -47,14 +48,14 @@ bool RenderThread::TryTakePendingRenderLayers(std::vector<RenderCadenceComposito
|
||||
return true;
|
||||
}
|
||||
|
||||
void RenderThread::TryCommitReadyRuntimeShader(RuntimeRenderScene& runtimeRenderScene)
|
||||
void RenderThread::TryCommitReadyRuntimeShader(RuntimeShaderRenderContent& renderContent)
|
||||
{
|
||||
std::vector<RenderCadenceCompositor::RuntimeRenderLayerModel> layers;
|
||||
std::string commitError;
|
||||
if (TryTakePendingRenderLayers(layers))
|
||||
{
|
||||
bool structuralChange = false;
|
||||
if (!runtimeRenderScene.CommitRenderLayers(layers, commitError, &structuralChange))
|
||||
if (!renderContent.CommitRenderLayers(layers, commitError, &structuralChange))
|
||||
{
|
||||
RenderCadenceCompositor::TryLog(
|
||||
RenderCadenceCompositor::LogLevel::Error,
|
||||
@@ -84,7 +85,7 @@ void RenderThread::TryCommitReadyRuntimeShader(RuntimeRenderScene& runtimeRender
|
||||
layer.shaderId = artifact.shaderId;
|
||||
layer.artifact = artifact;
|
||||
layers.push_back(std::move(layer));
|
||||
if (!runtimeRenderScene.CommitRenderLayers(layers, commitError))
|
||||
if (!renderContent.CommitRenderLayers(layers, commitError))
|
||||
{
|
||||
RenderCadenceCompositor::TryLog(
|
||||
RenderCadenceCompositor::LogLevel::Error,
|
||||
|
||||
Reference in New Issue
Block a user