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