From eb48b871d8e460e498d17c5ad6b2dc5cf9e1059e Mon Sep 17 00:00:00 2001 From: goeiecool9999 <7033575+goeiecool9999@users.noreply.github.com> Date: Thu, 22 Jan 2026 20:13:36 +0100 Subject: [PATCH] Revert "Remove LatteDraw header and deprecated shader compilation code" This reverts commit 657d9f6f431c34ff905436c11817b76e97107a00. Revert "C++-ify GL default shader code" This reverts commit 81a6f92f8d43fdcc344346111fc1ccdf8a534d5d. --- src/Cafe/CMakeLists.txt | 3 +- src/Cafe/HW/Latte/Core/FetchShader.cpp | 1 + src/Cafe/HW/Latte/Core/LatteBufferData.cpp | 1 + .../HW/Latte/Core/LatteCommandProcessor.cpp | 1 + .../HW/Latte/Core/LatteDefaultShaders.cpp | 83 +++++++----- src/Cafe/HW/Latte/Core/LatteDefaultShaders.h | 1 - src/Cafe/HW/Latte/Core/LatteDraw.h | 4 + src/Cafe/HW/Latte/Core/LatteQuery.cpp | 1 + src/Cafe/HW/Latte/Core/LatteRenderTarget.cpp | 2 +- src/Cafe/HW/Latte/Core/LatteShaderGL.cpp | 119 ++++++++++++++++++ src/Cafe/HW/Latte/Core/LatteStreamoutGPU.cpp | 1 + src/Cafe/HW/Latte/Core/LatteSurfaceCopy.cpp | 1 + src/Cafe/HW/Latte/Core/LatteTextureCache.cpp | 1 + .../HW/Latte/Core/LatteTextureReadback.cpp | 1 + src/Cafe/HW/Latte/Core/LatteThread.cpp | 1 + .../LatteDecompiler.cpp | 1 + .../LatteDecompilerEmitGLSL.cpp | 1 + .../LatteDecompilerEmitGLSLAttrDecoder.cpp | 1 + .../LatteDecompilerEmitMSL.cpp | 1 + .../LatteDecompilerEmitMSLAttrDecoder.cpp | 1 + .../Latte/Renderer/OpenGL/OpenGLRenderer.cpp | 1 + .../Renderer/OpenGL/OpenGLRendererCore.cpp | 1 + .../Renderer/OpenGL/OpenGLSurfaceCopy.cpp | 1 + src/Cafe/OS/libs/gx2/GX2_Command.cpp | 1 + src/Cafe/OS/libs/gx2/GX2_ContextState.cpp | 1 + src/Cafe/OS/libs/gx2/GX2_Draw.cpp | 1 + src/Cafe/OS/libs/gx2/GX2_Memory.cpp | 1 + src/Cafe/OS/libs/gx2/GX2_RenderTarget.cpp | 1 + src/Cafe/OS/libs/gx2/GX2_Surface.cpp | 1 + src/Cafe/OS/libs/gx2/GX2_Surface_Copy.cpp | 1 + src/Cafe/OS/libs/gx2/GX2_Texture.cpp | 1 + src/Cafe/OS/libs/gx2/GX2_shader_legacy.cpp | 1 + src/Cafe/OS/libs/swkbd/swkbd.cpp | 1 + 33 files changed, 204 insertions(+), 35 deletions(-) create mode 100644 src/Cafe/HW/Latte/Core/LatteDraw.h diff --git a/src/Cafe/CMakeLists.txt b/src/Cafe/CMakeLists.txt index eb1db4f6..78a8cce0 100644 --- a/src/Cafe/CMakeLists.txt +++ b/src/Cafe/CMakeLists.txt @@ -108,7 +108,8 @@ add_library(CemuCafe HW/Latte/Core/LatteConst.h HW/Latte/Core/LatteDefaultShaders.cpp HW/Latte/Core/LatteDefaultShaders.h - HW/Latte/Core/LatteGSCopyShaderParser.cpp + HW/Latte/Core/LatteDraw.h + HW/Latte/Core/LatteGSCopyShaderParser.cpp HW/Latte/Core/Latte.h HW/Latte/Core/LatteIndices.cpp HW/Latte/Core/LatteIndices.h diff --git a/src/Cafe/HW/Latte/Core/FetchShader.cpp b/src/Cafe/HW/Latte/Core/FetchShader.cpp index 2e229c2a..7d724e13 100644 --- a/src/Cafe/HW/Latte/Core/FetchShader.cpp +++ b/src/Cafe/HW/Latte/Core/FetchShader.cpp @@ -3,6 +3,7 @@ #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "Cafe/OS/libs/gx2/GX2.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompiler.h" #include "Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerInstructions.h" #include "Cafe/HW/Latte/Core/FetchShader.h" diff --git a/src/Cafe/HW/Latte/Core/LatteBufferData.cpp b/src/Cafe/HW/Latte/Core/LatteBufferData.cpp index 2ac37eb8..7620e6a7 100644 --- a/src/Cafe/HW/Latte/Core/LatteBufferData.cpp +++ b/src/Cafe/HW/Latte/Core/LatteBufferData.cpp @@ -1,6 +1,7 @@ #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "Cafe/HW/Latte/Renderer/Renderer.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LatteShader.h" #include "Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompiler.h" #include "Cafe/HW/Latte/Core/FetchShader.h" diff --git a/src/Cafe/HW/Latte/Core/LatteCommandProcessor.cpp b/src/Cafe/HW/Latte/Core/LatteCommandProcessor.cpp index 509911f3..963c49f7 100644 --- a/src/Cafe/HW/Latte/Core/LatteCommandProcessor.cpp +++ b/src/Cafe/HW/Latte/Core/LatteCommandProcessor.cpp @@ -4,6 +4,7 @@ #include "Cafe/OS/libs/gx2/GX2_Event.h" // for notification callbacks #include "Cafe/HW/Latte/Renderer/Renderer.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LatteShader.h" #include "Cafe/HW/Latte/Core/LatteAsyncCommands.h" #include "Cafe/HW/Latte/Core/LattePerformanceMonitor.h" diff --git a/src/Cafe/HW/Latte/Core/LatteDefaultShaders.cpp b/src/Cafe/HW/Latte/Core/LatteDefaultShaders.cpp index 8ec3fcef..7c590dbb 100644 --- a/src/Cafe/HW/Latte/Core/LatteDefaultShaders.cpp +++ b/src/Cafe/HW/Latte/Core/LatteDefaultShaders.cpp @@ -1,38 +1,54 @@ #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LatteShader.h" #include "Cafe/HW/Latte/Core/LatteDefaultShaders.h" -#include "Cafe/HW/Latte/Renderer/Renderer.h" -#include "Cafe/HW/Latte/Renderer/OpenGL/RendererShaderGL.h" +#include "util/helpers/StringBuf.h" LatteDefaultShader_t* _copyShader_depthToColor; LatteDefaultShader_t* _copyShader_colorToDepth; +void LatteDefaultShader_pixelCopyShader_generateVSBody(StringBuf* vs) +{ + vs->add("#version 420\r\n"); + vs->add("out vec2 passUV;\r\n"); + vs->add("uniform vec4 uf_vertexOffsets[4];\r\n"); + vs->add("\r\n"); + vs->add("void main(){\r\n"); + vs->add("int vID = gl_VertexID;\r\n"); + vs->add("passUV = uf_vertexOffsets[vID].zw;\r\n"); + vs->add("gl_Position = vec4(uf_vertexOffsets[vID].xy, 0.0, 1.0);\r\n"); + vs->add("}\r\n"); +} + +GLuint gxShaderDepr_compileRaw(StringBuf* strSourceVS, StringBuf* strSourceFS); +GLuint gxShaderDepr_compileRaw(const std::string& vertex_source, const std::string& fragment_source); + LatteDefaultShader_t* LatteDefaultShader_getPixelCopyShader_depthToColor() { if (_copyShader_depthToColor != 0) return _copyShader_depthToColor; catchOpenGLError(); - LatteDefaultShader_t* defaultShader = new LatteDefaultShader_t{}; + LatteDefaultShader_t* defaultShader = (LatteDefaultShader_t*)malloc(sizeof(LatteDefaultShader_t)); + memset(defaultShader, 0, sizeof(LatteDefaultShader_t)); - std::string defaultFragmentShader = - R"glsl(#version 420 - in vec2 passUV; - uniform sampler2D textureSrc; - layout(location = 0) out vec4 colorOut0; + StringBuf fCStr_vertexShader(1024 * 16); + LatteDefaultShader_pixelCopyShader_generateVSBody(&fCStr_vertexShader); - void main(){ - colorOut0 = vec4(texture(textureSrc, passUV).r,0.0,0.0,1.0); - } - )glsl"; + StringBuf fCStr_defaultFragShader(1024 * 16); + fCStr_defaultFragShader.add("#version 420\r\n"); + fCStr_defaultFragShader.add("in vec2 passUV;\r\n"); + fCStr_defaultFragShader.add("uniform sampler2D textureSrc;\r\n"); + fCStr_defaultFragShader.add("layout(location = 0) out vec4 colorOut0;\r\n"); + fCStr_defaultFragShader.add("\r\n"); + fCStr_defaultFragShader.add("void main(){\r\n"); + fCStr_defaultFragShader.add("colorOut0 = vec4(texture(textureSrc, passUV).r,0.0,0.0,1.0);\r\n"); + fCStr_defaultFragShader.add("}\r\n"); - RendererShaderGL* fragShader = static_cast(g_renderer->shader_create(RendererShader::ShaderType::kFragment, 0, 0, std::move(defaultFragmentShader), false, false)); - fragShader->PreponeCompilation(); - - defaultShader->glProgamId = fragShader->GetProgram(); + defaultShader->glProgamId = gxShaderDepr_compileRaw(&fCStr_vertexShader, &fCStr_defaultFragShader); catchOpenGLError(); - defaultShader->copyShaderUniforms.uniformLoc_textureSrc = fragShader->GetUniformLocation("textureSrc"); - defaultShader->copyShaderUniforms.uniformLoc_vertexOffsets = fragShader->GetUniformLocation("uf_vertexOffsets"); + defaultShader->copyShaderUniforms.uniformLoc_textureSrc = glGetUniformLocation(defaultShader->glProgamId, "textureSrc"); + defaultShader->copyShaderUniforms.uniformLoc_vertexOffsets = glGetUniformLocation(defaultShader->glProgamId, "uf_vertexOffsets"); _copyShader_depthToColor = defaultShader; catchOpenGLError(); @@ -44,23 +60,26 @@ LatteDefaultShader_t* LatteDefaultShader_getPixelCopyShader_colorToDepth() if (_copyShader_colorToDepth != 0) return _copyShader_colorToDepth; catchOpenGLError(); - LatteDefaultShader_t* defaultShader = new LatteDefaultShader_t{}; + LatteDefaultShader_t* defaultShader = (LatteDefaultShader_t*)malloc(sizeof(LatteDefaultShader_t)); + memset(defaultShader, 0, sizeof(LatteDefaultShader_t)); - std::string defaultFragShader = R"glsl(#version 420 - in vec2 passUV; - uniform sampler2D textureSrc; - layout(location = 0) out vec4 colorOut0; + StringBuf fCStr_vertexShader(1024 * 16); + LatteDefaultShader_pixelCopyShader_generateVSBody(&fCStr_vertexShader); - void main() { - gl_FragDepth = texture(textureSrc, passUV).r; - } - )glsl"; + StringBuf fCStr_defaultFragShader(1024 * 16); + fCStr_defaultFragShader.add("#version 420\r\n"); + fCStr_defaultFragShader.add("in vec2 passUV;\r\n"); + fCStr_defaultFragShader.add("uniform sampler2D textureSrc;\r\n"); + fCStr_defaultFragShader.add("layout(location = 0) out vec4 colorOut0;\r\n"); + fCStr_defaultFragShader.add("\r\n"); + fCStr_defaultFragShader.add("void main(){\r\n"); + fCStr_defaultFragShader.add("gl_FragDepth = texture(textureSrc, passUV).r;\r\n"); + fCStr_defaultFragShader.add("}\r\n"); - RendererShaderGL* fragShader = static_cast(g_renderer->shader_create(RendererShader::ShaderType::kFragment, 0, 0, std::move(defaultFragShader), false, false)); - fragShader->PreponeCompilation(); - defaultShader->glProgamId = fragShader->GetProgram(); - defaultShader->copyShaderUniforms.uniformLoc_textureSrc = fragShader->GetUniformLocation("textureSrc"); - defaultShader->copyShaderUniforms.uniformLoc_vertexOffsets = fragShader->GetUniformLocation("uf_vertexOffsets"); + + defaultShader->glProgamId = gxShaderDepr_compileRaw(&fCStr_vertexShader, &fCStr_defaultFragShader); + defaultShader->copyShaderUniforms.uniformLoc_textureSrc = glGetUniformLocation(defaultShader->glProgamId, "textureSrc"); + defaultShader->copyShaderUniforms.uniformLoc_vertexOffsets = glGetUniformLocation(defaultShader->glProgamId, "uf_vertexOffsets"); _copyShader_colorToDepth = defaultShader; catchOpenGLError(); diff --git a/src/Cafe/HW/Latte/Core/LatteDefaultShaders.h b/src/Cafe/HW/Latte/Core/LatteDefaultShaders.h index d9324555..3776a3d2 100644 --- a/src/Cafe/HW/Latte/Core/LatteDefaultShaders.h +++ b/src/Cafe/HW/Latte/Core/LatteDefaultShaders.h @@ -1,5 +1,4 @@ -#include "Common/GLInclude/GLInclude.h" typedef struct { GLuint glProgamId; diff --git a/src/Cafe/HW/Latte/Core/LatteDraw.h b/src/Cafe/HW/Latte/Core/LatteDraw.h new file mode 100644 index 00000000..89c34dc0 --- /dev/null +++ b/src/Cafe/HW/Latte/Core/LatteDraw.h @@ -0,0 +1,4 @@ +#pragma once +#include "Common/GLInclude/GLInclude.h" + +void LatteDraw_cleanupAfterFrame(); \ No newline at end of file diff --git a/src/Cafe/HW/Latte/Core/LatteQuery.cpp b/src/Cafe/HW/Latte/Core/LatteQuery.cpp index 11e12baf..a8329e63 100644 --- a/src/Cafe/HW/Latte/Core/LatteQuery.cpp +++ b/src/Cafe/HW/Latte/Core/LatteQuery.cpp @@ -1,5 +1,6 @@ #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LatteQueryObject.h" #include "Cafe/HW/Latte/Renderer/Renderer.h" diff --git a/src/Cafe/HW/Latte/Core/LatteRenderTarget.cpp b/src/Cafe/HW/Latte/Core/LatteRenderTarget.cpp index 9d83b226..1bdbc4bb 100644 --- a/src/Cafe/HW/Latte/Core/LatteRenderTarget.cpp +++ b/src/Cafe/HW/Latte/Core/LatteRenderTarget.cpp @@ -1,6 +1,7 @@ #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LatteShader.h" #include "Cafe/HW/Latte/Core/LatteOverlay.h" #include "Cafe/HW/Latte/Core/LatteBufferCache.h" @@ -680,7 +681,6 @@ void LatteRenderTarget_trackUpdates() } } -void LatteDraw_cleanupAfterFrame(); void LatteRenderTarget_itHLESwapScanBuffer() { performanceMonitor.cycle[performanceMonitor.cycleIndex].frameCounter++; diff --git a/src/Cafe/HW/Latte/Core/LatteShaderGL.cpp b/src/Cafe/HW/Latte/Core/LatteShaderGL.cpp index f7cddb9a..7a22539a 100644 --- a/src/Cafe/HW/Latte/Core/LatteShaderGL.cpp +++ b/src/Cafe/HW/Latte/Core/LatteShaderGL.cpp @@ -1,9 +1,28 @@ #include "Common/GLInclude/GLInclude.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompiler.h" #include "Cafe/HW/Latte/Renderer/OpenGL/OpenGLRenderer.h" #include "Cafe/HW/Latte/Renderer/OpenGL/RendererShaderGL.h" +#include "util/helpers/StringBuf.h" +bool gxShader_checkIfSuccessfullyLinked(GLuint glProgram) +{ + int status = -1; + glGetProgramiv(glProgram, GL_LINK_STATUS, &status); + if( status == GL_TRUE ) + return true; + // in debug mode, get and print shader error log + char infoLog[48*1024]; + uint32 infoLogLength, tempLength; + glGetProgramiv(glProgram, GL_INFO_LOG_LENGTH, (GLint *)&infoLogLength); + tempLength = sizeof(infoLog)-1; + glGetProgramInfoLog(glProgram, std::min(tempLength, infoLogLength), (GLsizei*)&tempLength, (GLcharARB*)infoLog); + infoLog[tempLength] = '\0'; + cemuLog_log(LogType::Force, "Link error in raw shader"); + cemuLog_log(LogType::Force, infoLog); + return false; +} void LatteShader_prepareSeparableUniforms(LatteDecompilerShader* shader) { @@ -47,3 +66,103 @@ void LatteShader_prepareSeparableUniforms(LatteDecompilerShader* shader) } } } +GLuint gpu7ShaderGLDepr_compileShader(const std::string& source, uint32_t type) +{ + cemu_assert(type == GL_VERTEX_SHADER || type == GL_FRAGMENT_SHADER); + const GLuint shader_object = glCreateShader(type); + + const char *c_str = source.c_str(); + const GLint size = (GLint)source.size(); + glShaderSource(shader_object, 1, &c_str, &size); + glCompileShader(shader_object); + + GLint log_length; + glGetShaderiv(shader_object, GL_INFO_LOG_LENGTH, &log_length); + if (log_length > 0) + { + char log[2048]{}; + GLsizei log_size; + glGetShaderInfoLog(shader_object, std::min(log_length, (GLint)sizeof(log) - 1), &log_size, log); + cemuLog_log(LogType::Force, "Error/Warning in vertex shader:"); + cemuLog_log(LogType::Force, log); + } + + return shader_object; +} +GLuint gpu7ShaderGLDepr_compileVertexShader(const std::string& source) +{ + return gpu7ShaderGLDepr_compileShader(source, GL_VERTEX_SHADER); +} + +GLuint gpu7ShaderGLDepr_compileFragmentShader(const std::string& source) +{ + return gpu7ShaderGLDepr_compileShader(source, GL_FRAGMENT_SHADER); +} + +GLuint gpu7ShaderGLDepr_compileVertexShader(const char* shaderSource, sint32 shaderSourceLength) +{ + uint32 shaderObject = glCreateShader(GL_VERTEX_SHADER); + GLchar* srcPtr = (GLchar*)shaderSource; + GLint srcLen = shaderSourceLength; + glShaderSource(shaderObject, 1, &srcPtr, &srcLen); + glCompileShader(shaderObject); + uint32 shaderLogLengthInfo, shaderLogLen; + glGetShaderiv(shaderObject, GL_INFO_LOG_LENGTH, (GLint *)&shaderLogLengthInfo); + if (shaderLogLengthInfo > 0) + { + char messageLog[2048]{}; + glGetShaderInfoLog(shaderObject, std::min(shaderLogLengthInfo, sizeof(messageLog) - 1), (GLsizei*)&shaderLogLen, (GLcharARB*)messageLog); + cemuLog_log(LogType::Force, "Error/Warning in vertex shader:"); + cemuLog_log(LogType::Force, messageLog); + } + return shaderObject; +} + +GLuint gpu7ShaderGLDepr_compileFragmentShader(const char* shaderSource, sint32 shaderSourceLength) +{ + uint32 shaderObject = glCreateShader(GL_FRAGMENT_SHADER); + GLchar* srcPtr = (GLchar*)shaderSource; + GLint srcLen = shaderSourceLength; + glShaderSource(shaderObject, 1, &srcPtr, &srcLen); + glCompileShader(shaderObject); + uint32 shaderLogLengthInfo, shaderLogLen; + char messageLog[2048]; + glGetShaderiv(shaderObject, GL_INFO_LOG_LENGTH, (GLint *)&shaderLogLengthInfo); + if (shaderLogLengthInfo > 0) + { + memset(messageLog, 0, sizeof(messageLog)); + glGetShaderInfoLog(shaderObject, std::min(shaderLogLengthInfo, sizeof(messageLog) - 1), (GLsizei*)&shaderLogLen, (GLcharARB*)messageLog); + cemuLog_log(LogType::Force, "Error/Warning in fragment shader:"); + cemuLog_log(LogType::Force, messageLog); + } + return shaderObject; +} + +GLuint gxShaderDepr_compileRaw(StringBuf* strSourceVS, StringBuf* strSourceFS) +{ + GLuint glShaderProgram = glCreateProgram(); + GLuint vertexShader = gpu7ShaderGLDepr_compileVertexShader(strSourceVS->c_str(), strSourceVS->getLen()); + glAttachShader(glShaderProgram, vertexShader); + GLuint fragmentShader = gpu7ShaderGLDepr_compileFragmentShader(strSourceFS->c_str(), strSourceFS->getLen()); + glAttachShader(glShaderProgram, fragmentShader); + glLinkProgram(glShaderProgram); + if( gxShader_checkIfSuccessfullyLinked(glShaderProgram) == false ) + { + return 0; + } + return glShaderProgram; +} + +GLuint gxShaderDepr_compileRaw(const std::string& vertex_source, const std::string& fragment_source) +{ + const GLuint programm = glCreateProgram(); + + auto vertex_shader = std::async(std::launch::deferred, gpu7ShaderGLDepr_compileShader, vertex_source, GL_VERTEX_SHADER); + auto fragment_shader = std::async(std::launch::deferred, gpu7ShaderGLDepr_compileShader, fragment_source, GL_FRAGMENT_SHADER); + + glAttachShader(programm, vertex_shader.get()); + glAttachShader(programm, fragment_shader.get()); + + glLinkProgram(programm); + return gxShader_checkIfSuccessfullyLinked(programm) ? programm : 0; +} diff --git a/src/Cafe/HW/Latte/Core/LatteStreamoutGPU.cpp b/src/Cafe/HW/Latte/Core/LatteStreamoutGPU.cpp index 21e92294..ccea31b8 100644 --- a/src/Cafe/HW/Latte/Core/LatteStreamoutGPU.cpp +++ b/src/Cafe/HW/Latte/Core/LatteStreamoutGPU.cpp @@ -1,6 +1,7 @@ #include "Cafe/HW/Latte/Core/LatteConst.h" #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LatteShader.h" #include "Cafe/GameProfile/GameProfile.h" #include "Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompiler.h" diff --git a/src/Cafe/HW/Latte/Core/LatteSurfaceCopy.cpp b/src/Cafe/HW/Latte/Core/LatteSurfaceCopy.cpp index c836ba3c..45be6843 100644 --- a/src/Cafe/HW/Latte/Core/LatteSurfaceCopy.cpp +++ b/src/Cafe/HW/Latte/Core/LatteSurfaceCopy.cpp @@ -1,4 +1,5 @@ #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LatteShader.h" #include "Cafe/HW/Latte/Core/LatteDefaultShaders.h" #include "Cafe/HW/Latte/Core/LatteTexture.h" diff --git a/src/Cafe/HW/Latte/Core/LatteTextureCache.cpp b/src/Cafe/HW/Latte/Core/LatteTextureCache.cpp index ea80e598..3145e90e 100644 --- a/src/Cafe/HW/Latte/Core/LatteTextureCache.cpp +++ b/src/Cafe/HW/Latte/Core/LatteTextureCache.cpp @@ -1,4 +1,5 @@ #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LatteTexture.h" #include "Cafe/HW/Latte/Renderer/Renderer.h" #include "Common/cpu_features.h" diff --git a/src/Cafe/HW/Latte/Core/LatteTextureReadback.cpp b/src/Cafe/HW/Latte/Core/LatteTextureReadback.cpp index 07b5299a..8df5dcea 100644 --- a/src/Cafe/HW/Latte/Core/LatteTextureReadback.cpp +++ b/src/Cafe/HW/Latte/Core/LatteTextureReadback.cpp @@ -1,4 +1,5 @@ #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LattePerformanceMonitor.h" #include "Common/GLInclude/GLInclude.h" diff --git a/src/Cafe/HW/Latte/Core/LatteThread.cpp b/src/Cafe/HW/Latte/Core/LatteThread.cpp index f1c85704..743ab679 100644 --- a/src/Cafe/HW/Latte/Core/LatteThread.cpp +++ b/src/Cafe/HW/Latte/Core/LatteThread.cpp @@ -1,6 +1,7 @@ #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "Cafe/OS/libs/gx2/GX2.h" // todo - remove dependency #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LatteShader.h" #include "Cafe/HW/Latte/Core/LatteAsyncCommands.h" #include "Cafe/GameProfile/GameProfile.h" diff --git a/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompiler.cpp b/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompiler.cpp index e3bf4230..13188743 100644 --- a/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompiler.cpp +++ b/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompiler.cpp @@ -2,6 +2,7 @@ #include "Cafe/HW/Latte/Core/LatteShaderAssembly.h" #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LatteShader.h" #include "Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompiler.h" #include "Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerInternal.h" diff --git a/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitGLSL.cpp b/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitGLSL.cpp index f7863af2..e7ebcf3a 100644 --- a/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitGLSL.cpp +++ b/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitGLSL.cpp @@ -3,6 +3,7 @@ #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "Cafe/OS/libs/gx2/GX2.h" // todo - remove dependency #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LatteShader.h" #include "Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompiler.h" #include "Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerInternal.h" diff --git a/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitGLSLAttrDecoder.cpp b/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitGLSLAttrDecoder.cpp index e2431610..76d76322 100644 --- a/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitGLSLAttrDecoder.cpp +++ b/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitGLSLAttrDecoder.cpp @@ -2,6 +2,7 @@ #include "Cafe/HW/Latte/Core/LatteShaderAssembly.h" #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompiler.h" #include "Cafe/HW/Latte/Core/FetchShader.h" #include "Cafe/HW/Latte/Renderer/Renderer.h" diff --git a/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSL.cpp b/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSL.cpp index 6df7d3fc..cb512308 100644 --- a/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSL.cpp +++ b/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSL.cpp @@ -3,6 +3,7 @@ #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "Cafe/OS/libs/gx2/GX2.h" // todo - remove dependency #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LatteShader.h" #include "Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompiler.h" #include "Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerInternal.h" diff --git a/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSLAttrDecoder.cpp b/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSLAttrDecoder.cpp index 8ca4c695..9ee5c31f 100644 --- a/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSLAttrDecoder.cpp +++ b/src/Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompilerEmitMSLAttrDecoder.cpp @@ -2,6 +2,7 @@ #include "Cafe/HW/Latte/Core/LatteShaderAssembly.h" #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/LegacyShaderDecompiler/LatteDecompiler.h" #include "Cafe/HW/Latte/Core/FetchShader.h" #include "Cafe/HW/Latte/Renderer/Renderer.h" diff --git a/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRenderer.cpp b/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRenderer.cpp index ee9a0358..c9308fe4 100644 --- a/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRenderer.cpp +++ b/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRenderer.cpp @@ -2,6 +2,7 @@ #include "WindowSystem.h" #include "Cafe/HW/Latte/Core/LatteRingBuffer.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LatteOverlay.h" #include "Cafe/HW/Latte/Renderer/OpenGL/LatteTextureGL.h" diff --git a/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRendererCore.cpp b/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRendererCore.cpp index f59388ca..821252d3 100644 --- a/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRendererCore.cpp +++ b/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRendererCore.cpp @@ -1,6 +1,7 @@ #include "Common/GLInclude/GLInclude.h" #include "Cafe/HW/Latte/Core/LatteRingBuffer.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LattePerformanceMonitor.h" #include "Cafe/HW/Latte/Core/LatteShader.h" #include "Cafe/HW/Latte/Core/LatteSoftware.h" diff --git a/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLSurfaceCopy.cpp b/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLSurfaceCopy.cpp index ee9c67fa..d578b842 100644 --- a/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLSurfaceCopy.cpp +++ b/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLSurfaceCopy.cpp @@ -6,6 +6,7 @@ #include "Cafe/HW/Latte/Renderer/OpenGL/LatteTextureViewGL.h" #include "Cafe/HW/Latte/Core/LattePerformanceMonitor.h" #include "Cafe/HW/Latte/Core/LatteShader.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LatteDefaultShaders.h" diff --git a/src/Cafe/OS/libs/gx2/GX2_Command.cpp b/src/Cafe/OS/libs/gx2/GX2_Command.cpp index 7f8f0bd0..d12bf210 100644 --- a/src/Cafe/OS/libs/gx2/GX2_Command.cpp +++ b/src/Cafe/OS/libs/gx2/GX2_Command.cpp @@ -1,4 +1,5 @@ #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/OS/common/OSCommon.h" #include "Cafe/HW/Latte/Core/LattePM4.h" #include "Cafe/OS/libs/coreinit/coreinit.h" diff --git a/src/Cafe/OS/libs/gx2/GX2_ContextState.cpp b/src/Cafe/OS/libs/gx2/GX2_ContextState.cpp index 3da87aaf..fb631a11 100644 --- a/src/Cafe/OS/libs/gx2/GX2_ContextState.cpp +++ b/src/Cafe/OS/libs/gx2/GX2_ContextState.cpp @@ -2,6 +2,7 @@ #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "GX2.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LattePM4.h" diff --git a/src/Cafe/OS/libs/gx2/GX2_Draw.cpp b/src/Cafe/OS/libs/gx2/GX2_Draw.cpp index d7774dfe..3a5fff5b 100644 --- a/src/Cafe/OS/libs/gx2/GX2_Draw.cpp +++ b/src/Cafe/OS/libs/gx2/GX2_Draw.cpp @@ -1,6 +1,7 @@ #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "GX2.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/ISA/LatteReg.h" #include "Cafe/HW/Latte/Core/LattePM4.h" diff --git a/src/Cafe/OS/libs/gx2/GX2_Memory.cpp b/src/Cafe/OS/libs/gx2/GX2_Memory.cpp index e3d750db..d5054784 100644 --- a/src/Cafe/OS/libs/gx2/GX2_Memory.cpp +++ b/src/Cafe/OS/libs/gx2/GX2_Memory.cpp @@ -3,6 +3,7 @@ #include "GX2.h" #include "GX2_Resource.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" // default GX2 allocator (not the same as the GX2R allocator, but GX2R uses this allocator by default) MPTR gx2Mem_defaultAlloc = MPTR_NULL; diff --git a/src/Cafe/OS/libs/gx2/GX2_RenderTarget.cpp b/src/Cafe/OS/libs/gx2/GX2_RenderTarget.cpp index 095e13e3..4ef37b18 100644 --- a/src/Cafe/OS/libs/gx2/GX2_RenderTarget.cpp +++ b/src/Cafe/OS/libs/gx2/GX2_RenderTarget.cpp @@ -1,6 +1,7 @@ #include "Cafe/OS/common/OSCommon.h" #include "GX2.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/LatteAddrLib/LatteAddrLib.h" diff --git a/src/Cafe/OS/libs/gx2/GX2_Surface.cpp b/src/Cafe/OS/libs/gx2/GX2_Surface.cpp index 3bfcda23..1d858e18 100644 --- a/src/Cafe/OS/libs/gx2/GX2_Surface.cpp +++ b/src/Cafe/OS/libs/gx2/GX2_Surface.cpp @@ -3,6 +3,7 @@ #include "GX2_Surface.h" #include "GX2_Resource.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LattePM4.h" #include "Cafe/HW/Latte/LatteAddrLib/LatteAddrLib.h" diff --git a/src/Cafe/OS/libs/gx2/GX2_Surface_Copy.cpp b/src/Cafe/OS/libs/gx2/GX2_Surface_Copy.cpp index da177795..f52f38e7 100644 --- a/src/Cafe/OS/libs/gx2/GX2_Surface_Copy.cpp +++ b/src/Cafe/OS/libs/gx2/GX2_Surface_Copy.cpp @@ -2,6 +2,7 @@ #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "Cafe/HW/Latte/Core/LattePM4.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LatteAsyncCommands.h" #include "Cafe/HW/Latte/LatteAddrLib/LatteAddrLib.h" #include "util/highresolutiontimer/HighResolutionTimer.h" diff --git a/src/Cafe/OS/libs/gx2/GX2_Texture.cpp b/src/Cafe/OS/libs/gx2/GX2_Texture.cpp index 26b8fd18..d986e307 100644 --- a/src/Cafe/OS/libs/gx2/GX2_Texture.cpp +++ b/src/Cafe/OS/libs/gx2/GX2_Texture.cpp @@ -4,6 +4,7 @@ #include "GX2_Texture.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Core/LattePM4.h" #include "Cafe/HW/Latte/ISA/LatteReg.h" diff --git a/src/Cafe/OS/libs/gx2/GX2_shader_legacy.cpp b/src/Cafe/OS/libs/gx2/GX2_shader_legacy.cpp index 78873983..d91a8529 100644 --- a/src/Cafe/OS/libs/gx2/GX2_shader_legacy.cpp +++ b/src/Cafe/OS/libs/gx2/GX2_shader_legacy.cpp @@ -1,6 +1,7 @@ #include "Cafe/OS/common/OSCommon.h" #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/ISA/LatteReg.h" #include "Cafe/HW/Latte/Core/LattePM4.h" diff --git a/src/Cafe/OS/libs/swkbd/swkbd.cpp b/src/Cafe/OS/libs/swkbd/swkbd.cpp index b077bd8b..4e82783a 100644 --- a/src/Cafe/OS/libs/swkbd/swkbd.cpp +++ b/src/Cafe/OS/libs/swkbd/swkbd.cpp @@ -2,6 +2,7 @@ #include "Cafe/HW/Latte/ISA/RegDefines.h" #include "Cafe/OS/libs/gx2/GX2.h" #include "Cafe/HW/Latte/Core/Latte.h" +#include "Cafe/HW/Latte/Core/LatteDraw.h" #include "Cafe/HW/Latte/Renderer/Renderer.h"