mirror of
https://github.com/skyline-emu/skyline.git
synced 2024-11-30 08:14:17 +01:00
Always keep the VertexB shader stage enabled
HW doesn't allow disabling the VertexB stage, enforce this in code.
This commit is contained in:
parent
d5174175d1
commit
b1c669ba14
@ -765,7 +765,7 @@ namespace skyline::gpu::interconnect {
|
||||
span<u8> bytecode{}; //!< A span of the shader bytecode inside the backing storage
|
||||
std::shared_ptr<ShaderManager::ShaderProgram> program{};
|
||||
|
||||
Shader(ShaderCompiler::Stage stage) : stage(stage) {}
|
||||
Shader(ShaderCompiler::Stage stage, bool enabled = false) : stage(stage), enabled(enabled) {}
|
||||
|
||||
maxwell3d::PipelineStage ToPipelineStage() {
|
||||
using ShaderStage = ShaderCompiler::Stage;
|
||||
@ -796,7 +796,7 @@ namespace skyline::gpu::interconnect {
|
||||
struct ShaderSet : public std::array<Shader, maxwell3d::ShaderStageCount> {
|
||||
ShaderSet() : array{
|
||||
Shader{ShaderCompiler::Stage::VertexA},
|
||||
Shader{ShaderCompiler::Stage::VertexB},
|
||||
Shader{ShaderCompiler::Stage::VertexB, true}, // VertexB cannot be disabled and must be enabled by default
|
||||
Shader{ShaderCompiler::Stage::TessellationControl},
|
||||
Shader{ShaderCompiler::Stage::TessellationEval},
|
||||
Shader{ShaderCompiler::Stage::Geometry},
|
||||
@ -1263,9 +1263,13 @@ namespace skyline::gpu::interconnect {
|
||||
|
||||
void SetShaderEnabled(maxwell3d::ShaderStage stage, bool enabled) {
|
||||
auto &shader{shaders[stage]};
|
||||
|
||||
// VertexB shaders cannot be disabled in HW so ignore any attempts to disable them
|
||||
if (stage != maxwell3d::ShaderStage::VertexB) {
|
||||
shader.enabled = enabled;
|
||||
shader.invalidated = true;
|
||||
}
|
||||
}
|
||||
|
||||
void SetShaderOffset(maxwell3d::ShaderStage stage, u32 offset) {
|
||||
auto &shader{shaders[stage]};
|
||||
|
Loading…
Reference in New Issue
Block a user