Commit graph

182089 commits

Author SHA1 Message Date
Alyssa Rosenzweig
f4a648c607 asahi: Unroll GS/XFB primitive restart on the GPU
..and fix bugs versus the CPU unroll while we're at it. CPU based unrolling is
invalid in Vulkan, but this slow-as-dogs GPU unroll is ok.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
15957219ad agx: rework libagx linking a bit
for correctness with generic ptrs, avoids splat with the next patch.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
4a4c6d1bc6 agx: Avoid scratch mem with tri strip w/ adjacency
with restart unroll kernel where nir fails to optimize this away without a
little help from us.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
7f9ef5b176 agx: fix VARYING_SLOT_COL0 getting flatshaded
it's a bit mask.

didn't fix the piglit i was debugging :-(

but did fix the shadow glitching out in neverball.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
6437578435 asahi: add xml for flatshading fans
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
403a20a9f2 asahi: rework cf binding xml
for flat shading of fans.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
2fec6bf951 asahi: fix tri fan enum
from tracing macos. fixes piglits:

 spec@!opengl 1.1@gl-1.1-drawarrays-vertex-count 100000 varray gl_triangle_fan
 spec@!opengl 1.1@gl-1.1-drawarrays-vertex-count 100000 vbo gl_triangle_fan
 spec@!opengl 1.4@triangle-rasterization-overdraw

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
6ae72a2f2a asahi: Support L/A/I formats for texture buffers
mesa/st doesn't know how to emulate them. Fixes
arb_texture_buffer_object-formats.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
5b33c74626 agxdecode: fix stack smash with border colour
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
a8857028bb asahi: add static assert
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
2be37d1c96 asahi: double depth bias
fixes gl-1.4-polygon-offset, other drivers do this too.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
3af825ed96 asahi: move heap alloc to first use
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
0fa7252d8a asahi: Implement multidraw indirect
GS only for now (inserting a passthru GS if needed). This should be optimized
later, but it's ~correct.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
5987e47a29 asahi: rework GS input assembly
in prep for tessellation (which will share the IA lowering), and for multidraw
indirect (which greatly complicates IA lowering with geom/tess).

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
a816350d95 asahi: force GS for indirect prim gen query
removes one more indirect cpu fallback (invalid in vulkan)

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
0805fef082 asahi: make UB easier to see
would've saved us

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
a12d2689d8 asahi: rm unnecessary uniform upload for GS
already done in launch gs.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
2220044ca2 asahi: remove dead declarations
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
9c66ae9b36 asahi: use agx_push
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
4d48574bd7 asahi: collapse unreachable condition
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
09e46aa168 asahi: add agx_push macro
Thanks, Ella!

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
31b1bdb475 asahi: fix destroy_query leaving dangling references
this was fixed for occlusion queries already, but other queries have equivalent
issues.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
2d8a714f9c asahi: choose staging bind better
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
5257283941 asahi: use correct target packing PBE
harmless, but more correct.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Alyssa Rosenzweig
a3ae9e1a59 asahi: fix layout transitions with arrays
don't minify the layer count for non-3D!

Affects: dEQP-GLES31.functional.copy_image.*array

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 12:08:39 -04:00
Asahi Lina
25d185a501 ail: Fix tile size & strides for compressed textures
Compressed textures have two additional quirks that affect the tiling
code (but not the mip offsets): they get extra stride padding in some
cases for the large miptree, and the tile size is based on the POT size
and not the real size for the small miptree.

Signed-off-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:45 -04:00
Asahi Lina
be3890a898 ail: Add explicit specification of mip level strides
For compressed textures, mip levels > 0 can have additional stride
padding. This (in some cases) affects the tile stride calculation, so it
cannot be implicitly represented with the existing members.

Add an explicit array containing the stride, in elements, of each
miptree level. The tiling code uses this instead of the minified and
element-aligned width when computing tile addressing.

This commit should be a functional no-op.

Signed-off-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:45 -04:00
Asahi Lina
2221eb6cec ail: Fix miptree offset generation for compressed textures
For compressed textures, the POT miptree starting size is calculated
backwards (POT then minify instead of minify then POT).

In addition, the existing POT miptree start level code does not work for
compressed textures. Due to the extra block alignment requirement each
step of the way, we can no longer get away with nice log-based O(1)
math. Switch to a loop. This should be equivalent for uncompressed
textures, but yields different results with compression (element size >
1x1).

Signed-off-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:45 -04:00
Alyssa Rosenzweig
5382f57e81 asahi: advertise ARB_shader_texture_image_samples
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:45 -04:00
Alyssa Rosenzweig
bc6b2d087b agx: wire up texture_samples/image_samplers
CL makes this too easy, lmao

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:45 -04:00
Karol Herbst
6979a1aa07 nir/opt_preamble: make load_workgroup_size handling optional
not all drivers support it being in the preamble, e.g. asahi.

Signed-off-by: Karol Herbst <git@karolherbst.de>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:37 -04:00
i509VCB
3ddb07c36b asahi,docs: add PBE to hardware glossary
Signed-off-by: i509VCB <git@i509.me>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:37 -04:00
Alyssa Rosenzweig
47337e7918 asahi: Implement draw parameters
This is the easy part, passes the piglits.

---

N.b.: this also includes a bug fix for ARB_base_instance that would be
nontrivial to extract out, so I'm backporting the whole feature for release. How
terrible, more features :-P

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:37 -04:00
Alyssa Rosenzweig
31f1ef0a79 asahi: Early out for GS + rast discard
Reduces overhead for XFB.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:37 -04:00
Alyssa Rosenzweig
2129fe30bc asahi: use GS for first-provoking fans
workaround hw bug / missing feature, in a vk compliant way.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:37 -04:00
Alyssa Rosenzweig
e10e21120b asahi: Rotate tri fans based on provoking vtx
I don't have a spec citation for the rotation but it's implied by the GL and VK
specs taken together with piglit.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:37 -04:00
Alyssa Rosenzweig
5bae4bfc8c asahi: defeature quads
fixes xfb piglits. i am not paid enough to care.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:37 -04:00
Alyssa Rosenzweig
decd134c0c asahi: fix xfb of pointsize when not drawing points
stupid case.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:37 -04:00
Alyssa Rosenzweig
9d1a0f11e2 agx: Fix flatshading of matrices
Fixes dEQP-VK.glsl.conversions.scalar_to_matrix.float_to_mat4_vertex

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:37 -04:00
Alyssa Rosenzweig
9fc23df0d5 asahi: flush before resource transition
otherwise data_valid is not valid! fixes arb_shader_image_load_store-bitcast
and who knows what else.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:37 -04:00
Alyssa Rosenzweig
e637ccff36 asahi: blit with the old format when transitioning
dest is uncompressed, it can take it. but src is compressed so we don't want to
view. bugfix by inspection

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:37 -04:00
Alyssa Rosenzweig
9031f04642 asahi: minify when blitting for transition
asahi version of https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26077/diffs

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:37 -04:00
Alyssa Rosenzweig
a0485292af asahi: bump glsl version
should work and fixes a buggy test falling over due to missing gpu_shader5

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:37 -04:00
Alyssa Rosenzweig
2ad5bcc41e asahi: fix output to non-rast streams
fixes arb_gpu_shader5-emitstreamvertex_nodraw

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:17 -04:00
Alyssa Rosenzweig
79e37f7581 asahi: implement xfb stream queries
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:17 -04:00
Alyssa Rosenzweig
0099315edf asahi: fix meta usc builder allocation
otherwise can usc overflow (caught by the usc builder validation :) )

fixes clearbuffer-mixed-format

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:17 -04:00
Alyssa Rosenzweig
f82264fec0 asahi: return GL_OOM for excessive image sizes
fixes piglit max-texture-size

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:17 -04:00
Alyssa Rosenzweig
fd91d46487 ail: handle >4GiB textures
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:17 -04:00
Alyssa Rosenzweig
7a7a3b8847 asahi: defer texture packing to draw-time
needed for correctness with layout transitions.

fixes arb_shader_image_load_store-host-mem-barrier

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:17 -04:00
Alyssa Rosenzweig
b74d2dcd57 asahi: use 2D descriptors for cubes
fixes arb_shader_image_load_store-invalid case imageLoad/address bounds test/imageCube/rgba32f

this is also better codegen since it avoids the wacko division by 6. although it
creates a div by 6 in imageSize, that's better because that one is much more
likely to hoist to the preamble. probably should've done this from the start.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:17 -04:00