1*61046927SAndroid Build Coastguard Worker /* 2*61046927SAndroid Build Coastguard Worker * Copyright 2024 Alyssa Rosenzweig 3*61046927SAndroid Build Coastguard Worker * Copyright 2024 Valve Corporation 4*61046927SAndroid Build Coastguard Worker * Copyright 2022 Collabora Ltd. and Red Hat Inc. 5*61046927SAndroid Build Coastguard Worker * SPDX-License-Identifier: MIT 6*61046927SAndroid Build Coastguard Worker */ 7*61046927SAndroid Build Coastguard Worker #include "libagx.h" 8*61046927SAndroid Build Coastguard Worker 9*61046927SAndroid Build Coastguard Worker #pragma once 10*61046927SAndroid Build Coastguard Worker 11*61046927SAndroid Build Coastguard Worker struct libagx_copy_query_push { 12*61046927SAndroid Build Coastguard Worker GLOBAL(uint32_t) availability; 13*61046927SAndroid Build Coastguard Worker GLOBAL(uint64_t) results; 14*61046927SAndroid Build Coastguard Worker GLOBAL(uint16_t) oq_index; 15*61046927SAndroid Build Coastguard Worker uint64_t dst_addr; 16*61046927SAndroid Build Coastguard Worker uint64_t dst_stride; 17*61046927SAndroid Build Coastguard Worker uint32_t first_query; 18*61046927SAndroid Build Coastguard Worker 19*61046927SAndroid Build Coastguard Worker /* Flags. Could specialize the shader? */ 20*61046927SAndroid Build Coastguard Worker uint16_t partial; 21*61046927SAndroid Build Coastguard Worker uint16_t _64; 22*61046927SAndroid Build Coastguard Worker uint16_t with_availability; 23*61046927SAndroid Build Coastguard Worker uint16_t reports_per_query; 24*61046927SAndroid Build Coastguard Worker }; 25*61046927SAndroid Build Coastguard Worker 26*61046927SAndroid Build Coastguard Worker struct libagx_xfb_counter_copy { 27*61046927SAndroid Build Coastguard Worker GLOBAL(uint32_t) dest[4]; 28*61046927SAndroid Build Coastguard Worker GLOBAL(uint32_t) src[4]; 29*61046927SAndroid Build Coastguard Worker }; 30*61046927SAndroid Build Coastguard Worker 31*61046927SAndroid Build Coastguard Worker struct libagx_increment_params { 32*61046927SAndroid Build Coastguard Worker /* Pointer to the invocation statistic */ 33*61046927SAndroid Build Coastguard Worker GLOBAL(uint32_t) statistic; 34*61046927SAndroid Build Coastguard Worker 35*61046927SAndroid Build Coastguard Worker /* Value to increment by */ 36*61046927SAndroid Build Coastguard Worker uint32_t delta; 37*61046927SAndroid Build Coastguard Worker }; 38*61046927SAndroid Build Coastguard Worker 39*61046927SAndroid Build Coastguard Worker struct libagx_cs_invocation_params { 40*61046927SAndroid Build Coastguard Worker /* Pointer to the indirect dispatch grid */ 41*61046927SAndroid Build Coastguard Worker GLOBAL(uint32_t) grid; 42*61046927SAndroid Build Coastguard Worker 43*61046927SAndroid Build Coastguard Worker /* Pointer to the compute shader invocation statistic */ 44*61046927SAndroid Build Coastguard Worker GLOBAL(uint32_t) statistic; 45*61046927SAndroid Build Coastguard Worker 46*61046927SAndroid Build Coastguard Worker /* Local workgroup size in threads */ 47*61046927SAndroid Build Coastguard Worker uint32_t local_size_threads; 48*61046927SAndroid Build Coastguard Worker }; 49*61046927SAndroid Build Coastguard Worker 50*61046927SAndroid Build Coastguard Worker static inline uint32_t libagx_cs_invocations(uint32_t local_size_threads,uint32_t x,uint32_t y,uint32_t z)51*61046927SAndroid Build Coastguard Workerlibagx_cs_invocations(uint32_t local_size_threads, uint32_t x, uint32_t y, 52*61046927SAndroid Build Coastguard Worker uint32_t z) 53*61046927SAndroid Build Coastguard Worker { 54*61046927SAndroid Build Coastguard Worker return local_size_threads * x * y * z; 55*61046927SAndroid Build Coastguard Worker } 56*61046927SAndroid Build Coastguard Worker 57*61046927SAndroid Build Coastguard Worker struct libagx_increment_ia_counters { 58*61046927SAndroid Build Coastguard Worker /* Statistics */ 59*61046927SAndroid Build Coastguard Worker GLOBAL(uint32_t) ia_vertices; 60*61046927SAndroid Build Coastguard Worker GLOBAL(uint32_t) vs_invocations; 61*61046927SAndroid Build Coastguard Worker 62*61046927SAndroid Build Coastguard Worker /* Input draw */ 63*61046927SAndroid Build Coastguard Worker CONSTANT(uint32_t) draw; 64*61046927SAndroid Build Coastguard Worker 65*61046927SAndroid Build Coastguard Worker /* Index buffer */ 66*61046927SAndroid Build Coastguard Worker uint64_t index_buffer; 67*61046927SAndroid Build Coastguard Worker uint32_t index_buffer_range_el; 68*61046927SAndroid Build Coastguard Worker uint32_t restart_index; 69*61046927SAndroid Build Coastguard Worker }; 70