Closed codingsince1985 closed 1 year ago
It'd help if you try bisecting. PPSSPP should be pretty easy to compile: https://github.com/hrydgard/ppsspp/wiki/How-to-bisect-to-find-what-broke-a-game
I don't know much about flathub to say how to get logs when running through it, but normally PPSSPP logs to the terminal if you start it from a terminal.
-[Unknown]
Are you sure your ISO hasn't gotten corrupt somehow? I tested the above steps and had no issues, both on 1.14.4 and on a fresh build. I tested on Mac though.
Previous releases on Flathub isn't gonna happen unless someone volunteers to do it - flathub support is already maintained by a volunteer, not me.
thank you @hrydgard
i did a md5sum on the ISO and it gives 55890...22cdf
. by googling this checksum i can see it's a good ISO file in EU.
what i can do is to try the US release of the same game and let you know.
i got same result on its US version.
okay, this is the logs from command line, from start to crash.
$ flatpak run org.ppsspp.PPSSPP
VulkanMayBeAvailable: Device allowed ('SDL:Linux')
VulkanMayBeAvailable: Library loaded ('libvulkan.so.1')
VulkanMayBeAvailable: Enumerating instance extensions
VulkanMayBeAvailable: Instance extension count: 20
VulkanMaybeAvailable: Instance extension found: VK_KHR_device_group_creation (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_external_fence_capabilities (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_external_memory_capabilities (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_external_semaphore_capabilities (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_get_physical_device_properties2 (00000002)
VulkanMaybeAvailable: Instance extension found: VK_KHR_get_surface_capabilities2 (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_surface (00000019)
VulkanMaybeAvailable: Instance extension found: VK_KHR_surface_protected_capabilities (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_wayland_surface (00000006)
VulkanMaybeAvailable: Instance extension found: VK_KHR_xcb_surface (00000006)
VulkanMaybeAvailable: Instance extension found: VK_KHR_xlib_surface (00000006)
VulkanMaybeAvailable: Instance extension found: VK_KHR_display (00000017)
VulkanMaybeAvailable: Instance extension found: VK_KHR_get_display_properties2 (00000001)
VulkanMaybeAvailable: Instance extension found: VK_EXT_acquire_drm_display (00000001)
VulkanMaybeAvailable: Instance extension found: VK_EXT_acquire_xlib_display (00000001)
VulkanMaybeAvailable: Instance extension found: VK_EXT_debug_report (0000000a)
VulkanMaybeAvailable: Instance extension found: VK_EXT_debug_utils (00000002)
VulkanMaybeAvailable: Instance extension found: VK_EXT_direct_mode_display (00000001)
VulkanMaybeAvailable: Instance extension found: VK_EXT_display_surface_counter (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_portability_enumeration (00000001)
VulkanMayBeAvailable: Calling vkCreateInstance
VulkanMayBeAvailable: Vulkan test instance created successfully.
VulkanMayBeAvailable: Ineligible device found and ignored: 'llvmpipe (LLVM 15.0.7, 128 bits)'
VulkanMayBeAvailable: Found Vulkan API, but no good Vulkan device!
VulkanMayBeAvailable: Destroying instance
DEBUG: Vulkan is not available, not using Vulkan.
Info: We compiled against SDL version 2.24.0 and we are linking against SDL version 2.24.0. :)
ThreadManager::Init(compute threads: 4, all: 8)
Pixels: 960 x 544
Virtual pixels: 960 x 544
OpenGL 2.0 or higher.
loading control pad mappings from gamecontrollerdb.txt: SUCCESS!
found control pad: X360 Controller, loading mapping: SUCCESS, mapping is:
030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
pad 1 has been assigned to control pad: X360 Controller
found control pad: X360 Controller, loading mapping: SUCCESS, mapping is:
030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
i got this (apart from what in the above comment) after "Enable debug logging", if it helps.
07:44:222 Core/System.cpp:421 N[BOOT]: PPSSPP v1.14.4
07:44:226 Core/Compatibility.cpp:135 N[G3D]: UnitsPerMeter for ULES00763: 0.000000
07:44:801 root N[G3D]: GLES/ShaderManagerGLES.cpp:1005 Precompiling the shader cache from '/home/jerry/.var/app/org.ppsspp.PPSSPP/config/ppsspp/PSP/SYSTEM/CACHE/ULES00763.glshadercache'
07:44:801 root N[G3D]: GLES/ShaderManagerGLES.cpp:1085 Precompile: Compiled and linked 5 programs (3 vertex, 4 fragment) in 0.3 milliseconds
07:44:801 root N[BOOT]: UI/EmuScreen.cpp:357 Loading /media/jerry/9ab58237-1a88-41f8-827b-cc8596aef532/retro/roms/Sony/psp/Fun/Virtua_Tennis_3_EUR_MULTI5_PSP-LIGHTFORCE.iso...
08:07:866 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 Error in shader compilation for: 01000000:80000b30 HWX T N Tex Light: LightUberShader Cull
08:07:866 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 Info log: 0:96(2): error: illegal use of reserved word `switch'
08:07:866 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 0:96(2): error: syntax error, unexpected ERROR_TOK
08:07:866 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345
08:07:866 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 Shader source:
08:07:866 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 1: #version 120
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 2: #extension GL_EXT_gpu_shader4 : enable
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 3: // Driver: Mesa Intel(R) HD Graphics (ILK) - GLSL 120
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 4: #define gl_VertexIndex gl_VertexID
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 5: #define lowp
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 6: #define mediump
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 7: #define highp
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 8: #define splat3(x) vec3(x)
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 9: #define mul(x, y) ((x) * (y))
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 10: // 01000000:80000b30 HWX T N Tex Light: LightUberShader Cull
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 11: attribute vec3 position;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 12: attribute mediump vec3 normal;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 13: attribute vec2 texcoord;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 14: uniform mat4 u_proj;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 15: uniform mat4 u_world;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 16: uniform mat4 u_view;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 17: uniform vec4 u_uvscaleoffset;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 18: uniform uint u_lightControl;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 19: uniform vec3 u_lightpos0;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 20: uniform mediump vec3 u_lightatt0;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 21: uniform mediump vec3 u_lightdir0;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 22: uniform mediump vec2 u_lightangle_spotCoef0;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 23: uniform lowp vec3 u_lightambient0;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 24: uniform lowp vec3 u_lightdiffuse0;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 25: uniform lowp vec3 u_lightspecular0;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 26: uniform vec3 u_lightpos1;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 27: uniform mediump vec3 u_lightatt1;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 28: uniform mediump vec3 u_lightdir1;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 29: uniform mediump vec2 u_lightangle_spotCoef1;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 30: uniform lowp vec3 u_lightambient1;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 31: uniform lowp vec3 u_lightdiffuse1;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 32: uniform lowp vec3 u_lightspecular1;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 33: uniform vec3 u_lightpos2;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 34: uniform mediump vec3 u_lightatt2;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 35: uniform mediump vec3 u_lightdir2;
08:07:867 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 36: uniform mediump vec2 u_lightangle_spotCoef2;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 37: uniform lowp vec3 u_lightambient2;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 38: uniform lowp vec3 u_lightdiffuse2;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 39: uniform lowp vec3 u_lightspecular2;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 40: uniform vec3 u_lightpos3;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 41: uniform mediump vec3 u_lightatt3;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 42: uniform mediump vec3 u_lightdir3;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 43: uniform mediump vec2 u_lightangle_spotCoef3;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 44: uniform lowp vec3 u_lightambient3;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 45: uniform lowp vec3 u_lightdiffuse3;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 46: uniform lowp vec3 u_lightspecular3;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 47: uniform lowp vec4 u_ambient;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 48: uniform lowp vec3 u_matdiffuse;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 49: uniform lowp vec4 u_matspecular;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 50: uniform lowp vec3 u_matemissive;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 51: uniform lowp vec4 u_matambientalpha;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 52: uniform highp vec2 u_fogcoef;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 53: uniform highp vec4 u_depthRange;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 54: uniform highp vec4 u_cullRangeMin;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 55: uniform highp vec4 u_cullRangeMax;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 56: varying lowp vec4 v_color0;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 57: varying mediump vec3 v_texcoord;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 58: varying mediump float v_fogdepth;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 59: vec3 normalizeOr001(vec3 v) {
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 60: return length(v) == 0.0 ? vec3(0.0, 0.0, 1.0) : normalize(v);
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 61: }
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 62: void main() {
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 63: vec3 worldpos = mul(vec4(position, 1.0), u_world).xyz;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 64: mediump vec3 worldnormal = normalizeOr001(mul(vec4(normal, 0.0), u_world).xyz);
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 65: vec4 viewPos = vec4(mul(vec4(worldpos, 1.0), u_view).xyz, 1.0);
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 66: vec4 outPos = mul(u_proj, viewPos);
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 67: vec4 ambientColor = u_matambientalpha;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 68: vec3 diffuseColor = u_matdiffuse.rgb;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 69: vec3 specularColor = u_matspecular.rgb;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 70: lowp vec4 lightSum0 = u_ambient * ambientColor + vec4(u_matemissive, 0.0);
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 71: lowp vec3 lightSum1 = splat3(0.0);
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 72: vec3 toLight;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 73: lowp vec3 diffuse;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 74: float distance;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 75: lowp float lightScale;
08:07:868 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 76: mediump float ldot;
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 77: lowp float angle;
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 78: if ((u_lightControl & 1u) != 0x0u) {
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 79: uint comp = (u_lightControl >> 0x04u) & 0x3u;
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 80: uint type = (u_lightControl >> 0x06u) & 0x3u;
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 81: if (type == 0x0u) {
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 82: toLight = u_lightpos0;
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 83: } else {
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 84: toLight = u_lightpos0 - worldpos;
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 85: distance = length(toLight);
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 86: toLight /= distance;
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 87: }
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 88: ldot = dot(toLight, worldnormal);
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 89: if (comp == 0x2u) {
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 90: if (u_matspecular.a <= 0.0) {
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 91: ldot = 1.0;
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 92: } else {
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 93: ldot = pow(max(ldot, 0.0), u_matspecular.a);
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 94: }
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 95: }
08:07:869 idle0 E[G3D]: OpenGL/GLQueueRunner.cpp:345 96: switch (int(type)) {
08:07:869 idle0 E[G3D]: OpenGL/GLQueueRunner.cpp:345 97: case 1:
08:07:869 AudioUpdate_ E[G3D]: OpenGL/GLQueueRunner.cpp:345 98: lightScale = clamp(1.0 / dot(u_lightatt0, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
08:07:869 idle0 E[G3D]: OpenGL/GLQueueRunner.cpp:345 99: break;
08:07:869 idle0 E[G3D]: OpenGL/GLQueueRunner.cpp:345 100: case 2:
08:07:869 idle0 E[G3D]: OpenGL/GLQueueRunner.cpp:345 101: angle = length(u_lightdir0) == 0.0 ? 0.0 : dot(normalize(u_lightdir0), toLight);
08:07:869 AudioUpdate_ E[G3D]: OpenGL/GLQueueRunner.cpp:345 102: if (angle >= u_lightangle_spotCoef0.x) {
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 103: lightScale = clamp(1.0 / dot(u_lightatt0, vec3(1.0, distance, distance*distance)), 0.0, 1.0) * (u_lightangle_spotCoef0.y <= 0.0 ? 1.0 : pow(angle, u_lightangle_spotCoef0.y));
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 104: } else {
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 105: lightScale = 0.0;
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 106: }
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 107: break;
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 108: default:
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 109: lightScale = 1.0;
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 110: break;
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 111: }
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 112: diffuse = (u_lightdiffuse0 * diffuseColor) * max(ldot, 0.0);
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 113: if (comp == 0x1u) {
08:07:869 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 114: if (ldot >= 0.0) {
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 115: ldot = dot(normalize(toLight + vec3(0.0, 0.0, 1.0)), worldnormal);
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 116: if (u_matspecular.a <= 0.0) {
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 117: ldot = 1.0;
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 118: } else {
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 119: ldot = pow(max(ldot, 0.0), u_matspecular.a);
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 120: }
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 121: if (ldot > 0.0)
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 122: lightSum1 += u_lightspecular0 * specularColor * ldot * lightScale;
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 123: }
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 124: }
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 125: lightSum0.rgb += (u_lightambient0 * ambientColor.rgb + diffuse) * lightScale;
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 126: }
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 127: if ((u_lightControl & 2u) != 0x0u) {
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 128: uint comp = (u_lightControl >> 0x08u) & 0x3u;
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 129: uint type = (u_lightControl >> 0x0au) & 0x3u;
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 130: if (type == 0x0u) {
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 131: toLight = u_lightpos1;
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 132: } else {
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 133: toLight = u_lightpos1 - worldpos;
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 134: distance = length(toLight);
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 135: toLight /= distance;
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 136: }
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 137: ldot = dot(toLight, worldnormal);
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 138: if (comp == 0x2u) {
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 139: if (u_matspecular.a <= 0.0) {
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 140: ldot = 1.0;
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 141: } else {
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 142: ldot = pow(max(ldot, 0.0), u_matspecular.a);
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 143: }
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 144: }
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 145: switch (int(type)) {
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 146: case 1:
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 147: lightScale = clamp(1.0 / dot(u_lightatt1, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 148: break;
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 149: case 2:
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 150: angle = length(u_lightdir1) == 0.0 ? 0.0 : dot(normalize(u_lightdir1), toLight);
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 151: if (angle >= u_lightangle_spotCoef1.x) {
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 152: lightScale = clamp(1.0 / dot(u_lightatt1, vec3(1.0, distance, distance*distance)), 0.0, 1.0) * (u_lightangle_spotCoef1.y <= 0.0 ? 1.0 : pow(angle, u_lightangle_spotCoef1.y));
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 153: } else {
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 154: lightScale = 0.0;
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 155: }
08:07:870 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 156: break;
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 157: default:
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 158: lightScale = 1.0;
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 159: break;
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 160: }
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 161: diffuse = (u_lightdiffuse1 * diffuseColor) * max(ldot, 0.0);
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 162: if (comp == 0x1u) {
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 163: if (ldot >= 0.0) {
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 164: ldot = dot(normalize(toLight + vec3(0.0, 0.0, 1.0)), worldnormal);
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 165: if (u_matspecular.a <= 0.0) {
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 166: ldot = 1.0;
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 167: } else {
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 168: ldot = pow(max(ldot, 0.0), u_matspecular.a);
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 169: }
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 170: if (ldot > 0.0)
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 171: lightSum1 += u_lightspecular1 * specularColor * ldot * lightScale;
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 172: }
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 173: }
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 174: lightSum0.rgb += (u_lightambient1 * ambientColor.rgb + diffuse) * lightScale;
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 175: }
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 176: if ((u_lightControl & 4u) != 0x0u) {
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 177: uint comp = (u_lightControl >> 0x0cu) & 0x3u;
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 178: uint type = (u_lightControl >> 0x0eu) & 0x3u;
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 179: if (type == 0x0u) {
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 180: toLight = u_lightpos2;
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 181: } else {
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 182: toLight = u_lightpos2 - worldpos;
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 183: distance = length(toLight);
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 184: toLight /= distance;
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 185: }
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 186: ldot = dot(toLight, worldnormal);
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 187: if (comp == 0x2u) {
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 188: if (u_matspecular.a <= 0.0) {
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 189: ldot = 1.0;
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 190: } else {
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 191: ldot = pow(max(ldot, 0.0), u_matspecular.a);
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 192: }
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 193: }
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 194: switch (int(type)) {
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 195: case 1:
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 196: lightScale = clamp(1.0 / dot(u_lightatt2, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
08:07:871 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 197: break;
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 198: case 2:
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 199: angle = length(u_lightdir2) == 0.0 ? 0.0 : dot(normalize(u_lightdir2), toLight);
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 200: if (angle >= u_lightangle_spotCoef2.x) {
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 201: lightScale = clamp(1.0 / dot(u_lightatt2, vec3(1.0, distance, distance*distance)), 0.0, 1.0) * (u_lightangle_spotCoef2.y <= 0.0 ? 1.0 : pow(angle, u_lightangle_spotCoef2.y));
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 202: } else {
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 203: lightScale = 0.0;
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 204: }
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 205: break;
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 206: default:
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 207: lightScale = 1.0;
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 208: break;
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 209: }
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 210: diffuse = (u_lightdiffuse2 * diffuseColor) * max(ldot, 0.0);
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 211: if (comp == 0x1u) {
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 212: if (ldot >= 0.0) {
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 213: ldot = dot(normalize(toLight + vec3(0.0, 0.0, 1.0)), worldnormal);
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 214: if (u_matspecular.a <= 0.0) {
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 215: ldot = 1.0;
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 216: } else {
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 217: ldot = pow(max(ldot, 0.0), u_matspecular.a);
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 218: }
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 219: if (ldot > 0.0)
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 220: lightSum1 += u_lightspecular2 * specularColor * ldot * lightScale;
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 221: }
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 222: }
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 223: lightSum0.rgb += (u_lightambient2 * ambientColor.rgb + diffuse) * lightScale;
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 224: }
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 225: if ((u_lightControl & 8u) != 0x0u) {
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 226: uint comp = (u_lightControl >> 0x10u) & 0x3u;
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 227: uint type = (u_lightControl >> 0x12u) & 0x3u;
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 228: if (type == 0x0u) {
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 229: toLight = u_lightpos3;
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 230: } else {
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 231: toLight = u_lightpos3 - worldpos;
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 232: distance = length(toLight);
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 233: toLight /= distance;
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 234: }
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 235: ldot = dot(toLight, worldnormal);
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 236: if (comp == 0x2u) {
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 237: if (u_matspecular.a <= 0.0) {
08:07:872 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 238: ldot = 1.0;
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 239: } else {
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 240: ldot = pow(max(ldot, 0.0), u_matspecular.a);
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 241: }
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 242: }
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 243: switch (int(type)) {
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 244: case 1:
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 245: lightScale = clamp(1.0 / dot(u_lightatt3, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 246: break;
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 247: case 2:
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 248: angle = length(u_lightdir3) == 0.0 ? 0.0 : dot(normalize(u_lightdir3), toLight);
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 249: if (angle >= u_lightangle_spotCoef3.x) {
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 250: lightScale = clamp(1.0 / dot(u_lightatt3, vec3(1.0, distance, distance*distance)), 0.0, 1.0) * (u_lightangle_spotCoef3.y <= 0.0 ? 1.0 : pow(angle, u_lightangle_spotCoef3.y));
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 251: } else {
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 252: lightScale = 0.0;
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 253: }
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 254: break;
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 255: default:
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 256: lightScale = 1.0;
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 257: break;
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 258: }
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 259: diffuse = (u_lightdiffuse3 * diffuseColor) * max(ldot, 0.0);
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 260: if (comp == 0x1u) {
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 261: if (ldot >= 0.0) {
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 262: ldot = dot(normalize(toLight + vec3(0.0, 0.0, 1.0)), worldnormal);
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 263: if (u_matspecular.a <= 0.0) {
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 264: ldot = 1.0;
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 265: } else {
08:07:873 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 266: ldot = pow(max(ldot, 0.0), u_matspecular.a);
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 267: }
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 268: if (ldot > 0.0)
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 269: lightSum1 += u_lightspecular3 * specularColor * ldot * lightScale;
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 270: }
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 271: }
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 272: lightSum0.rgb += (u_lightambient3 * ambientColor.rgb + diffuse) * lightScale;
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 273: }
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 274: v_color0 = clamp(clamp(lightSum0, 0.0, 1.0) + vec4(lightSum1, 0.0), 0.0, 1.0);
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 275: v_texcoord = vec3(texcoord.xy * u_uvscaleoffset.xy, 0.0);
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 276: v_fogdepth = (viewPos.z + u_fogcoef.x) * u_fogcoef.y;
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 277: vec3 projPos = outPos.xyz / outPos.w;
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 278: float projZ = (projPos.z - u_depthRange.z) * u_depthRange.w;
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 279: if (u_cullRangeMin.w <= 0.0 || projZ * outPos.w > -outPos.w) {
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 280: if ((projPos.x < u_cullRangeMin.x || projPos.y < u_cullRangeMin.y) || (projPos.x > u_cullRangeMax.x || projPos.y > u_cullRangeMax.y)) {
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 281: outPos.xyzw = u_cullRangeMax.wwww;
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 282: }
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 283: }
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 284: if (u_cullRangeMin.w <= 0.0) {
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 285: if (projPos.z < u_cullRangeMin.z || projPos.z > u_cullRangeMax.z) {
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 286: outPos.xyzw = u_cullRangeMax.wwww;
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 287: }
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 288: }
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 289: gl_Position = outPos;
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 290: }
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 //END
08:07:874 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345
08:07:875 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:258 Could not link program:
error: linking with uncompiled/unspecialized shader
08:07:875 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:259 VS desc:
01000000:80000b30 HWX T N Tex Light: LightUberShader Cull (failed)
08:07:875 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:260 FS desc:
00180000:00800002 Tex 2x TFuncMod
08:07:876 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:261 VS:
1: #version 120
2: #extension GL_EXT_gpu_shader4 : enable
3: // Driver: Mesa Intel(R) HD Graphics (ILK) - GLSL 120
4: #define gl_VertexIndex gl_VertexID
5: #define lowp
6: #define mediump
7: #define highp
8: #define splat3(x) vec3(x)
9: #define mul(x, y) ((x) * (y))
10: // 01000000:80000b30 HWX T N Tex Light: LightUberShader Cull
11: attribute vec3 position;
12: attribute mediump vec3 normal;
13: attribute vec2 texcoord;
14: uniform mat4 u_proj;
15: uniform mat4 u_world;
16: uniform mat4 u_view;
17: uniform vec4 u_uvscaleoffset;
18: uniform uint u_lightControl;
19: uniform vec3 u_lightpos0;
20: uniform mediump vec3 u_lightatt0;
21: uniform mediump vec3 u_lightdir0;
22: uniform mediump vec2 u_lightangle_spotCoef0;
23: uniform lowp vec3 u_lightambient0;
24: uniform lowp vec3 u_lightdiffuse0;
25: uniform lowp vec3 u_lightspecular0;
26: uniform vec3 u_lightpos1;
27: uniform mediump vec3 u_lightatt1;
28: uniform mediump vec3 u_lightdir1;
29: uniform mediump vec2 u_lightangle_spotCoef1;
30: uniform lowp vec3 u_lightambient1;
31: uniform lowp vec3 u_lightdiffuse1;
32: uniform lowp vec3 u_lightspecular1;
33: uniform vec3 u_lightpos2;
34: uniform mediump vec3 u_lightatt2;
35: uniform mediump vec3 u_lightdir2;
36: uniform mediump vec2 u_lightangle_spotCoef2;
37: uniform lowp vec3 u_lightambient2;
38: uniform lowp vec3 u_lightdiffuse2;
39: uniform lowp vec3 u_lightspecular2;
40: uniform vec3 u_lightpos3;
41: uniform mediump vec3 u_lightatt3;
42: uniform mediump vec3 u_lightdir3;
43: uniform mediump vec2 u_lightangle_spotCoef3;
44: uniform lowp vec3 u_lightambient3;
45: uniform lowp vec3 u_lightdiffuse3;
46: uniform lowp vec3 u_lightspecular3;
47: uniform lowp vec4 u_ambient;
48: uniform lowp vec3 u_matdiffuse;
49: uniform lowp vec4 u_matspecular;
50: uniform lowp vec3 u_matemissive;
51: uniform lowp
08:07:876 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:262 FS:
1: #version 120
2: #extension GL_EXT_gpu_shader4 : enable
3: // Driver: Mesa Intel(R) HD Graphics (ILK) - GLSL 120
4: #define DISCARD discard
5: #define lowp
6: #define mediump
7: #define highp
8: #define splat3(x) vec3(x)
9: #define mul(x, y) ((x) * (y))
10: // 00180000:00800002 Tex 2x TFuncMod
11: uniform sampler2D tex;
12: varying lowp vec4 v_color0;
13: varying mediump float v_fogdepth;
14: varying mediump vec3 v_texcoord;
15: void main() {
16: vec4 t = texture2D(tex, v_texcoord.xy);
17: vec4 p = v_color0;
18: vec4 v = vec4(t.rgb * p.rgb, p.a);
19: v.rgb = clamp(v.rgb * 2.0, 0.0, 1.0);
20: gl_FragColor = v;
21: }
08:07:879 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:258 Could not link program:
error: linking with uncompiled/unspecialized shader
08:07:879 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:259 VS desc:
01000000:80000b30 HWX T N Tex Light: LightUberShader Cull (failed)
08:07:879 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:260 FS desc:
00180000:0080d022 Tex TexAlpha 2x TFuncMod AlphaTest >
08:07:879 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:261 VS:
1: #version 120
2: #extension GL_EXT_gpu_shader4 : enable
3: // Driver: Mesa Intel(R) HD Graphics (ILK) - GLSL 120
4: #define gl_VertexIndex gl_VertexID
5: #define lowp
6: #define mediump
7: #define highp
8: #define splat3(x) vec3(x)
9: #define mul(x, y) ((x) * (y))
10: // 01000000:80000b30 HWX T N Tex Light: LightUberShader Cull
11: attribute vec3 position;
12: attribute mediump vec3 normal;
13: attribute vec2 texcoord;
14: uniform mat4 u_proj;
15: uniform mat4 u_world;
16: uniform mat4 u_view;
17: uniform vec4 u_uvscaleoffset;
18: uniform uint u_lightControl;
19: uniform vec3 u_lightpos0;
20: uniform mediump vec3 u_lightatt0;
21: uniform mediump vec3 u_lightdir0;
22: uniform mediump vec2 u_lightangle_spotCoef0;
23: uniform lowp vec3 u_lightambient0;
24: uniform lowp vec3 u_lightdiffuse0;
25: uniform lowp vec3 u_lightspecular0;
26: uniform vec3 u_lightpos1;
27: uniform mediump vec3 u_lightatt1;
28: uniform mediump vec3 u_lightdir1;
29: uniform mediump vec2 u_lightangle_spotCoef1;
30: uniform lowp vec3 u_lightambient1;
31: uniform lowp vec3 u_lightdiffuse1;
32: uniform lowp vec3 u_lightspecular1;
33: uniform vec3 u_lightpos2;
34: uniform mediump vec3 u_lightatt2;
35: uniform mediump vec3 u_lightdir2;
36: uniform mediump vec2 u_lightangle_spotCoef2;
37: uniform lowp vec3 u_lightambient2;
38: uniform lowp vec3 u_lightdiffuse2;
39: uniform lowp vec3 u_lightspecular2;
40: uniform vec3 u_lightpos3;
41: uniform mediump vec3 u_lightatt3;
42: uniform mediump vec3 u_lightdir3;
43: uniform mediump vec2 u_lightangle_spotCoef3;
44: uniform lowp vec3 u_lightambient3;
45: uniform lowp vec3 u_lightdiffuse3;
46: uniform lowp vec3 u_lightspecular3;
47: uniform lowp vec4 u_ambient;
48: uniform lowp vec3 u_matdiffuse;
49: uniform lowp vec4 u_matspecular;
50: uniform lowp vec3 u_matemissive;
51: uniform lowp
08:07:879 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:262 FS:
1: #version 120
2: #extension GL_EXT_gpu_shader4 : enable
3: // Driver: Mesa Intel(R) HD Graphics (ILK) - GLSL 120
4: #define DISCARD discard
5: #define lowp
6: #define mediump
7: #define highp
8: #define splat3(x) vec3(x)
9: #define mul(x, y) ((x) * (y))
10: // 00180000:0080d022 Tex TexAlpha 2x TFuncMod AlphaTest >
11: uniform sampler2D tex;
12: uniform uint u_alphacolorref;
13: uniform uint u_alphacolormask;
14: varying lowp vec4 v_color0;
15: varying mediump float v_fogdepth;
16: varying mediump vec3 v_texcoord;
17: int roundAndScaleTo255i(in float x) { return int(floor(x * 255.0 + 0.5)); }
18: void main() {
19: vec4 t = texture2D(tex, v_texcoord.xy);
20: vec4 p = v_color0;
21: vec4 v = p * t;
22: v.rgb = clamp(v.rgb * 2.0, 0.0, 1.0);
23: if ((roundAndScaleTo255i(v.a) & int(u_alphacolormask >> 0x18u)) <= int(u_alphacolorref >> 0x18u)) DISCARD;
24: gl_FragColor = v;
25: }
Alright, so it's a shader compliation error, though ideally that shouldn't crash.
08:07:866 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 Error in shader compilation for: 01000000:80000b30 HWX T N Tex Light: LightUberShader Cull 08:07:866 user_main E[G3D]: OpenGL/GLQueueRunner.cpp:345 Info log: 0:96(2): error: illegal use of reserved word `switch'
That's, uh, surprising. Seems we are ending up on a very old GLSL version that doesn't support switch:
1: #version 120 2: #extension GL_EXT_gpu_shader4 : enable 3: // Driver: Mesa Intel(R) HD Graphics (ILK) - GLSL 120
I'm guessing you can't switch to Vulkan instead?
I checked, and in the latest builds we have removed the switch. So this might already be fixed, if you're able to comple and try the latest.
there's only OpenGL option in backend. not sure if the info below can confirm whether or not Vulkan is supported.
$ vulkaninfo
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
==========
VULKANINFO
==========
Vulkan Instance Version: 1.2.162
Instance Extensions: count = 18
===============================
VK_EXT_acquire_xlib_display : extension revision 1
VK_EXT_debug_report : extension revision 8
VK_EXT_debug_utils : extension revision 2
VK_EXT_direct_mode_display : extension revision 1
VK_EXT_display_surface_counter : extension revision 1
VK_KHR_device_group_creation : extension revision 1
VK_KHR_display : extension revision 23
VK_KHR_external_fence_capabilities : extension revision 1
VK_KHR_external_memory_capabilities : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2 : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 1
VK_KHR_get_surface_capabilities2 : extension revision 1
VK_KHR_surface : extension revision 25
VK_KHR_surface_protected_capabilities : extension revision 1
VK_KHR_wayland_surface : extension revision 6
VK_KHR_xcb_surface : extension revision 6
VK_KHR_xlib_surface : extension revision 6
Layers: count = 2
=================
VK_LAYER_MESA_device_select (Linux device selection layer) Vulkan version 1.2.73, layer version 1:
Layer Extensions: count = 0
Devices: count = 1
GPU id = 0 (llvmpipe (LLVM 11.0.1, 128 bits))
Layer-Device Extensions: count = 0
VK_LAYER_MESA_overlay (Mesa Overlay layer) Vulkan version 1.1.73, layer version 1:
Layer Extensions: count = 0
Devices: count = 1
GPU id = 0 (llvmpipe (LLVM 11.0.1, 128 bits))
Layer-Device Extensions: count = 0
Presentable Surfaces:
=====================
GPU id : 0 (llvmpipe (LLVM 11.0.1, 128 bits)):
Surface types: count = 2
VK_KHR_xcb_surface
VK_KHR_xlib_surface
Formats: count = 2
SurfaceFormat[0]:
format = FORMAT_B8G8R8A8_SRGB
colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
SurfaceFormat[1]:
format = FORMAT_B8G8R8A8_UNORM
colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
Present Modes: count = 4
PRESENT_MODE_IMMEDIATE_KHR
PRESENT_MODE_MAILBOX_KHR
PRESENT_MODE_FIFO_KHR
PRESENT_MODE_FIFO_RELAXED_KHR
VkSurfaceCapabilitiesKHR:
-------------------------
minImageCount = 3
maxImageCount = 0
currentExtent:
width = 256
height = 256
minImageExtent:
width = 256
height = 256
maxImageExtent:
width = 256
height = 256
maxImageArrayLayers = 1
supportedTransforms: count = 1
SURFACE_TRANSFORM_IDENTITY_BIT_KHR
currentTransform = SURFACE_TRANSFORM_IDENTITY_BIT_KHR
supportedCompositeAlpha: count = 2
COMPOSITE_ALPHA_OPAQUE_BIT_KHR
COMPOSITE_ALPHA_INHERIT_BIT_KHR
supportedUsageFlags: count = 5
IMAGE_USAGE_TRANSFER_SRC_BIT
IMAGE_USAGE_TRANSFER_DST_BIT
IMAGE_USAGE_SAMPLED_BIT
IMAGE_USAGE_STORAGE_BIT
IMAGE_USAGE_COLOR_ATTACHMENT_BIT
VkSurfaceCapabilities2EXT:
--------------------------
supportedSurfaceCounters: count = 0
None
VkSurfaceProtectedCapabilitiesKHR:
----------------------------------
supportsProtected = false
Device Groups:
==============
Group 0:
Properties:
physicalDevices: count = 1
llvmpipe (LLVM 11.0.1, 128 bits) (ID: 0)
subsetAllocation = 0
Present Capabilities = Group does not support VK_KHR_device_group, skipping printing present capabilities
Device Properties and Extensions:
=================================
GPU0:
VkPhysicalDeviceProperties:
---------------------------
apiVersion = 4194306 (1.0.2)
driverVersion = 1 (0x0001)
vendorID = 0x10005
deviceID = 0x0000
deviceType = PHYSICAL_DEVICE_TYPE_CPU
deviceName = llvmpipe (LLVM 11.0.1, 128 bits)
VkPhysicalDeviceLimits:
-----------------------
maxImageDimension1D = 16384
maxImageDimension2D = 16384
maxImageDimension3D = 4096
maxImageDimensionCube = 32768
maxImageArrayLayers = 2048
maxTexelBufferElements = 134217728
maxUniformBufferRange = 65536
maxStorageBufferRange = 134217728
maxPushConstantsSize = 128
maxMemoryAllocationCount = 4096
maxSamplerAllocationCount = 32768
bufferImageGranularity = 0x00000040
sparseAddressSpaceSize = 0x00000000
maxBoundDescriptorSets = 8
maxPerStageDescriptorSamplers = 32
maxPerStageDescriptorUniformBuffers = 16
maxPerStageDescriptorStorageBuffers = 16
maxPerStageDescriptorSampledImages = 128
maxPerStageDescriptorStorageImages = 128
maxPerStageDescriptorInputAttachments = 8
maxPerStageResources = 128
maxDescriptorSetSamplers = 32768
maxDescriptorSetUniformBuffers = 256
maxDescriptorSetUniformBuffersDynamic = 256
maxDescriptorSetStorageBuffers = 256
maxDescriptorSetStorageBuffersDynamic = 256
maxDescriptorSetSampledImages = 256
maxDescriptorSetStorageImages = 256
maxDescriptorSetInputAttachments = 256
maxVertexInputAttributes = 32
maxVertexInputBindings = 32
maxVertexInputAttributeOffset = 2047
maxVertexInputBindingStride = 2048
maxVertexOutputComponents = 128
maxTessellationGenerationLevel = 64
maxTessellationPatchSize = 32
maxTessellationControlPerVertexInputComponents = 128
maxTessellationControlPerVertexOutputComponents = 128
maxTessellationControlPerPatchOutputComponents = 128
maxTessellationControlTotalOutputComponents = 4096
maxTessellationEvaluationInputComponents = 128
maxTessellationEvaluationOutputComponents = 128
maxGeometryShaderInvocations = 32
maxGeometryInputComponents = 64
maxGeometryOutputComponents = 128
maxGeometryOutputVertices = 1024
maxGeometryTotalOutputComponents = 1024
maxFragmentInputComponents = 128
maxFragmentOutputAttachments = 8
maxFragmentDualSrcAttachments = 2
maxFragmentCombinedOutputResources = 8
maxComputeSharedMemorySize = 32768
maxComputeWorkGroupCount: count = 3
65535
65535
65535
maxComputeWorkGroupInvocations = 1024
maxComputeWorkGroupSize: count = 3
1024
1024
1024
subPixelPrecisionBits = 8
subTexelPrecisionBits = 8
mipmapPrecisionBits = 8
maxDrawIndexedIndexValue = 4294967295
maxDrawIndirectCount = 4294967295
maxSamplerLodBias = 16
maxSamplerAnisotropy = 16
maxViewports = 16
maxViewportDimensions: count = 2
16384
16384
viewportBoundsRange: count = 2
-32768
32768
viewportSubPixelBits = 0
minMemoryMapAlignment = 4096
minTexelBufferOffsetAlignment = 0x00000010
minUniformBufferOffsetAlignment = 0x00000010
minStorageBufferOffsetAlignment = 0x00000010
minTexelOffset = -32
maxTexelOffset = 31
minTexelGatherOffset = -32
maxTexelGatherOffset = 31
minInterpolationOffset = -2
maxInterpolationOffset = 2
subPixelInterpolationOffsetBits = 8
maxFramebufferWidth = 16384
maxFramebufferHeight = 16384
maxFramebufferLayers = 2048
framebufferColorSampleCounts: count = 2
SAMPLE_COUNT_1_BIT
SAMPLE_COUNT_4_BIT
framebufferDepthSampleCounts: count = 2
SAMPLE_COUNT_1_BIT
SAMPLE_COUNT_4_BIT
framebufferStencilSampleCounts: count = 2
SAMPLE_COUNT_1_BIT
SAMPLE_COUNT_4_BIT
framebufferNoAttachmentsSampleCounts: count = 2
SAMPLE_COUNT_1_BIT
SAMPLE_COUNT_4_BIT
maxColorAttachments = 8
sampledImageColorSampleCounts: count = 2
SAMPLE_COUNT_1_BIT
SAMPLE_COUNT_4_BIT
sampledImageIntegerSampleCounts: count = 2
SAMPLE_COUNT_1_BIT
SAMPLE_COUNT_4_BIT
sampledImageDepthSampleCounts: count = 2
SAMPLE_COUNT_1_BIT
SAMPLE_COUNT_4_BIT
sampledImageStencilSampleCounts: count = 2
SAMPLE_COUNT_1_BIT
SAMPLE_COUNT_4_BIT
storageImageSampleCounts: count = 2
SAMPLE_COUNT_1_BIT
SAMPLE_COUNT_4_BIT
maxSampleMaskWords = 1
timestampComputeAndGraphics = true
timestampPeriod = 1
maxClipDistances = 8
maxCullDistances = 8
maxCombinedClipAndCullDistances = 8
discreteQueuePriorities = 2
pointSizeRange: count = 2
0
255
lineWidthRange: count = 2
1
1
pointSizeGranularity = 0.125
lineWidthGranularity = 0
strictLines = false
standardSampleLocations = true
optimalBufferCopyOffsetAlignment = 0x00000080
optimalBufferCopyRowPitchAlignment = 0x00000080
nonCoherentAtomSize = 0x00000040
VkPhysicalDeviceSparseProperties:
---------------------------------
residencyStandard2DBlockShape = false
residencyStandard2DMultisampleBlockShape = false
residencyStandard3DBlockShape = false
residencyAlignedMipSize = false
residencyNonResidentStrict = false
VkPhysicalDeviceDriverPropertiesKHR:
------------------------------------
driverID = DRIVER_ID_MESA_LLVMPIPE
driverName = llvmpipe
driverInfo = Mesa 20.3.5 (LLVM 11.0.1)
conformanceVersion = 1.0.0.0
VkPhysicalDeviceIDPropertiesKHR:
--------------------------------
deviceUUID = 00000000-0000-0000-0000-000000000000
driverUUID = 00000000-0000-0000-0000-000000000000
deviceNodeMask = 0
deviceLUIDValid = false
Device Extensions: count = 14
-----------------------------
VK_EXT_external_memory_dma_buf : extension revision 1
VK_EXT_private_data : extension revision 1
VK_GOOGLE_decorate_string : extension revision 1
VK_GOOGLE_hlsl_functionality1 : extension revision 1
VK_KHR_bind_memory2 : extension revision 1
VK_KHR_dedicated_allocation : extension revision 1
VK_KHR_driver_properties : extension revision 1
VK_KHR_get_memory_requirements2 : extension revision 1
VK_KHR_incremental_present : extension revision 1
VK_KHR_maintenance1 : extension revision 1
VK_KHR_relaxed_block_layout : extension revision 1
VK_KHR_sampler_mirror_clamp_to_edge : extension revision 1
VK_KHR_storage_buffer_storage_class : extension revision 1
VK_KHR_swapchain : extension revision 68
VkQueueFamilyProperties:
========================
queueProperties[0]:
-------------------
minImageTransferGranularity = (1,1,1)
queueCount = 1
queueFlags = QUEUE_GRAPHICS | QUEUE_COMPUTE | QUEUE_TRANSFER
timestampValidBits = 64
present support = true
VkPhysicalDeviceMemoryProperties:
=================================
memoryHeaps: count = 1
memoryHeaps[0]:
size = 2147483648 (0x80000000) (2.00 GiB)
budget = 0 (0x00000000) (0.00 B)
usage = 0 (0x00000000) (0.00 B)
flags: count = 1
MEMORY_HEAP_DEVICE_LOCAL_BIT
memoryTypes: count = 1
memoryTypes[0]:
heapIndex = 0
propertyFlags = 0x000f: count = 4
MEMORY_PROPERTY_DEVICE_LOCAL_BIT
MEMORY_PROPERTY_HOST_VISIBLE_BIT
MEMORY_PROPERTY_HOST_COHERENT_BIT
MEMORY_PROPERTY_HOST_CACHED_BIT
usable for:
IMAGE_TILING_OPTIMAL:
color images
FORMAT_D16_UNORM
FORMAT_X8_D24_UNORM_PACK32
FORMAT_D32_SFLOAT
FORMAT_S8_UINT
FORMAT_D24_UNORM_S8_UINT
FORMAT_D32_SFLOAT_S8_UINT
(non-sparse)
IMAGE_TILING_LINEAR:
color images
(non-sparse)
VkPhysicalDeviceFeatures:
=========================
robustBufferAccess = true
fullDrawIndexUint32 = true
imageCubeArray = true
independentBlend = true
geometryShader = true
tessellationShader = true
sampleRateShading = true
dualSrcBlend = true
logicOp = true
multiDrawIndirect = true
drawIndirectFirstInstance = true
depthClamp = true
depthBiasClamp = true
fillModeNonSolid = true
depthBounds = false
wideLines = false
largePoints = true
alphaToOne = true
multiViewport = true
samplerAnisotropy = false
textureCompressionETC2 = false
textureCompressionASTC_LDR = false
textureCompressionBC = true
occlusionQueryPrecise = true
pipelineStatisticsQuery = true
vertexPipelineStoresAndAtomics = true
fragmentStoresAndAtomics = true
shaderTessellationAndGeometryPointSize = true
shaderImageGatherExtended = true
shaderStorageImageExtendedFormats = false
shaderStorageImageMultisample = true
shaderStorageImageReadWithoutFormat = false
shaderStorageImageWriteWithoutFormat = true
shaderUniformBufferArrayDynamicIndexing = false
shaderSampledImageArrayDynamicIndexing = false
shaderStorageBufferArrayDynamicIndexing = false
shaderStorageImageArrayDynamicIndexing = false
shaderClipDistance = true
shaderCullDistance = true
shaderFloat64 = true
shaderInt64 = true
shaderInt16 = true
shaderResourceResidency = false
shaderResourceMinLod = false
sparseBinding = false
sparseResidencyBuffer = false
sparseResidencyImage2D = false
sparseResidencyImage3D = false
sparseResidency2Samples = false
sparseResidency4Samples = false
sparseResidency8Samples = false
sparseResidency16Samples = false
sparseResidencyAliased = false
variableMultisampleRate = false
inheritedQueries = false
VkPhysicalDevicePrivateDataFeaturesEXT:
---------------------------------------
privateData = true
Yeah, the only available VK device it finds is lavapipe which is a software implementation.
Anyway like I said, this issue is very likely fixed already, just not yet in an official release. So try to compile from master.
I'm gonna close this since I'm 95% sure it's fixed for you in the latest build. Let's re-open if it still crashes after 1.15, if you only desire to use the official releases.
Also, I checked my self-dumped ISO, md5sum matches.
hi @hrydgard,it's been a while, i just come back to confirm that the defect is fixed in v1.15.4.
great, thanks for checking.
Game or games this happens in
ULES00763v1.00 Virtua Tennis 3
What area of the game / PPSSPP
Start game, then
in fact, you can select anything in step 6 and it'll crash the same way.
What should happen
i should be able to start playing a single game.
Logs
it's installed via Flatpak on Linux. it used to work until i upgraded from v1.13.2 to v1.14.4. i tried downgrade to 1.14.1, the oldest release on Flathub, it doesn't work either. not sure how can i get some logs.
by the way, can you please provide more previous releases on Flathub? currently i can only find up to v1.14.1, as show below.
Platform
Linux / BSD
Mobile phone model or graphics card
Mesa Intel(R) HD Graphics (ILK)
PPSSPP version affected
v1.14.4
Last working version
v1.13.2
Graphics backend (3D API)
OpenGL / GLES
Checklist