<html>
    <head>
      <base href="https://bugs.webkit.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Writing gl_FragDepth without depth attachment disables color writes"
   href="https://bugs.webkit.org/show_bug.cgi?id=234824">234824</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Writing gl_FragDepth without depth attachment disables color writes
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>WebKit
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>Safari 15
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Unspecified
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Unspecified
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>Normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P2
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>WebGL
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>webkit-unassigned@lists.webkit.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>ashley@scirra.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>dino@apple.com, kbr@google.com, kkinnunen@apple.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>In Safari 15, using the gl_FragDepth feature of WebGL 2 in a fragment shader rendering to a framebuffer without a depth attachment, causes all color writes to fail, resulting in a blank screen.

In Chrome and Firefox on both Windows and Android it works correctly.

Minimal repro: <a href="https://downloads.scirra.com/labs/bugs/webglfragdepth/">https://downloads.scirra.com/labs/bugs/webglfragdepth/</a>

This is a lightly modified version of the fbo_blit example from WebGL 2 samples (<a href="http://webglsamples.org/WebGL2Samples/">http://webglsamples.org/WebGL2Samples/</a>). This example does not use any depth attachment on the FBO. The only meaningful change is the addition of this line to the fragment shader:

gl_FragDepth = 1.0;

This causes all the color writes to fail, producing a blank screen (tested on Safari 15.2 on macOS 12.1 and iPadOS 15.2). However it renders correctly in Chrome/Firefox on Windows/Android. Removing that line causes rendering to work again in Safari. With no depth attachment, it is expected that all writes to gl_FragDepth would simply have no effect. Instead the observed result is that the color writes stop working producing no rendering at all.

We need this to work in our WebGL engine as we want to use some 2D shaders both with and without a depth buffer in use; however in Safari the presence of gl_FragDepth causes all rendering to fail.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>