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