From 8b67cde90ee2c2257d14ddad60fee2c04c89d38d Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Sun, 26 Nov 2023 01:45:03 +0200 Subject: [PATCH 1/4] Add GLES patch --- patch.patch | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 patch.patch diff --git a/patch.patch b/patch.patch new file mode 100644 index 00000000..98cad32b --- /dev/null +++ b/patch.patch @@ -0,0 +1,118 @@ +diff --git a/src/host_shaders/opengl_display.frag b/src/host_shaders/opengl_display.frag +index 612671c8..1937f711 100644 +--- a/src/host_shaders/opengl_display.frag ++++ b/src/host_shaders/opengl_display.frag +@@ -1,4 +1,5 @@ +-#version 410 core ++#version 300 es ++precision mediump float; + in vec2 UV; + out vec4 FragColor; + +diff --git a/src/host_shaders/opengl_display.vert b/src/host_shaders/opengl_display.vert +index 990e2f80..6917c23c 100644 +--- a/src/host_shaders/opengl_display.vert ++++ b/src/host_shaders/opengl_display.vert +@@ -1,4 +1,4 @@ +-#version 410 core ++#version 300 es + out vec2 UV; + + void main() { +diff --git a/src/host_shaders/opengl_fragment_shader.frag b/src/host_shaders/opengl_fragment_shader.frag +index f6fa6c55..b0850438 100644 +--- a/src/host_shaders/opengl_fragment_shader.frag ++++ b/src/host_shaders/opengl_fragment_shader.frag +@@ -1,4 +1,5 @@ +-#version 410 core ++#version 300 es ++precision mediump float; + + in vec3 v_tangent; + in vec3 v_normal; +@@ -27,7 +28,7 @@ uniform bool u_depthmapEnable; + uniform sampler2D u_tex0; + uniform sampler2D u_tex1; + uniform sampler2D u_tex2; +-uniform sampler1DArray u_tex_lighting_lut; ++// uniform sampler1DArray u_tex_lighting_lut; + + uniform uint u_picaRegs[0x200 - 0x48]; + +@@ -145,9 +146,15 @@ vec4 tevCalculateCombiner(int tev_id) { + #define RR_LUT 6u + + float lutLookup(uint lut, uint light, float value) { +- if (lut >= FR_LUT && lut <= RR_LUT) lut -= 1; +- if (lut == SP_LUT) lut = light + 8; +- return texture(u_tex_lighting_lut, vec2(value, lut)).r; ++ // if (lut >= FR_LUT && lut <= RR_LUT) lut -= 1; ++ // if (lut == SP_LUT) lut = light + 8; ++ // return texture(u_tex_lighting_lut, vec2(value, lut)).r; ++ return 0.0; ++} ++ ++uint bitfieldExtract(uint val, int off, int size) { ++ uint mask = uint((1 << size) - 1); ++ return uint(val >> off) & mask; + } + + vec3 regToColor(uint reg) { +diff --git a/src/host_shaders/opengl_vertex_shader.vert b/src/host_shaders/opengl_vertex_shader.vert +index a25d7a6d..5967ccd6 100644 +--- a/src/host_shaders/opengl_vertex_shader.vert ++++ b/src/host_shaders/opengl_vertex_shader.vert +@@ -1,4 +1,4 @@ +-#version 410 core ++#version 300 es + + layout(location = 0) in vec4 a_coords; + layout(location = 1) in vec4 a_quaternion; +@@ -20,7 +20,7 @@ out vec2 v_texcoord2; + flat out vec4 v_textureEnvColor[6]; + flat out vec4 v_textureEnvBufferColor; + +-out float gl_ClipDistance[2]; ++// out float gl_ClipDistance[2]; + + // TEV uniforms + uniform uint u_textureEnvColor[6]; +@@ -93,6 +93,6 @@ void main() { + ); + + // There's also another, always-on clipping plane based on vertex z +- gl_ClipDistance[0] = -a_coords.z; +- gl_ClipDistance[1] = dot(clipData, a_coords); ++ // gl_ClipDistance[0] = -a_coords.z; ++ // gl_ClipDistance[1] = dot(clipData, a_coords); + } +diff --git a/third_party/opengl/opengl.hpp b/third_party/opengl/opengl.hpp +index f368f573..5ead7f63 100644 +--- a/third_party/opengl/opengl.hpp ++++ b/third_party/opengl/opengl.hpp +@@ -520,21 +520,21 @@ namespace OpenGL { + static void enableBlend() { glEnable(GL_BLEND); } + static void disableBlend() { glDisable(GL_BLEND); } + static void enableLogicOp() { glEnable(GL_COLOR_LOGIC_OP); } +- static void disableLogicOp() { glDisable(GL_COLOR_LOGIC_OP); } ++ static void disableLogicOp() { /* glDisable(GL_COLOR_LOGIC_OP); */ } + static void enableDepth() { glEnable(GL_DEPTH_TEST); } + static void disableDepth() { glDisable(GL_DEPTH_TEST); } + static void enableStencil() { glEnable(GL_STENCIL_TEST); } + static void disableStencil() { glDisable(GL_STENCIL_TEST); } + +- static void enableClipPlane(GLuint index) { glEnable(GL_CLIP_DISTANCE0 + index); } +- static void disableClipPlane(GLuint index) { glDisable(GL_CLIP_DISTANCE0 + index); } ++ static void enableClipPlane(GLuint index) { /* glEnable(GL_CLIP_DISTANCE0 + index); */ } ++ static void disableClipPlane(GLuint index) { /* glDisable(GL_CLIP_DISTANCE0 + index); */ } + + static void setDepthFunc(DepthFunc func) { glDepthFunc(static_cast(func)); } + static void setColourMask(GLboolean r, GLboolean g, GLboolean b, GLboolean a) { glColorMask(r, g, b, a); } + static void setDepthMask(GLboolean mask) { glDepthMask(mask); } + + // TODO: Add a proper enum for this +- static void setLogicOp(GLenum op) { glLogicOp(op); } ++ static void setLogicOp(GLenum op) { /* glLogicOp(op); */ } + + enum Primitives { + Triangle = GL_TRIANGLES, From cce080b1a4f53966253e4528744fb0d0cf23f748 Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Sun, 26 Nov 2023 01:46:55 +0200 Subject: [PATCH 2/4] Update Android_Build.yml --- .github/workflows/Android_Build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/Android_Build.yml b/.github/workflows/Android_Build.yml index c94140d7..bd1c87d4 100644 --- a/.github/workflows/Android_Build.yml +++ b/.github/workflows/Android_Build.yml @@ -70,6 +70,9 @@ jobs: distribution: 'zulu' # See 'Supported distributions' for available options java-version: '17' + - name: Apply GLES patch + run: git patch patch.patch + - name: Configure CMake run: cmake -B ${{github.workspace}}/build -DBUILD_HYDRA_CORE=1 -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DENABLE_VULKAN=0 -DCMAKE_CXX_FLAGS="-march=armv8.1-a+crypto" From 3a25c11c5af291db2368d51914dad2c5cbca5c34 Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Sun, 26 Nov 2023 02:04:56 +0200 Subject: [PATCH 3/4] Update Android_Build.yml --- .github/workflows/Android_Build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Android_Build.yml b/.github/workflows/Android_Build.yml index bd1c87d4..eac6c723 100644 --- a/.github/workflows/Android_Build.yml +++ b/.github/workflows/Android_Build.yml @@ -71,7 +71,7 @@ jobs: java-version: '17' - name: Apply GLES patch - run: git patch patch.patch + run: git apply patch.patch - name: Configure CMake run: cmake -B ${{github.workspace}}/build -DBUILD_HYDRA_CORE=1 -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DENABLE_VULKAN=0 -DCMAKE_CXX_FLAGS="-march=armv8.1-a+crypto" From f9f19c0a523fc3839b5cd64ff8481d4a189d669b Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Sun, 26 Nov 2023 17:00:07 +0200 Subject: [PATCH 4/4] Build with GLES 3.2 --- src/pandroid/app/src/main/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pandroid/app/src/main/AndroidManifest.xml b/src/pandroid/app/src/main/AndroidManifest.xml index 2d318370..01931edc 100644 --- a/src/pandroid/app/src/main/AndroidManifest.xml +++ b/src/pandroid/app/src/main/AndroidManifest.xml @@ -6,7 +6,7 @@ + android:glEsVersion="0x0030002"/> - \ No newline at end of file +