From mboxrd@z Thu Jan 1 00:00:00 1970 From: bugzilla-daemon@freedesktop.org Subject: [Bug 98664] Fragment shader while loop causes geometry corruption Date: Fri, 18 Nov 2016 21:51:01 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0445830594==" Return-path: Received: from culpepper.freedesktop.org (culpepper.freedesktop.org [IPv6:2610:10:20:722:a800:ff:fe98:4b55]) by gabe.freedesktop.org (Postfix) with ESMTP id 2F45D6EA8F for ; Fri, 18 Nov 2016 21:51:01 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org --===============0445830594== Content-Type: multipart/alternative; boundary="14795058611.eFc3d8.16021"; charset="UTF-8" --14795058611.eFc3d8.16021 Date: Fri, 18 Nov 2016 21:51:01 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://bugs.freedesktop.org/ Auto-Submitted: auto-generated https://bugs.freedesktop.org/show_bug.cgi?id=3D98664 --- Comment #16 from Roland Scheidegger --- (In reply to Nicolai H=C3=A4hnle from comment #14) > I suspect the reason that the blob drivers do it this way is that if you > don't, you're likely to hit a subtle bug with emit inside control flow. A= nd > making the effort to exploit the undefined-ness probably pays off very > rarely, so... Also, you can do this with dx10, so app developers porting things are somew= hat likely to get it wrong (I suppose that's similar to other such subtle issues like discard killing your derivatives if you have per-pixel control flow wi= th gl, but not with dx10). At least I think so from the description of emit: https://msdn.microsoft.com/en-us/library/windows/desktop/hh447053(v=3Dvs.85= ).aspx "emit causes all declared o# registers to be read out of the Geometry Shade= r to generate a vertex." Doesn't say explicitly the registers are still valid afterwards, but since reading a register usually doesn't nuke the value, the reg getting undefined would be a side-effect which should have been mentioned... --=20 You are receiving this mail because: You are the assignee for the bug.= --14795058611.eFc3d8.16021 Date: Fri, 18 Nov 2016 21:51:01 +0000 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://bugs.freedesktop.org/ Auto-Submitted: auto-generated

Commen= t # 16 on bug 98664<= /a> from Roland Scheidegger
(In reply to Nicolai H=C3=A4hnle from comment #14)
> I suspect the reason that the blob drivers do it=
 this way is that if you
> don't, you're likely to hit a subtle bug with emit inside control flow=
. And
> making the effort to exploit the undefined-ness probably pays off very
> rarely, so...

Also, you can do this with dx10, so app developers porting things are somew=
hat
likely to get it wrong (I suppose that's similar to other such subtle issues
like discard killing your derivatives if you have per-pixel control flow wi=
th
gl, but not with dx10).
At least I think so from the description of emit:
https://msdn.microsoft.com/en-us/library/windows/desktop=
/hh447053(v=3Dvs.85).aspx
"emit causes all declared o# registers to be read out of the Geometry =
Shader to
generate a vertex." Doesn't say explicitly the registers are still val=
id
afterwards, but since reading a register usually doesn't nuke the value, the
reg getting undefined would be a side-effect which should have been
mentioned...


You are receiving this mail because:
  • You are the assignee for the bug.
= --14795058611.eFc3d8.16021-- --===============0445830594== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== --===============0445830594==--