From mboxrd@z Thu Jan 1 00:00:00 1970
From: bugzilla-daemon@freedesktop.org
Subject: [Bug 110229] The driver is not waiting the shader have finished to
update the framebuffer before displaying it.
Date: Fri, 29 Mar 2019 14:31:09 +0000
Message-ID:
References:
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="===============0052629467=="
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 751536E8C2
for ; Fri, 29 Mar 2019 14:31:09 +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
--===============0052629467==
Content-Type: multipart/alternative; boundary="15538698692.fc237780.4465"
Content-Transfer-Encoding: 7bit
--15538698692.fc237780.4465
Date: Fri, 29 Mar 2019 14:31:09 +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=3D110229
--- Comment #11 from Daniel Stone ---
(In reply to Laurent from comment #10)
> -You load the first instruction (the boot) tho the GPU memory, it initial=
ize
> the offset register to go to the next instruction but, there is no guaran=
tee
> that the CPU has loaded the next instruction before the GPU is pointing to
> it.
>=20
> The solution is to load the last instruction first, and the first
> instruction (the boot) last so, you're guarantee that all the shader
> instructions are loaded before the GPU start to execute them.
I'm afraid that's not the problem. The drivers compile the whole shader, th=
en
copy it to memory, and the entire content is present before the shader stops
executing. This has been extensively battle-tested in many games, conforman=
ce
suites, computer-vision analysis, industrial-scale movie renders, etc.
The real answer is that maintaining these drivers is a lot of work, and the
people developing it cannot always drop everything to examine your source c=
ode
and debug a relatively complex application for you in the space of a few da=
ys.
GPU execution is very, very, different from CPU execution: in particular,
fragment shading is massively parallel (frequently within tiles). It may be
that the execution order is not what you expect, or the access to shared
variables is also not what you expect. It's hard to tell from the code, sin=
ce
the per-fragment linked-list approach you have is definitely ... novel.
I would try to begin by examining clearly what is going on at each step of =
your
fragment shader execution, so you can build a more precise theory of what is
going wrong. Good luck.
--=20
You are receiving this mail because:
You are the assignee for the bug.=
--15538698692.fc237780.4465
Date: Fri, 29 Mar 2019 14:31:09 +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
Comme=
nt # 11
on bug 11022=
9
from Daniel Stone
(In reply to Laurent from comment #10)
> -You load the first instruction (the boot) tho t=
he GPU memory, it initialize
> the offset register to go to the next instruction but, there is no gua=
rantee
> that the CPU has loaded the next instruction before the GPU is pointin=
g to
> it.
>=20
> The solution is to load the last instruction first, and the first
> instruction (the boot) last so, you're guarantee that all the shader
> instructions are loaded before the GPU start to execute them.
I'm afraid that's not the problem. The drivers compile the whole shader, th=
en
copy it to memory, and the entire content is present before the shader stops
executing. This has been extensively battle-tested in many games, conforman=
ce
suites, computer-vision analysis, industrial-scale movie renders, etc.
The real answer is that maintaining these drivers is a lot of work, and the
people developing it cannot always drop everything to examine your source c=
ode
and debug a relatively complex application for you in the space of a few da=
ys.
GPU execution is very, very, different from CPU execution: in particular,
fragment shading is massively parallel (frequently within tiles). It may be
that the execution order is not what you expect, or the access to shared
variables is also not what you expect. It's hard to tell from the code, sin=
ce
the per-fragment linked-list approach you have is definitely ... novel.
I would try to begin by examining clearly what is going on at each step of =
your
fragment shader execution, so you can build a more precise theory of what is
going wrong. Good luck.
You are receiving this mail because:
- You are the assignee for the bug.
=
--15538698692.fc237780.4465--
--===============0052629467==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs
IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz
dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs
--===============0052629467==--