// // Copyright (C) 2009-2021 Intel Corporation // // SPDX-License-Identifier: MIT // // module presplit; kernel_module presplit_kernels ("bvh_build_presplit.cl") { links lsc_intrinsics; kernel opencl_kernel_compute_num_presplits < kernelFunction="compute_num_presplits" >; kernel opencl_kernel_priority_sum < kernelFunction="priority_sum" >; kernel opencl_kernel_perform_presplits < kernelFunction="perform_presplits" >; } import struct MKBuilderState "structs.grl"; import struct MKSizeEstimate "structs.grl"; metakernel compute_num_presplits( MKBuilderState state, qword presplit_buffer, dword numHwThreads ) { dispatch opencl_kernel_compute_num_presplits ( numHwThreads, 1, 1 ) args( state.build_globals, state.bvh_buffer, state.build_primref_buffer, presplit_buffer, state.geomDesc_buffer ); } metakernel priority_sum( MKBuilderState state, MKSizeEstimate estimate, qword presplit_buffer ) { dispatch opencl_kernel_priority_sum ( 1, 1, 1 ) args( state.build_globals, presplit_buffer, estimate.numPrimitivesToSplit / 2 ); } metakernel perform_presplits( MKBuilderState state, MKSizeEstimate estimate, qword presplit_buffer, dword numHwThreads ) { dispatch opencl_kernel_perform_presplits ( numHwThreads, 1, 1 ) args( state.build_globals, state.bvh_buffer, state.build_primref_buffer, presplit_buffer, state.bvh_buffer, state.geomDesc_buffer, estimate.numPrimitivesToSplit / 2 ); }