From mboxrd@z Thu Jan 1 00:00:00 1970
From: bugzilla-daemon@freedesktop.org
Subject: [Bug 93761] A conditional discard in a fragment shader causes no
depth writing at all
Date: Mon, 18 Jan 2016 18:08:25 +0000
Message-ID:
Bug ID
93761
Summary
A conditional discard in a fragment shader causes no depth writing at all
Product
Mesa
Version
git
Hardware
x86-64 (AMD64)
OS
Linux (All)
Status
NEW
Severity
normal
Priority
medium
Component
Drivers/Gallium/radeonsi
Assignee
dri-devel@lists.freedesktop.org
Reporter
jlegg@feralinteractive.com
QA Contact
dri-devel@lists.freedesktop.org
Created attachment 121116 [details]
Test case
When rendering to an FBO with only a GL_DEPTH_COMPONENT16 depth buffer, with
depth testing enabled, if a fragment shader has a conditional discard, nothing
is written to the depth buffer for pixels which should not be discarded.
Platform: Fedora 22 x86_64
Mesa version: tested both git eaf7ec9 (from griever-mesa-git copr) and 10.6.9
(the default mesa package with Fedora 22). The bug occurred on both.
GL Renderer string: Gallium 0.4 on AMD PITCAIRN (DRM 2.43.0, LLVM 3.7.1)
GPU: AMD R9 270 with 2GB VRAM
Workaround: If you write to gl_FragDepth, only the intentionally discarded
pixels are discarded.
I've attached a test case demonstrating the problem. It will fail an assertion
on the machine with this bug. It should draw only on the even columns of pixels
in the depth buffer, but nothing is drawn.