|
|
|
@ -54,6 +54,8 @@ MICROPROFILE_DEFINE(OpenGL_PrimitiveAssembly, "OpenGL", "Prim Asmbl", MP_RGB(255 |
|
|
|
|
|
|
|
namespace { |
|
|
|
|
|
|
|
constexpr std::size_t NumSupportedVertexAttributes = 16; |
|
|
|
|
|
|
|
template <typename Engine, typename Entry> |
|
|
|
Tegra::Texture::FullTextureInfo GetTextureInfo(const Engine& engine, const Entry& entry, |
|
|
|
Tegra::Engines::ShaderType shader_type, |
|
|
|
@ -134,7 +136,7 @@ void RasterizerOpenGL::SetupVertexFormat() { |
|
|
|
// avoid OpenGL errors.
|
|
|
|
// TODO(Subv): Analyze the shader to identify which attributes are actually used and don't
|
|
|
|
// assume every shader uses them all.
|
|
|
|
for (std::size_t index = 0; index < 16; ++index) { |
|
|
|
for (std::size_t index = 0; index < NumSupportedVertexAttributes; ++index) { |
|
|
|
if (!flags[Dirty::VertexFormat0 + index]) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
@ -207,7 +209,7 @@ void RasterizerOpenGL::SetupVertexInstances() { |
|
|
|
flags[Dirty::VertexInstances] = false; |
|
|
|
|
|
|
|
const auto& regs = gpu.regs; |
|
|
|
for (std::size_t index = 0; index < 16; ++index) { |
|
|
|
for (std::size_t index = 0; index < NumSupportedVertexAttributes; ++index) { |
|
|
|
if (!flags[Dirty::VertexInstance0 + index]) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
|