mesa/src
Kevin Chuang 2fe57947e3 anv: Implement encode shader to fit in ANV BVH
This shader gets called and will construct ANV BVH from IR BVH. More
specifically, each invocation will take care of one internal node. The
internal nodes get processed starting from root node all the way to the
bottom leaves.

During processing, we keep track of the destination of
where the internal node should be encoded (tracked in
vk_ir_box.bvh_offset), and where its leaves should be encoded (tracked
in vk_ir_header.dst_node_offset).

The processed bvh is in contiguous memory, which starts with header,
followed by interleaving internal nodes and leaves. The nodes
information are also populated.

Rework: (Sagar)
- Return out of bounds threads early
- Mimic GRL internal node encoding
- Handle node mask
- Fix block_incr_and_start_prim
- Fix shader_index_and_geom_mask for instance node
- Fix instance flag
- Fix block_incr and instance_contribution_and_geom_flags initialized to be zero
- Fix lower_x and upper_x to be properly flipped for invalid child
- For invalid node, clear blockIncr and set startPrim to INVALID
- Calculated things upfront and assign, cutting down more than ~200
  instructions

Co-authored-by: Kevin Chuang <kaiwenjon23@gmail.com>
Co-authored-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31588>
2024-12-04 10:41:45 +00:00
..
amd radv: fix stencil only copies of depth/stencil images with SDMA 2024-12-04 09:30:36 +00:00
android_stub
asahi gallium: replace PIPE_SHADER_CAP_INDIRECT_INPUT/OUTPUT_ADDR with NIR options 2024-12-03 12:57:36 +00:00
broadcom gallium: replace PIPE_SHADER_CAP_INDIRECT_INPUT/OUTPUT_ADDR with NIR options 2024-12-03 12:57:36 +00:00
c11 build: pass licensing information in SPDX form 2024-06-29 12:42:49 -07:00
compiler nir/opt_algebraic: mark a - ffract(a) as nan incorrect. 2024-12-03 14:42:18 +00:00
drm-shim drm-shim: stub synobj_timeline_wait and query ioctl 2024-07-16 11:17:59 +02:00
egl meson: drop unused variables 2024-11-26 20:45:41 +00:00
etnaviv etnaviv: drm: use list_first_entry 2024-11-20 13:08:28 +00:00
freedreno gallium: replace PIPE_SHADER_CAP_INDIRECT_INPUT/OUTPUT_ADDR with NIR options 2024-12-03 12:57:36 +00:00
gallium ci: bring back some i915g testing 2024-12-04 08:18:43 +00:00
gbm Revert "gbm: mark surface buffers as explicit flushed" 2024-11-27 22:48:04 +00:00
getopt build: pass licensing information in SPDX form 2024-06-29 12:42:49 -07:00
gfxstream gfxstream: fix issues with VK1.4 build 2024-12-03 20:35:44 +00:00
glx glx: return BadMatch for invalid reset notification strategy 2024-11-27 19:00:20 +00:00
gtest build: pass licensing information in SPDX form 2024-06-29 12:42:49 -07:00
imagination pco: initial validation boilerplate and SSA checks 2024-11-29 15:14:12 +00:00
imgui
intel anv: Implement encode shader to fit in ANV BVH 2024-12-04 10:41:45 +00:00
loader loader: Fix typo in __DRI_IMAGE_FORMAT_XBGR16161616 definition 2024-10-25 14:18:24 +00:00
mapi meson: remove selinux option 2024-10-21 01:14:35 +00:00
mesa st/mesa: replace EmitNoIndirectInput / EmitNoIndirectOutput with NIR options 2024-12-03 12:57:36 +00:00
microsoft microsoft/compiler: Put holes in driver_location based on I/O variable sizes 2024-12-02 22:40:39 +00:00
nouveau gallium: replace PIPE_SHADER_CAP_INDIRECT_INPUT/OUTPUT_ADDR with NIR options 2024-12-03 12:57:36 +00:00
panfrost panvk: report minmax-support for sampled formats 2024-12-03 20:16:58 +00:00
tool perfetto: Add Panfrost data sources to system.cfg 2024-08-22 18:33:45 +00:00
util util/perf: Fix some warnings. 2024-12-02 15:15:52 +00:00
virtio treewide: Stop putting enum in front of Vulkan enum types 2024-12-02 17:22:49 +00:00
vulkan vulkan: Update XML and headers to 1.4.303 2024-12-02 17:22:49 +00:00
x11 meson: require dri3 modifiers 2024-09-06 17:34:17 +00:00
.clang-format nir: add helpers for precompiled shaders 2024-11-28 17:34:12 +00:00
meson.build meson: simplify logic a bit 2024-11-26 20:45:41 +00:00