mirror of
https://github.com/skyline-emu/skyline.git
synced 2024-11-27 00:34:20 +01:00
Zero-out unused XFB varyings before passing to hades
This commit is contained in:
parent
22f3ba6b93
commit
b74098570f
@ -3,6 +3,7 @@
|
|||||||
// Copyright © 2022 yuzu Team and Contributors (https://github.com/yuzu-emu/)
|
// Copyright © 2022 yuzu Team and Contributors (https://github.com/yuzu-emu/)
|
||||||
// Copyright © 2022 Skyline Team and Contributors (https://github.com/skyline-emu/)
|
// Copyright © 2022 Skyline Team and Contributors (https://github.com/skyline-emu/)
|
||||||
|
|
||||||
|
#include <range/v3/algorithm.hpp>
|
||||||
#include "packed_pipeline_state.h"
|
#include "packed_pipeline_state.h"
|
||||||
|
|
||||||
#pragma clang diagnostic push
|
#pragma clang diagnostic push
|
||||||
@ -312,22 +313,27 @@ namespace skyline::gpu::interconnect::maxwell3d {
|
|||||||
transformFeedbackVaryings[attributeIndex] = {
|
transformFeedbackVaryings[attributeIndex] = {
|
||||||
.buffer = static_cast<u8>(buffer),
|
.buffer = static_cast<u8>(buffer),
|
||||||
.offsetWords = static_cast<u8>(i),
|
.offsetWords = static_cast<u8>(i),
|
||||||
.stride = static_cast<u16>(control.strideBytes)
|
.stride = static_cast<u16>(control.strideBytes),
|
||||||
|
.valid = true
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<Shader::TransformFeedbackVarying> PackedPipelineState::GetTransformFeedbackVaryings() const {
|
std::vector<Shader::TransformFeedbackVarying> PackedPipelineState::GetTransformFeedbackVaryings() const {
|
||||||
std::vector<Shader::TransformFeedbackVarying> convertedVaryings;
|
std::vector<Shader::TransformFeedbackVarying> convertedVaryings;
|
||||||
convertedVaryings.reserve(0x100);
|
convertedVaryings.resize(0x100);
|
||||||
for (const auto &varying : transformFeedbackVaryings)
|
ranges::transform(transformFeedbackVaryings, convertedVaryings.begin(), [](auto &varying) {
|
||||||
convertedVaryings.push_back(
|
if (varying.valid) {
|
||||||
{
|
return Shader::TransformFeedbackVarying{
|
||||||
.buffer = varying.buffer,
|
.buffer = varying.buffer,
|
||||||
.stride = varying.stride,
|
.stride = varying.stride,
|
||||||
.offset = varying.offsetWords * 4U,
|
.offset = varying.offsetWords * 4U,
|
||||||
.components = 1,
|
.components = 1,
|
||||||
});
|
};
|
||||||
|
} else {
|
||||||
|
return Shader::TransformFeedbackVarying{};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return convertedVaryings;
|
return convertedVaryings;
|
||||||
}
|
}
|
||||||
|
@ -98,7 +98,8 @@ namespace skyline::gpu::interconnect::maxwell3d {
|
|||||||
struct TransformFeedbackVarying {
|
struct TransformFeedbackVarying {
|
||||||
u16 stride;
|
u16 stride;
|
||||||
u8 offsetWords;
|
u8 offsetWords;
|
||||||
u8 buffer;
|
u8 buffer : 7;
|
||||||
|
bool valid : 1;
|
||||||
};
|
};
|
||||||
std::array<TransformFeedbackVarying, 0x100> transformFeedbackVaryings{};
|
std::array<TransformFeedbackVarying, 0x100> transformFeedbackVaryings{};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user