gl_rasterizer: Implement constant vertex attributes

Credits go to gdkchan from Ryujinx for finding constant attributes are
used in retail games.
This commit is contained in:
ReinUsesLisp 2020-04-14 17:58:53 -03:00
parent 7e4a132a77
commit 6dfcabc800
2 changed files with 6 additions and 2 deletions

View file

@ -303,6 +303,10 @@ public:
return (type == Type::SignedNorm) || (type == Type::UnsignedNorm); return (type == Type::SignedNorm) || (type == Type::UnsignedNorm);
} }
bool IsConstant() const {
return constant;
}
bool IsValid() const { bool IsValid() const {
return size != Size::Invalid; return size != Size::Invalid;
} }

View file

@ -140,8 +140,8 @@ void RasterizerOpenGL::SetupVertexFormat() {
const auto attrib = gpu.regs.vertex_attrib_format[index]; const auto attrib = gpu.regs.vertex_attrib_format[index];
const auto gl_index = static_cast<GLuint>(index); const auto gl_index = static_cast<GLuint>(index);
// Ignore invalid attributes. // Disable constant attributes.
if (!attrib.IsValid()) { if (attrib.IsConstant()) {
glDisableVertexAttribArray(gl_index); glDisableVertexAttribArray(gl_index);
continue; continue;
} }