• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/* Copyright © 2024 Valve Corporation
2 * Copyright © 2024 Intel Corporation
3 * SPDX-License-Identifier: MIT
4 */
5
6#version 460
7
8#extension GL_GOOGLE_include_directive : require
9
10#extension GL_EXT_shader_explicit_arithmetic_types_int8 : require
11#extension GL_EXT_shader_explicit_arithmetic_types_int16 : require
12#extension GL_EXT_shader_explicit_arithmetic_types_int32 : require
13#extension GL_EXT_shader_explicit_arithmetic_types_int64 : require
14#extension GL_EXT_shader_explicit_arithmetic_types_float16 : require
15#extension GL_EXT_scalar_block_layout : require
16#extension GL_EXT_buffer_reference : require
17#extension GL_EXT_buffer_reference2 : require
18
19layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
20
21#include "anv_build_interface.h"
22
23layout(push_constant) uniform CONSTS
24{
25   header_args args;
26};
27
28void
29main(void)
30{
31   uint32_t compacted_size =
32      args.bvh_offset + DEREF(args.src).dst_node_offset * ANV_RT_BLOCK_SIZE;
33
34   uint32_t serialization_size = compacted_size +
35      SIZEOF(vk_accel_struct_serialization_header) + SIZEOF(uint64_t) *
36      args.instance_count;
37
38   DEREF(args.dst).compacted_size = compacted_size;
39   DEREF(args.dst).size = compacted_size;
40   DEREF(args.dst).serialization_size = serialization_size;
41   DEREF(args.dst).self_ptr = uint64_t(args.dst);
42   DEREF(args.dst).instance_count = args.instance_count;
43
44   /* 128 is local_size_x in copy.comp shader, 8 is the amount of data
45    * copied by each iteration of that shader's loop
46    */
47   DEREF(args.dst).copy_dispatch_size[0] = DIV_ROUND_UP(compacted_size, 8 * 128);
48   DEREF(args.dst).copy_dispatch_size[1] = 1;
49   DEREF(args.dst).copy_dispatch_size[2] = 1;
50}
51