Просмотр исходного кода

maxwell_to_gl: Add module and function for decoding VertexType.

bunnei 8 лет назад
Родитель
Сommit
4369af6b7e
2 измененных файлов с 41 добавлено и 0 удалено
  1. 1 0
      src/video_core/CMakeLists.txt
  2. 40 0
      src/video_core/renderer_opengl/maxwell_to_gl.h

+ 1 - 0
src/video_core/CMakeLists.txt

@@ -31,6 +31,7 @@ add_library(video_core STATIC
     renderer_opengl/gl_state.h
     renderer_opengl/gl_stream_buffer.cpp
     renderer_opengl/gl_stream_buffer.h
+    renderer_opengl/maxwell_to_gl.h
     renderer_opengl/renderer_opengl.cpp
     renderer_opengl/renderer_opengl.h
     textures/decoders.cpp

+ 40 - 0
src/video_core/renderer_opengl/maxwell_to_gl.h

@@ -0,0 +1,40 @@
+// Copyright 2018 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <array>
+#include <glad/glad.h>
+#include "common/common_types.h"
+#include "common/logging/log.h"
+#include "video_core/engines/maxwell_3d.h"
+
+namespace MaxwellToGL {
+
+using Maxwell = Tegra::Engines::Maxwell3D::Regs;
+
+inline GLenum VertexType(Maxwell::VertexAttribute attrib) {
+    switch (attrib.type) {
+    case Maxwell::VertexAttribute::Type::UnsignedNorm: {
+
+        switch (attrib.size) {
+        case Maxwell::VertexAttribute::Size::Size_8_8_8_8:
+            return GL_UNSIGNED_BYTE;
+        }
+
+        LOG_CRITICAL(Render_OpenGL, "Unimplemented vertex size=%s", attrib.SizeString());
+        UNREACHABLE();
+        return {};
+    }
+
+    case Maxwell::VertexAttribute::Type::Float:
+        return GL_FLOAT;
+    }
+
+    LOG_CRITICAL(Render_OpenGL, "Unimplemented vertex type=%s", attrib.TypeString());
+    UNREACHABLE();
+    return {};
+}
+
+} // namespace MaxwellToGL