1*61046927SAndroid Build Coastguard Worker /* 2*61046927SAndroid Build Coastguard Worker * Copyright © 2020 Intel Corporation 3*61046927SAndroid Build Coastguard Worker * 4*61046927SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 5*61046927SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 6*61046927SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 7*61046927SAndroid Build Coastguard Worker * on the rights to use, copy, modify, merge, publish, distribute, sub 8*61046927SAndroid Build Coastguard Worker * license, and/or sell copies of the Software, and to permit persons to whom 9*61046927SAndroid Build Coastguard Worker * the Software is furnished to do so, subject to the following conditions: 10*61046927SAndroid Build Coastguard Worker * 11*61046927SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the next 12*61046927SAndroid Build Coastguard Worker * paragraph) shall be included in all copies or substantial portions of the 13*61046927SAndroid Build Coastguard Worker * Software. 14*61046927SAndroid Build Coastguard Worker * 15*61046927SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16*61046927SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17*61046927SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 18*61046927SAndroid Build Coastguard Worker * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 19*61046927SAndroid Build Coastguard Worker * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 20*61046927SAndroid Build Coastguard Worker * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 21*61046927SAndroid Build Coastguard Worker * USE OR OTHER DEALINGS IN THE SOFTWARE. 22*61046927SAndroid Build Coastguard Worker */ 23*61046927SAndroid Build Coastguard Worker 24*61046927SAndroid Build Coastguard Worker #ifndef ANV_MEASURE_H 25*61046927SAndroid Build Coastguard Worker #define ANV_MEASURE_H 26*61046927SAndroid Build Coastguard Worker 27*61046927SAndroid Build Coastguard Worker #include "anv_private.h" 28*61046927SAndroid Build Coastguard Worker #include "common/intel_measure.h" 29*61046927SAndroid Build Coastguard Worker 30*61046927SAndroid Build Coastguard Worker void anv_measure_device_init(struct anv_physical_device *device); 31*61046927SAndroid Build Coastguard Worker void anv_measure_device_destroy(struct anv_physical_device *device); 32*61046927SAndroid Build Coastguard Worker 33*61046927SAndroid Build Coastguard Worker void anv_measure_init(struct anv_cmd_buffer *cmd_buffer); 34*61046927SAndroid Build Coastguard Worker void anv_measure_destroy(struct anv_cmd_buffer *cmd_buffer); 35*61046927SAndroid Build Coastguard Worker void anv_measure_reset(struct anv_cmd_buffer *cmd_buffer); 36*61046927SAndroid Build Coastguard Worker 37*61046927SAndroid Build Coastguard Worker void _anv_measure_snapshot(struct anv_cmd_buffer *cmd_buffer, 38*61046927SAndroid Build Coastguard Worker enum intel_measure_snapshot_type type, 39*61046927SAndroid Build Coastguard Worker const char *event_name, 40*61046927SAndroid Build Coastguard Worker uint32_t count); 41*61046927SAndroid Build Coastguard Worker 42*61046927SAndroid Build Coastguard Worker /* ends snapshots before command buffer submission */ 43*61046927SAndroid Build Coastguard Worker void _anv_measure_endcommandbuffer(struct anv_cmd_buffer *cmd_buffer); 44*61046927SAndroid Build Coastguard Worker 45*61046927SAndroid Build Coastguard Worker /* when measuring render passes, inserts a timestamp */ 46*61046927SAndroid Build Coastguard Worker void _anv_measure_beginrenderpass(struct anv_cmd_buffer *cmd_buffer); 47*61046927SAndroid Build Coastguard Worker 48*61046927SAndroid Build Coastguard Worker /* tracks frame progression */ 49*61046927SAndroid Build Coastguard Worker void _anv_measure_acquire(struct anv_device *device); 50*61046927SAndroid Build Coastguard Worker 51*61046927SAndroid Build Coastguard Worker /* should be combined with endcommandbuffer */ 52*61046927SAndroid Build Coastguard Worker void _anv_measure_submit(struct anv_cmd_buffer *cmd_buffer); 53*61046927SAndroid Build Coastguard Worker 54*61046927SAndroid Build Coastguard Worker void 55*61046927SAndroid Build Coastguard Worker _anv_measure_add_secondary(struct anv_cmd_buffer *primary, 56*61046927SAndroid Build Coastguard Worker struct anv_cmd_buffer *secondary); 57*61046927SAndroid Build Coastguard Worker 58*61046927SAndroid Build Coastguard Worker #define anv_measure_acquire(device) \ 59*61046927SAndroid Build Coastguard Worker if (unlikely(device->physical->measure_device.config)) \ 60*61046927SAndroid Build Coastguard Worker _anv_measure_acquire(device) 61*61046927SAndroid Build Coastguard Worker 62*61046927SAndroid Build Coastguard Worker #define anv_measure_snapshot(cmd_buffer, type, event_name, count) \ 63*61046927SAndroid Build Coastguard Worker if (unlikely(cmd_buffer->measure)) \ 64*61046927SAndroid Build Coastguard Worker _anv_measure_snapshot(cmd_buffer, type, event_name, count) 65*61046927SAndroid Build Coastguard Worker 66*61046927SAndroid Build Coastguard Worker #define anv_measure_endcommandbuffer(cmd_buffer) \ 67*61046927SAndroid Build Coastguard Worker if (unlikely(cmd_buffer->measure)) \ 68*61046927SAndroid Build Coastguard Worker _anv_measure_endcommandbuffer(cmd_buffer) 69*61046927SAndroid Build Coastguard Worker 70*61046927SAndroid Build Coastguard Worker #define anv_measure_beginrenderpass(cmd_buffer) \ 71*61046927SAndroid Build Coastguard Worker if (unlikely(cmd_buffer->measure)) \ 72*61046927SAndroid Build Coastguard Worker _anv_measure_beginrenderpass(cmd_buffer) 73*61046927SAndroid Build Coastguard Worker 74*61046927SAndroid Build Coastguard Worker #define anv_measure_submit(cmd_buffer) \ 75*61046927SAndroid Build Coastguard Worker if (unlikely(cmd_buffer->measure)) \ 76*61046927SAndroid Build Coastguard Worker _anv_measure_submit(cmd_buffer) 77*61046927SAndroid Build Coastguard Worker 78*61046927SAndroid Build Coastguard Worker #define anv_measure_add_secondary(primary, secondary) \ 79*61046927SAndroid Build Coastguard Worker if (unlikely(primary->measure)) \ 80*61046927SAndroid Build Coastguard Worker _anv_measure_add_secondary(primary, secondary) 81*61046927SAndroid Build Coastguard Worker 82*61046927SAndroid Build Coastguard Worker #endif /* ANV_MEASURE_H */ 83