<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>283576</bug_id>
          
          <creation_ts>2024-11-22 10:07:00 -0800</creation_ts>
          <short_desc>REGRESSION: WebGL shader linking error with Metal backend when mixing scalar with vector</short_desc>
          <delta_ts>2024-12-11 13:14:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>Safari 18</version>
          <rep_platform>Mac (Apple Silicon)</rep_platform>
          <op_sys>macOS 15</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>BrowserCompat, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>edmund</reporter>
          <assigned_to name="Tadeu Zagallo">tzagallo</assigned_to>
          <cc>benzakhar.manashirov</cc>
    
    <cc>djg</cc>
    
    <cc>karlcow</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2077066</commentid>
    <comment_count>0</comment_count>
      <attachid>473341</attachid>
    <who name="">edmund</who>
    <bug_when>2024-11-22 10:07:00 -0800</bug_when>
    <thetext>Created attachment 473341
A webpage that reproduces the issue

When subtracting a vector from a scalar in a GLSL shader, the Metal backend throws the following error during the linking stage:

WebGL: INVALID_OPERATION: Error: 0x00000502, in /AppleInternal/Library/BuildRoots/f00160a0-8d47-11ef-b394-4a83e32a47e1/Library/Caches/com.apple.xbs/Sources/ANGLE/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/ProgramExecutableMtl.mm, CreateMslShaderLib:381. Internal error compiling shader with Metal backend.
program_source:36:12: error: as_type cast from vector &apos;metal::make_unsigned_t&lt;int __attribute__((ext_vector_type(4)))&gt;&apos; (aka &apos;metal::_make_unsigned_impl&lt;int __attribute__((ext_vector_type(4)))&gt;::type&apos;) to scalar &apos;int&apos; of different size
    return as_type&lt;X&gt;(as_type&lt;metal::make_unsigned_t&lt;X&gt;&gt;(x) - as_type&lt;metal::make_unsigned_t&lt;Y&gt;&gt;(y));
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
program_source:128:24: note: in instantiation of function template specialization &apos;ANGLE_isub&lt;int, int __attribute__((ext_vector_type(4)))&gt;&apos; requested here
  metal::int4 _uorig = ANGLE_isub(1, _usource);


This error was triggered by the following GLSL code:
ivec4 source = ivec4(0);
ivec4 orig = 1 - source;

In GLSL, it is allowed for addition/subtraction to apply between a scalar and a vector. However, it seems that when it converts the GLSL code into Metal, it doesn&apos;t automatically convert the scalar into a vector which causes the above error in Metal.

This error is reproducible on Safari 18.1 on both iOS and macOS, and did not happen in older versions of Safari (such as Safari 17.x). However, it&apos;s unclear which version of Safari this issue was first introduced. The issue also doesn&apos;t happen on other browsers (such as Chrome).

Please see the attachment for an HTML file that reproduces the error. To reproduce:
1. Open the HTML file in Safari 18.1 on macOS or iOS
2. Open the developer console to see the shader compilation result. It should trigger the above error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2077566</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-11-25 10:06:08 -0800</bug_when>
    <thetext>&lt;rdar://problem/140546518&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2077710</commentid>
    <comment_count>2</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2024-11-26 04:20:10 -0800</bug_when>
    <thetext>Thanks for the report, I can reproduce the issue.
Until we ship a fix, you should be able to workaround the issue by using &quot;ivec4(1) - source&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2080346</commentid>
    <comment_count>3</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2024-12-09 15:33:13 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/37668</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2080422</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-12-09 22:25:22 -0800</bug_when>
    <thetext>Committed 287588@main (11b5279aec61): &lt;https://commits.webkit.org/287588@main&gt;

Reviewed commits have been landed. Closing PR #37668 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2080929</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-12-11 13:14:32 -0800</bug_when>
    <thetext>Committed 283286.583@safari-7620-branch (f936712e6292): &lt;https://commits.webkit.org/283286.583@safari-7620-branch&gt;

Reviewed commits have been landed. Closing PR #2399 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>473341</attachid>
            <date>2024-11-22 10:07:00 -0800</date>
            <delta_ts>2024-11-22 10:07:00 -0800</delta_ts>
            <desc>A webpage that reproduces the issue</desc>
            <filename>test2.html</filename>
            <type>text/html</type>
            <size>1756</size>
            <attacher>edmund</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0IHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4IiBpZD0idmVydGV4
LXNoYWRlciI+I3ZlcnNpb24gMzAwIGVzCnByZWNpc2lvbiBoaWdocCBmbG9hdDsKdm9pZCBtYWlu
KCkgewogIGdsX1Bvc2l0aW9uID0gdmVjNCgwLjApOwp9Cjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9
Ingtc2hhZGVyL3gtZnJhZ21lbnQiIGlkPSJmcmFnbWVudC1zaGFkZXIiPiN2ZXJzaW9uIDMwMCBl
cwogICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwogICAgcHJlY2lzaW9uIGhpZ2hwIGludDsKCiAg
ICB2b2lkIG1haW4oKSB7ICAgICAgICAgICAgICAKICAgICAgaXZlYzQgc291cmNlID0gaXZlYzQo
MCk7CiAgICAgIGl2ZWM0IG9yaWcgPSAxIC0gc291cmNlOwoKICAgICAgLy8gSnVzdCBzbyB0aGUg
cmVzdWx0IG9mIG9yaWcgaXMgdXNlZAogICAgICBzb3VyY2UgPSBvcmlnICogc291cmNlOwogICAg
fQo8L3NjcmlwdD4KPHNjcmlwdD4KY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnY2FudmFzJyk7CmNvbnN0IGdsID0gY2FudmFzLmdldENvbnRleHQoJ3dlYmdsMicpOwoKbGV0
IHNvdXJjZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN2ZXJ0ZXgtc2hhZGVyIikuaW5uZXJI
VE1MOwpjb25zdCB2ZXJ0ZXhTaGFkZXIgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURF
Uik7CmdsLnNoYWRlclNvdXJjZSh2ZXJ0ZXhTaGFkZXIsIHNvdXJjZSk7CmdsLmNvbXBpbGVTaGFk
ZXIodmVydGV4U2hhZGVyKTsKCmNvbnNvbGUubG9nKCdTaGFkZXIgY29tcGlsZWQgc3VjY2Vzc2Z1
bGx5OiAnICsgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHZlcnRleFNoYWRlciwgZ2wuQ09NUElMRV9T
VEFUVVMpKTsKY29uc29sZS5sb2coJ1NoYWRlciBjb21waWxlciBsb2c6ICcgKyBnbC5nZXRTaGFk
ZXJJbmZvTG9nKHZlcnRleFNoYWRlcikpOwoKc291cmNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiI2ZyYWdtZW50LXNoYWRlciIpLmlubmVySFRNTDsKY29uc3QgZnJhZ21lbnRTaGFkZXIgPSBn
bC5jcmVhdGVTaGFkZXIoZ2wuRlJBR01FTlRfU0hBREVSKTsKZ2wuc2hhZGVyU291cmNlKGZyYWdt
ZW50U2hhZGVyLCBzb3VyY2UpOwpnbC5jb21waWxlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsKCmNv
bnNvbGUubG9nKCdTaGFkZXIgY29tcGlsZWQgc3VjY2Vzc2Z1bGx5OiAnICsgZ2wuZ2V0U2hhZGVy
UGFyYW1ldGVyKGZyYWdtZW50U2hhZGVyLCBnbC5DT01QSUxFX1NUQVRVUykpOwpjb25zb2xlLmxv
ZygnU2hhZGVyIGNvbXBpbGVyIGxvZzogJyArIGdsLmdldFNoYWRlckluZm9Mb2coZnJhZ21lbnRT
aGFkZXIpKTsKCmNvbnN0IHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CmdsLmF0dGFjaFNo
YWRlcihwcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIpOwpnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgZnJh
Z21lbnRTaGFkZXIpOwpnbC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKCmlmICghZ2wuZ2V0UHJvZ3Jh
bVBhcmFtZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykpIHsKICAgIGNvbnN0IGxpbmtFcnJM
b2cgPSBnbC5nZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtKTsKICAgIGNvbnNvbGUubG9nKGBTaGFk
ZXIgcHJvZ3JhbSBkaWQgbm90IGxpbmsgc3VjY2Vzc2Z1bGx5LiBFcnJvciBsb2c6ICR7bGlua0Vy
ckxvZ31gKTsKfQplbHNlIHsKICAgIGNvbnNvbGUubG9nKCdMaW5raW5nIHdhcyBzdWNjZXNzZnVs
Jyk7Cn0KPC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+CjwvYm9keT4KPC9odG1sPg==
</data>

          </attachment>
      

    </bug>

</bugzilla>