|
|
@@ -201,4 +201,54 @@ inline GLenum SwizzleSource(Tegra::Texture::SwizzleSource source) {
|
|
|
return {};
|
|
|
}
|
|
|
|
|
|
+inline GLenum ComparisonOp(Maxwell::ComparisonOp comparison) {
|
|
|
+ switch (comparison) {
|
|
|
+ case Maxwell::ComparisonOp::Never:
|
|
|
+ return GL_NEVER;
|
|
|
+ case Maxwell::ComparisonOp::Less:
|
|
|
+ return GL_LESS;
|
|
|
+ case Maxwell::ComparisonOp::Equal:
|
|
|
+ return GL_EQUAL;
|
|
|
+ case Maxwell::ComparisonOp::LessEqual:
|
|
|
+ return GL_LEQUAL;
|
|
|
+ case Maxwell::ComparisonOp::Greater:
|
|
|
+ return GL_GREATER;
|
|
|
+ case Maxwell::ComparisonOp::NotEqual:
|
|
|
+ return GL_NOTEQUAL;
|
|
|
+ case Maxwell::ComparisonOp::GreaterEqual:
|
|
|
+ return GL_GEQUAL;
|
|
|
+ case Maxwell::ComparisonOp::Always:
|
|
|
+ return GL_ALWAYS;
|
|
|
+ }
|
|
|
+ NGLOG_CRITICAL(Render_OpenGL, "Unimplemented comparison op={}", static_cast<u32>(comparison));
|
|
|
+ UNREACHABLE();
|
|
|
+ return {};
|
|
|
+}
|
|
|
+
|
|
|
+inline GLenum FrontFace(Maxwell::Cull::FrontFace front_face) {
|
|
|
+ switch (front_face) {
|
|
|
+ case Maxwell::Cull::FrontFace::ClockWise:
|
|
|
+ return GL_CW;
|
|
|
+ case Maxwell::Cull::FrontFace::CounterClockWise:
|
|
|
+ return GL_CCW;
|
|
|
+ }
|
|
|
+ NGLOG_CRITICAL(Render_OpenGL, "Unimplemented front face cull={}", static_cast<u32>(front_face));
|
|
|
+ UNREACHABLE();
|
|
|
+ return {};
|
|
|
+}
|
|
|
+
|
|
|
+inline GLenum CullFace(Maxwell::Cull::CullFace cull_face) {
|
|
|
+ switch (cull_face) {
|
|
|
+ case Maxwell::Cull::CullFace::Front:
|
|
|
+ return GL_FRONT;
|
|
|
+ case Maxwell::Cull::CullFace::Back:
|
|
|
+ return GL_BACK;
|
|
|
+ case Maxwell::Cull::CullFace::FrontAndBack:
|
|
|
+ return GL_FRONT_AND_BACK;
|
|
|
+ }
|
|
|
+ NGLOG_CRITICAL(Render_OpenGL, "Unimplemented cull face={}", static_cast<u32>(cull_face));
|
|
|
+ UNREACHABLE();
|
|
|
+ return {};
|
|
|
+}
|
|
|
+
|
|
|
} // namespace MaxwellToGL
|