diff options
author | wwylele <wwylele@gmail.com> | 2017-08-04 16:03:17 +0200 |
---|---|---|
committer | wwylele <wwylele@gmail.com> | 2017-08-19 09:13:20 +0200 |
commit | 0f35755572fe63534813528de9a0710193f2e335 (patch) | |
tree | b0eeedaff959cde5195e1d5cf1a3c784954f5273 /src/video_core/geometry_pipeline.h | |
parent | pica/shader/jit: implement SETEMIT and EMIT (diff) | |
download | yuzu-0f35755572fe63534813528de9a0710193f2e335.tar yuzu-0f35755572fe63534813528de9a0710193f2e335.tar.gz yuzu-0f35755572fe63534813528de9a0710193f2e335.tar.bz2 yuzu-0f35755572fe63534813528de9a0710193f2e335.tar.lz yuzu-0f35755572fe63534813528de9a0710193f2e335.tar.xz yuzu-0f35755572fe63534813528de9a0710193f2e335.tar.zst yuzu-0f35755572fe63534813528de9a0710193f2e335.zip |
Diffstat (limited to 'src/video_core/geometry_pipeline.h')
-rw-r--r-- | src/video_core/geometry_pipeline.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/video_core/geometry_pipeline.h b/src/video_core/geometry_pipeline.h new file mode 100644 index 000000000..91fdd3192 --- /dev/null +++ b/src/video_core/geometry_pipeline.h @@ -0,0 +1,49 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <memory> +#include "video_core/shader/shader.h" + +namespace Pica { + +struct State; + +class GeometryPipelineBackend; + +/// A pipeline receiving from vertex shader and sending to geometry shader and primitive assembler +class GeometryPipeline { +public: + explicit GeometryPipeline(State& state); + ~GeometryPipeline(); + + /// Sets the handler for receiving vertex outputs from vertex shader + void SetVertexHandler(Shader::VertexHandler vertex_handler); + + /** + * Setup the geometry shader unit if it is in use + * @param shader_engine the shader engine for the geometry shader to run + */ + void Setup(Shader::ShaderEngine* shader_engine); + + /// Reconfigures the pipeline according to current register settings + void Reconfigure(); + + /// Checks if the pipeline needs a direct input from index buffer + bool NeedIndexInput() const; + + /// Submits an index from index buffer. Call this only when NeedIndexInput returns true + void SubmitIndex(unsigned int val); + + /// Submits vertex attributes output from vertex shader + void SubmitVertex(const Shader::AttributeBuffer& input); + +private: + Shader::VertexHandler vertex_handler; + Shader::ShaderEngine* shader_engine; + std::unique_ptr<GeometryPipelineBackend> backend; + State& state; +}; +} // namespace Pica |