summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_graphics_pipeline.h
diff options
context:
space:
mode:
authorameerj <52414509+ameerj@users.noreply.github.com>2021-06-15 03:06:29 +0200
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-23 03:51:38 +0200
commit74f683787eeba7b6e8f5868134f445240733f8fd (patch)
tree880306114a423a5854172bc9e4b66e20be1932e6 /src/video_core/renderer_opengl/gl_graphics_pipeline.h
parentglsl: Add Shader_GLSL logging (diff)
downloadyuzu-74f683787eeba7b6e8f5868134f445240733f8fd.tar
yuzu-74f683787eeba7b6e8f5868134f445240733f8fd.tar.gz
yuzu-74f683787eeba7b6e8f5868134f445240733f8fd.tar.bz2
yuzu-74f683787eeba7b6e8f5868134f445240733f8fd.tar.lz
yuzu-74f683787eeba7b6e8f5868134f445240733f8fd.tar.xz
yuzu-74f683787eeba7b6e8f5868134f445240733f8fd.tar.zst
yuzu-74f683787eeba7b6e8f5868134f445240733f8fd.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_opengl/gl_graphics_pipeline.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/video_core/renderer_opengl/gl_graphics_pipeline.h b/src/video_core/renderer_opengl/gl_graphics_pipeline.h
index dc791be53..58deafd3c 100644
--- a/src/video_core/renderer_opengl/gl_graphics_pipeline.h
+++ b/src/video_core/renderer_opengl/gl_graphics_pipeline.h
@@ -20,10 +20,15 @@
namespace OpenGL {
+namespace ShaderContext {
+struct Context;
+}
+
class Device;
class ProgramManager;
using Maxwell = Tegra::Engines::Maxwell3D::Regs;
+using ShaderWorker = Common::StatefulThreadWorker<ShaderContext::Context>;
struct GraphicsPipelineKey {
std::array<u64, 6> unique_hashes;
@@ -65,8 +70,8 @@ public:
BufferCache& buffer_cache_, Tegra::MemoryManager& gpu_memory_,
Tegra::Engines::Maxwell3D& maxwell3d_,
ProgramManager& program_manager_, StateTracker& state_tracker_,
- std::array<std::string, 5> assembly_sources,
- std::array<std::string, 5> glsl_sources,
+ ShaderWorker* thread_worker, VideoCore::ShaderNotify* shader_notify,
+ std::array<std::string, 5> sources,
const std::array<const Shader::Info*, 5>& infos,
const VideoCommon::TransformFeedbackState* xfb_state);
@@ -82,6 +87,10 @@ public:
return writes_global_memory;
}
+ [[nodiscard]] bool IsBuilt() const noexcept {
+ return is_built.load(std::memory_order::relaxed);
+ }
+
private:
void GenerateTransformFeedbackState(const VideoCommon::TransformFeedbackState& xfb_state);
@@ -108,6 +117,7 @@ private:
bool use_storage_buffers{};
bool writes_global_memory{};
+ std::atomic_bool is_built{false};
static constexpr std::size_t XFB_ENTRY_STRIDE = 3;
GLsizei num_xfb_attribs{};