[Webkit-unassigned] [Bug 279315] New: [iOS Simulator] Simple Three.js example crash in iOS 18.0 beta 7

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sun Sep 8 04:40:53 PDT 2024


https://bugs.webkit.org/show_bug.cgi?id=279315

            Bug ID: 279315
           Summary: [iOS Simulator] Simple Three.js example crash in iOS
                    18.0 beta 7
           Product: WebKit
           Version: Safari 18
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: WebGL
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: vincent.ogloblinsky at gmail.com
                CC: djg at apple.com, kbr at google.com, kkinnunen at apple.com

Hi,
Just trying to open : https://threejs.org/examples/#webgl_geometry_cube in a simulator of iOS 18.0 beta 7, in Safari just gives me these errors in the console, and no rendering in the browser.
In a simulator with iOS 18.1 beta 2, it works fine.

[Error] THREE.WebGLProgram: Shader Error 1282 - VALIDATE_STATUS false

Material Name: 
Material Type: MeshBasicMaterial

Program Info Log: Internal error compiling shader with Metal backend.
<built-in>:1:2: fatal error: file '/Users/vincent/Library/Developer/CoreSimulator/Devices/06E68FE1-7888-4D4F-A0F0-21B3B698D587/data/Containers/Data/Application/80C250A4-A61A-4ED0-8797-94D078968E94/Library/Caches/com.apple.WebKit.GPU/3QLOW91JXVL0S/monolithic_metal.pcm' is not a valid precompiled module file
#include "metal_types"
 ^

-----


#include <metal_stdlib>

#define ANGLE_ALWAYS_INLINE __attribute__((always_inline))

ANGLE_ALWAYS_INLINE int ANGLE_int_clamp(int value, int minValue, int maxValue)
{
    return ((value < minValue) ?  minValue : ((value > maxValue) ? maxValue : value));
};

#if TRANSFORM_FEEDBACK_ENABLED
    #define __VERTEX_OUT(args) void
#else
    #define __VERTEX_OUT(args) args
#endif

#define ANGLE_tensor metal::array
#pragma clang diagnostic ignored "-Wunused-value"
#define ANGLE_SAMPLE_COMPARE_GRADIENT_INDEX   0
#define ANGLE_SAMPLE_COMPARE_LOD_INDEX        1
#define ANGLE_RASTERIZATION_DISCARD_INDEX     2
#define ANGLE_MULTISAMPLED_RENDERING_INDEX    3
#define ANGLE_DEPTH_WRITE_ENABLED_INDEX       4
#define ANGLE_EMULATE_ALPHA_TO_COVERAGE_INDEX 5
#define ANGLE_WRITE_HELPER_SAMPLE_MASK_INDEX  6

constant bool ANGLEUseSampleCompareGradient [[function_constant(ANGLE_SAMPLE_COMPARE_GRADIENT_INDEX)]];
constant bool ANGLEUseSampleCompareLod      [[function_constant(ANGLE_SAMPLE_COMPARE_LOD_INDEX)]];
constant bool ANGLERasterizerDisabled       [[function_constant(ANGLE_RASTERIZATION_DISCARD_INDEX)]];
constant bool ANGLEMultisampledRendering    [[function_constant(ANGLE_MULTISAMPLED_RENDERING_INDEX)]];
constant bool ANGLEDepthWriteEnabled        [[function_constant(ANGLE_DEPTH_WRITE_ENABLED_INDEX)]];
constant bool ANGLEEmulateAlphaToCoverage   [[function_constant(ANGLE_EMULATE_ALPHA_TO_COVERAGE_INDEX)]];
constant bool ANGLEWriteHelperSampleMask    [[function_constant(ANGLE_WRITE_HELPER_SAMPLE_MASK_INDEX)]];

#define ANGLE_ALPHA0

struct ANGLEDepthRangeParams
{
  float ANGLE_near;
  float ANGLE_far;
  float ANGLE_diff;
};

struct ANGLEUniformBlock
{
  metal::uint2 ANGLE_acbBufferOffsets;
  metal::float2 ANGLE_depthRange;
  uint32_t ANGLE_renderArea;
  uint32_t ANGLE_flipXY;
  uint32_t ANGLE_dither;
  uint32_t ANGLE_misc;
  metal::int4 ANGLE_xfbBufferOffsets;
  int ANGLE_xfbVerticesPerInstance;
  uint32_t ANGLE_coverageMask;
  metal::uint2 ANGLE_unused;
};

struct ANGLE_UserUniforms
{
  metal::float4x4 _umodelViewMatrix;
  metal::float4x4 _uprojectionMatrix;
  metal::float3x3 _umapTransform;
};

struct ANGLE_VertexOut
{
  metal::float2 _uvMapUv;
  metal::float4 gl_Position [[position]];
};

struct ANGLE_VertexIn
{
  metal::float3 _uposition[[attribute(0)]];
  metal::float2 _uuv[[attribute(2)]];
};

metal::float4 ANGLE_s164b(float ANGLE_s164c, float ANGLE_s164d, float ANGLE_s164e, float ANGLE_s164f)
{
  metal::float4 ANGLE__1 = metal::float4(ANGLE_s164c, ANGLE_s164d, ANGLE_s164e, ANGLE_s164f);
  return ANGLE__1;;
}

metal::float4 ANGLE_s1648(metal::float3 ANGLE_s1649, float ANGLE_s164a)
{
  metal::float4 ANGLE__2 = metal::float4(ANGLE_s1649.x, ANGLE_s1649.y, ANGLE_s1649.z, ANGLE_s164a);
  return ANGLE__2;;
}

metal::float3 ANGLE_s1645(metal::float2 ANGLE_s1646, int ANGLE_s1647)
{
  float ANGLE__3 = float(ANGLE_s1647);
  metal::float3 ANGLE__4 = metal::float3(ANGLE_s1646.x, ANGLE_s1646.y, ANGLE__3);
  return ANGLE__4;;
}

void ANGLE__0_main(thread ANGLE_VertexOut & ANGLE_vertexOut, thread ANGLE_VertexIn & ANGLE_vertexIn, constant ANGLE_UserUniforms & ANGLE_userUniforms)
{
  ANGLE_vertexOut.gl_Position = metal::float4(0.0f, 0.0f, 0.0f, 0.0f);
  ANGLE_vertexOut._uvMapUv = metal::float2(0.0f, 0.0f);
  metal::float3 ANGLE__5 = ANGLE_s1645(ANGLE_vertexIn._uuv, 1);
  metal::float3 ANGLE__6 = (ANGLE_userUniforms._umapTransform * ANGLE__5);
  ANGLE_vertexOut._uvMapUv = ANGLE__6.xy;
  metal::float3 _utransformed = ANGLE_vertexIn._uposition;
  metal::float4 _umvPosition = ANGLE_s1648(_utransformed, 1.0f);
  _umvPosition = (ANGLE_userUniforms._umodelViewMatrix * _umvPosition);
  ANGLE_vertexOut.gl_Position = (ANGLE_userUniforms._uprojectionMatrix * _umvPosition);
}

vertex __VERTEX_OUT(ANGLE_VertexOut)  main0(ANGLE_VertexIn ANGLE_vertexIn [[stage_in]], constant ANGLE_UserUniforms & ANGLE_userUniforms [[buffer(19)]], constant ANGLEUniformBlock & ANGLE_angleUniforms [[buffer(17)]], uint32_t ANGLE_instanceIdMod [[instance_id]], uint32_t ANGLE_baseInstance [[base_instance]], uint32_t ANGLE_vertexIDMetal [[vertex_id]]  )
{
  ANGLE_VertexOut ANGLE_vertexOut;
  {
    ANGLE__0_main(ANGLE_vertexOut, ANGLE_vertexIn, ANGLE_userUniforms);

    float ANGLE__11;
    if (ANGLE_angleUniforms.ANGLE_depthRange.y < ANGLE_angleUniforms.ANGLE_depthRange.x)
    {
      ANGLE__11 = -1.0f;
    }
    else
    {
      ANGLE__11 = 1.0f;
    }
    ANGLE_vertexOut.gl_Position.z = (ANGLE_vertexOut.gl_Position.z * ANGLE__11);
    uint32_t ANGLE__13 = (ANGLE_angleUniforms.ANGLE_misc >> 20u);
    uint32_t ANGLE__14 = (ANGLE__13 & 1u);
    bool ANGLE__15 = bool(ANGLE__14);
    if (ANGLE__15)
    {
      float ANGLE__16 = (ANGLE_vertexOut.gl_Position.z + ANGLE_vertexOut.gl_Position.w);
      ANGLE_vertexOut.gl_Position.z = (ANGLE__16 * 0.5f);
    } else {}
    metal::float4 ANGLE__18 = metal::unpack_snorm4x8_to_float(ANGLE_angleUniforms.ANGLE_flipXY);
    ANGLE_vertexOut.gl_Position.y = (ANGLE_vertexOut.gl_Position.y * ANGLE__18.w);
    if (ANGLERasterizerDisabled)
    {
      ANGLE_vertexOut.gl_Position = ANGLE_s164b(-3.0f, -3.0f, -3.0f, 1.0f);
    } else {}
  }
  #if TRANSFORM_FEEDBACK_ENABLED
  return;
  #else
  return ANGLE_vertexOut;
  #endif

}

-----


        onFirstUse (three.module.js:20195)
        (anonymous function) (three.module.js:20268)
        setProgram (three.module.js:30544)
        (anonymous function) (three.module.js:29340)
        renderObject (three.module.js:30211)
        renderObjects (three.module.js:30180)
        renderScene (three.module.js:30029)
        (anonymous function) (three.module.js:29847)
        animate (webgl_geometry_cube.html:70)
        onAnimationFrame (three.module.js:29682)
        onAnimationFrame (three.module.js:13485)
```

```
[Error] WebGL: INVALID_OPERATION: useProgram: program not valid
        useProgram
        useProgram (three.module.js:23086)
        setProgram (three.module.js:30547)
        (anonymous function) (three.module.js:29340)
        renderObject (three.module.js:30211)
        renderObjects (three.module.js:30180)
        renderScene (three.module.js:30029)
        (anonymous function) (three.module.js:29847)
        animate (webgl_geometry_cube.html:70)
        onAnimationFrame (three.module.js:29682)
        onAnimationFrame (three.module.js:13485)
```

```
WebGL: INVALID_OPERATION: Vertex shader input type does not match the type of the bound vertex attribute.
```

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20240908/daec6165/attachment-0001.htm>


More information about the webkit-unassigned mailing list