mirror of
https://github.com/skyline-emu/skyline.git
synced 2024-11-27 03:04:16 +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
|
span<u8> bytecode{}; //!< A span of the shader bytecode inside the backing storage
|
||||||
std::shared_ptr<ShaderManager::ShaderProgram> program{};
|
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() {
|
maxwell3d::PipelineStage ToPipelineStage() {
|
||||||
using ShaderStage = ShaderCompiler::Stage;
|
using ShaderStage = ShaderCompiler::Stage;
|
||||||
@ -796,7 +796,7 @@ namespace skyline::gpu::interconnect {
|
|||||||
struct ShaderSet : public std::array<Shader, maxwell3d::ShaderStageCount> {
|
struct ShaderSet : public std::array<Shader, maxwell3d::ShaderStageCount> {
|
||||||
ShaderSet() : array{
|
ShaderSet() : array{
|
||||||
Shader{ShaderCompiler::Stage::VertexA},
|
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::TessellationControl},
|
||||||
Shader{ShaderCompiler::Stage::TessellationEval},
|
Shader{ShaderCompiler::Stage::TessellationEval},
|
||||||
Shader{ShaderCompiler::Stage::Geometry},
|
Shader{ShaderCompiler::Stage::Geometry},
|
||||||
@ -1263,9 +1263,13 @@ namespace skyline::gpu::interconnect {
|
|||||||
|
|
||||||
void SetShaderEnabled(maxwell3d::ShaderStage stage, bool enabled) {
|
void SetShaderEnabled(maxwell3d::ShaderStage stage, bool enabled) {
|
||||||
auto &shader{shaders[stage]};
|
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.enabled = enabled;
|
||||||
shader.invalidated = true;
|
shader.invalidated = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SetShaderOffset(maxwell3d::ShaderStage stage, u32 offset) {
|
void SetShaderOffset(maxwell3d::ShaderStage stage, u32 offset) {
|
||||||
auto &shader{shaders[stage]};
|
auto &shader{shaders[stage]};
|
||||||
|
Loading…
Reference in New Issue
Block a user