hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
11.36k stars 2.18k forks source link

Virtua Tennis 3 crashes on v1.14 #17229

Closed codingsince1985 closed 1 year ago

codingsince1985 commented 1 year ago

Game or games this happens in

ULES00763v1.00 Virtua Tennis 3

What area of the game / PPSSPP

Start game, then

  1. press "START"
  2. press "OK"
  3. select "Continue without loading"
  4. select again "Continue without loading"
  5. select "OK"
  6. select "TOURNAMENT"
  7. select "SINGLES"
  8. select 1 (Roger Federer)
  9. you'll see blank screen for ~10 sec, then application exits

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.

$ flatpak remote-info --log flathub org.ppsspp.PPSSPP
Remote ‘flathub’ found in multiple installations:

   1) system
   2) user

Which do you want to use (0 to abort)? [0-2]: 1
        ID: org.ppsspp.PPSSPP
       Ref: app/org.ppsspp.PPSSPP/x86_64/stable
      Arch: x86_64
    Branch: x86_64
Collection: org.flathub.Stable
  Download: 15.6 MB
 Installed: 30.6 MB
   Runtime: org.freedesktop.Platform/x86_64/22.08
       Sdk: org.freedesktop.Sdk/x86_64/22.08

    Commit: 0f2d0a25ba45e5c3bb60dd68f7c341201befe87c0f77e055012d5f8d1a64b8eb
    Parent: 80bd7493c90680577f019588a4b1963c6aebad4b10a19ebc8065d09b1ec4ae25
   Subject: Use env to set wm classname (d0e9845d)
      Date: 2023-01-09 06:54:26 +0000
   History: 

    Commit: 80bd7493c90680577f019588a4b1963c6aebad4b10a19ebc8065d09b1ec4ae25
   Subject: Use env to set wm classname (d0e9845d)
      Date: 2023-01-09 06:54:26 +0000

    Commit: 0a1bd8934321b61679f4a714d9cbafd09ac67eef0b3cb77a028630b6ec140554
   Subject: Use env to set wm classname (d0e9845d)
      Date: 2023-01-09 06:54:26 +0000

    Commit: 56e27068f5d45875e8638d8f2734220f1e2ffd5b6eff9ddcbf541e3b21c4ce40
   Subject: Update ppsspp.git to 1.14.4 (e80ddde9)
      Date: 2023-01-03 12:02:02 +0000

    Commit: 66d709a996f55d10a6152ac753d3bda6629199954e6f7b4fc89b5e0f5da7cf74
   Subject: Update ppsspp.git to 1.14.3 (bf4e5faf)
      Date: 2023-01-02 11:39:23 +0000

    Commit: 5fb8197cc50c9e1f47c516edefafa60578c67ec936ee4886695fddcacacc3c85
   Subject: Update ppsspp.git to 1.14.2 (d8577e9e)
      Date: 2022-12-31 07:15:04 +0000

    Commit: 4a91d7682659cd2f7f82005a776b4548693bae796f68d7459120280c75638486
   Subject: Update ppsspp.git to 1.14.1 (625170d3)
      Date: 2022-12-20 14:26:52 +0000

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

unknownbrackets commented 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]

hrydgard commented 1 year ago

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.

codingsince1985 commented 1 year ago

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.

codingsince1985 commented 1 year ago

i got same result on its US version.

codingsince1985 commented 1 year ago

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,
codingsince1985 commented 1 year ago

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:  }
hrydgard commented 1 year ago

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?

hrydgard commented 1 year ago

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.

codingsince1985 commented 1 year ago

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
hrydgard commented 1 year ago

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.

hrydgard commented 1 year ago

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.

codingsince1985 commented 1 year ago

hi @hrydgard,it's been a while, i just come back to confirm that the defect is fixed in v1.15.4.

hrydgard commented 1 year ago

great, thanks for checking.