xref: /aosp_15_r20/external/mesa3d/src/amd/vulkan/bvh/header.comp (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1/*
2 * Copyright © 2023 Valve Corporation
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7#version 460
8
9#extension GL_GOOGLE_include_directive : require
10
11#extension GL_EXT_shader_explicit_arithmetic_types_int8 : require
12#extension GL_EXT_shader_explicit_arithmetic_types_int16 : require
13#extension GL_EXT_shader_explicit_arithmetic_types_int32 : require
14#extension GL_EXT_shader_explicit_arithmetic_types_int64 : require
15#extension GL_EXT_shader_explicit_arithmetic_types_float16 : require
16#extension GL_EXT_scalar_block_layout : require
17#extension GL_EXT_buffer_reference : require
18#extension GL_EXT_buffer_reference2 : require
19
20layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
21
22#include "build_interface.h"
23
24layout(push_constant) uniform CONSTS
25{
26   header_args args;
27};
28
29void
30main(void)
31{
32   uint32_t compacted_size = args.bvh_offset + DEREF(args.src).dst_node_offset;
33
34   uint32_t serialization_size =
35      compacted_size +
36      align(SIZEOF(radv_accel_struct_serialization_header) + SIZEOF(uint64_t) * args.instance_count,
37            128);
38
39   uint32_t size = serialization_size - SIZEOF(radv_accel_struct_serialization_header) -
40                   SIZEOF(uint64_t) * args.instance_count;
41
42   DEREF(args.dst).compacted_size = compacted_size;
43
44   DEREF(args.dst).copy_dispatch_size[0] = DIV_ROUND_UP(compacted_size, 16 * 64);
45   DEREF(args.dst).copy_dispatch_size[1] = 1;
46   DEREF(args.dst).copy_dispatch_size[2] = 1;
47
48   DEREF(args.dst).serialization_size = serialization_size;
49
50   DEREF(args.dst).size = size;
51}
52