xref: /aosp_15_r20/external/mesa3d/src/intel/vulkan/grl/gpu/presplit.grl (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1//
2// Copyright (C) 2009-2021 Intel Corporation
3//
4// SPDX-License-Identifier: MIT
5//
6//
7
8module presplit;
9
10kernel_module presplit_kernels ("bvh_build_presplit.cl")
11{
12    links lsc_intrinsics;
13
14    kernel opencl_kernel_compute_num_presplits               < kernelFunction="compute_num_presplits" >;
15    kernel opencl_kernel_priority_sum                        < kernelFunction="priority_sum"          >;
16    kernel opencl_kernel_perform_presplits                   < kernelFunction="perform_presplits"     >;
17}
18
19import struct MKBuilderState "structs.grl";
20import struct MKSizeEstimate "structs.grl";
21
22
23metakernel compute_num_presplits(
24    MKBuilderState state,
25    qword presplit_buffer,
26    dword numHwThreads )
27{
28    dispatch opencl_kernel_compute_num_presplits ( numHwThreads, 1, 1 ) args(
29        state.build_globals,
30        state.bvh_buffer,
31        state.build_primref_buffer,
32        presplit_buffer,
33        state.geomDesc_buffer );
34}
35
36
37metakernel priority_sum(
38    MKBuilderState state,
39    MKSizeEstimate estimate,
40    qword presplit_buffer )
41{
42    dispatch opencl_kernel_priority_sum ( 1, 1, 1 ) args(
43        state.build_globals,
44        presplit_buffer,
45        estimate.numPrimitivesToSplit / 2 );
46}
47
48metakernel perform_presplits(
49    MKBuilderState state,
50    MKSizeEstimate estimate,
51    qword presplit_buffer,
52    dword numHwThreads )
53{
54    dispatch opencl_kernel_perform_presplits ( numHwThreads, 1, 1 ) args(
55        state.build_globals,
56        state.bvh_buffer,
57        state.build_primref_buffer,
58        presplit_buffer,
59        state.bvh_buffer,
60        state.geomDesc_buffer,
61        estimate.numPrimitivesToSplit / 2 );
62}
63