summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2020-04-14 17:58:53 -0300
committerReinUsesLisp <reinuseslisp@airmail.cc>2020-04-14 17:58:53 -0300
commit6dfcabc80028fd35a6d0e20d20eb8db8053eddf1 (patch)
tree5b99ff41eefd14efd5a117c3bf52df36e07311b0 /src
parent7e4a132a77fd1c2d48b1410ac1f1da81869daa90 (diff)
gl_rasterizer: Implement constant vertex attributes
Credits go to gdkchan from Ryujinx for finding constant attributes are used in retail games.
Diffstat (limited to 'src')
-rw-r--r--src/video_core/engines/maxwell_3d.h4
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp4
2 files changed, 6 insertions, 2 deletions
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h
index 2977a7d81..5cf6a4cc3 100644
--- a/src/video_core/engines/maxwell_3d.h
+++ b/src/video_core/engines/maxwell_3d.h
@@ -303,6 +303,10 @@ public:
return (type == Type::SignedNorm) || (type == Type::UnsignedNorm);
}
+ bool IsConstant() const {
+ return constant;
+ }
+
bool IsValid() const {
return size != Size::Invalid;
}
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index f31d960c7..f4598fbf7 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -140,8 +140,8 @@ void RasterizerOpenGL::SetupVertexFormat() {
const auto attrib = gpu.regs.vertex_attrib_format[index];
const auto gl_index = static_cast<GLuint>(index);
- // Ignore invalid attributes.
- if (!attrib.IsValid()) {
+ // Disable constant attributes.
+ if (attrib.IsConstant()) {
glDisableVertexAttribArray(gl_index);
continue;
}