<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div id="magicdomid4" class=""><span
class="author-a-z65zz65z3cz69zz88zo9z76zsz82zi9sz86zb">Hi
everybody,</span></div>
<div id="magicdomid5" class=""><br>
</div>
<div id="magicdomid6" class=""><span
class="author-a-z65zz65z3cz69zz88zo9z76zsz82zi9sz86zb">As some
of you already know, we have been working on a Vulkan driver </span><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1">(v3dv) for the
Broadcom V3D GPU present in the Raspberry Pi 4</span><span
class="author-a-z65zz65z3cz69zz88zo9z76zsz82zi9sz86zb">. So far
we </span><span class="author-a-vpz73zz78zz89zwz73zcagyd8di1">have
been</span><span
class="author-a-z65zz65z3cz69zz88zo9z76zsz82zi9sz86zb"> working
on a personal branch</span><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1">, rebasing
regularly</span><span
class="author-a-z65zz65z3cz69zz88zo9z76zsz82zi9sz86zb">, and we
</span><span class="author-a-vpz73zz78zz89zwz73zcagyd8di1">would
like to start discussing about the process to merge the driver
in Mesa.</span></div>
<div id="magicdomid7" class=""><br>
</div>
<div id="magicdomid8" class=""><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1">First, here is
some data about the current state of the driver:</span></div>
<div id="magicdomid9" class=""><br>
</div>
<div id="magicdomid10" class=""><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1">Currently, we are
targeting Vulkan 1.0 as our first milestone. At the moment, our
Vulkan CTS results look like this:</span></div>
<div id="magicdomid11" class=""><span
class="author-a-z65zz65z3cz69zz88zo9z76zsz82zi9sz86zb">[701251/701251]
Pass: 106776 Fail: 18 Skip: 594454 ExpectedFail: 0
UnexpectedPass: 0 Crash: 0 Timeout: 1 Missing: 0 Flake: 2</span></div>
<div id="magicdomid12" class=""><br>
</div>
<div id="magicdomid13" class=""><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1">So we we are
hoping to be able to submit the driver for conformance soon.</span></div>
<div id="magicdomid14" class=""><br>
</div>
<div id="magicdomid15" class=""><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1">We have not done
much testing beyond CTS yet, however, we know that we can run
all Vulkan ports of the Quake 1-3 classics as well as OpenArena
and we also know that there is a PSP simulator that uses Vulkan
that some people have used to run some games on the Rpi4 as
well. We can also run many of the Sascha Willem's demos.</span></div>
<div id="magicdomid16" class=""><br>
</div>
<div id="magicdomid17" class=""><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1">So all in all, it
seems that the driver can be useful already to people who want
to start playing around with Vulkan on the Rpi4, and we would
also like to start seeing more people doing exactly that so we
can get feedback to continue polishing and improving the driver
for real world usage.</span></div>
<div id="magicdomid18" class=""><br>
</div>
<div id="magicdomid19" class=""><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1">As for our
proposal to merge the driver, following are our initial
thoughts. We would like to know if this sounds reasonable before
we start making preparations.</span></div>
<div id="magicdomid20" class=""><br>
</div>
<div id="magicdomid21" class=""><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1">Our development
branch is ~525 patches on top of master, categorized as follows:</span></div>
<div id="magicdomid22" class=""><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1"> a) Patches that
touch common Mesa infrastructure (NIR, Vulkan WSI, Meson, etc):
~5 patches.</span></div>
<div id="magicdomid23" class=""><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1"> b) Patches that
touch common Broadcom infrastructure under src/broadcom (V3D
backend compiler mostly): ~20 patches</span></div>
<div id="magicdomid24" class=""><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1"> c) Patches that
are independent and specific to the V3D Vulkan driver (under
src/broadcom/vulkan): ~500 patches.</span></div>
<div id="magicdomid25" class=""><br>
</div>
<div id="magicdomid26" class=""><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1">Since we are
talking about a very large amount of patches, we are expecting
that we can merge most of them without a review, particularly
those in c) that implement the bulk of the Vulkan driver.</span></div>
<div id="magicdomid27" class=""><br>
</div>
<div id="magicdomid28" class=""><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1">The patches in b)
are mostly about extending our compiler backend to support
Vulkan intrinsics and requirements as well a a few more general
fixes or improvements. Our plan is to at least have someone in
our team review them internally and grant Rbs, I think the only
other person who might want to review these would be Eric if he
has the time and is interested in doing so. We have sent some of
these for early review [1][2] when we found they were more
generic fixes or improvements to the compiler, but we might not
want to do this for each and every one of them unless we see
there is interest in reviewing them separately.</span></div>
<div id="magicdomid29" class=""><br>
</div>
<div id="magicdomid30" class=""><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1">For the patches in
a) we would like to at least get an Ack from other Mesa devs.
They are mostly very simple things that just add an option to a
NIR pass or a new intrinsic for use in our driver backend, so
maybe it is not needed to create dedicated MRs and it is fine to
just ping specific Mesa devs for reviews on those patches when
we propose the large MR for the bulk of the driver. We did send
one of these as an RFC some time ago [3] and it would be nice to
get some more feedback there if possible.</span></div>
<div id="magicdomid31" class=""><br>
</div>
<div id="magicdomid32" class=""><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1">Does all this
sound sensible?</span></div>
<div id="magicdomid33" class=""><br>
</div>
<div id="magicdomid34" class=""><span
class="author-a-z65zz65z3cz69zz88zo9z76zsz82zi9sz86zb">BR</span></div>
<div id="magicdomid35" class=""><br>
</div>
<div id="magicdomid36" class=""><span
class="author-a-z65zz65z3cz69zz88zo9z76zsz82zi9sz86zb">[1]
"v3d/compiler: allow to batch spills" (MR#6632)</span></div>
<div id="magicdomid37" class=""><span
class="author-a-z65zz65z3cz69zz88zo9z76zsz82zi9sz86zb">[2]
"broadcom/compiler: Allow spills of temporaries from TMU reads"
(MR#6606)</span></div>
<div id="magicdomid38" class=""><span
class="author-a-vpz73zz78zz89zwz73zcagyd8di1">[3] "[RFC]
vulkan/wsi: allow non-PCI devices to avoid the prime blit path"
(MR#5917)</span></div>
</body>
</html>