18a1362adSmaya/*
28a1362adSmaya * Copyright © 2019 Intel Corporation
38a1362adSmaya *
48a1362adSmaya * Permission is hereby granted, free of charge, to any person obtaining a
58a1362adSmaya * copy of this software and associated documentation files (the "Software"),
68a1362adSmaya * to deal in the Software without restriction, including without limitation
78a1362adSmaya * the rights to use, copy, modify, merge, publish, distribute, sublicense,
88a1362adSmaya * and/or sell copies of the Software, and to permit persons to whom the
98a1362adSmaya * Software is furnished to do so, subject to the following conditions:
108a1362adSmaya *
118a1362adSmaya * The above copyright notice and this permission notice (including the next
128a1362adSmaya * paragraph) shall be included in all copies or substantial portions of the
138a1362adSmaya * Software.
148a1362adSmaya *
158a1362adSmaya * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
168a1362adSmaya * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
178a1362adSmaya * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
188a1362adSmaya * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
198a1362adSmaya * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
208a1362adSmaya * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
218a1362adSmaya * IN THE SOFTWARE.
228a1362adSmaya */
238a1362adSmaya
248a1362adSmaya#ifndef OVERLAY_PARAMS_H
258a1362adSmaya#define OVERLAY_PARAMS_H
268a1362adSmaya
278a1362adSmaya#ifdef __cplusplus
288a1362adSmayaextern "C" {
298a1362adSmaya#endif
308a1362adSmaya
318a1362adSmaya#include <stdio.h>
328a1362adSmaya#include <stdint.h>
338a1362adSmaya#include <stdbool.h>
348a1362adSmaya
358a1362adSmaya#define OVERLAY_PARAMS                               \
367ec681f3Smrg   OVERLAY_PARAM_BOOL(device)                        \
377ec681f3Smrg   OVERLAY_PARAM_BOOL(format)                        \
388a1362adSmaya   OVERLAY_PARAM_BOOL(fps)                           \
398a1362adSmaya   OVERLAY_PARAM_BOOL(frame)                         \
408a1362adSmaya   OVERLAY_PARAM_BOOL(frame_timing)                  \
418a1362adSmaya   OVERLAY_PARAM_BOOL(submit)                        \
428a1362adSmaya   OVERLAY_PARAM_BOOL(draw)                          \
438a1362adSmaya   OVERLAY_PARAM_BOOL(draw_indexed)                  \
448a1362adSmaya   OVERLAY_PARAM_BOOL(draw_indirect)                 \
458a1362adSmaya   OVERLAY_PARAM_BOOL(draw_indexed_indirect)         \
468a1362adSmaya   OVERLAY_PARAM_BOOL(draw_indirect_count)           \
478a1362adSmaya   OVERLAY_PARAM_BOOL(draw_indexed_indirect_count)   \
488a1362adSmaya   OVERLAY_PARAM_BOOL(dispatch)                      \
498a1362adSmaya   OVERLAY_PARAM_BOOL(dispatch_indirect)             \
508a1362adSmaya   OVERLAY_PARAM_BOOL(pipeline_graphics)             \
518a1362adSmaya   OVERLAY_PARAM_BOOL(pipeline_compute)              \
528a1362adSmaya   OVERLAY_PARAM_BOOL(pipeline_raytracing)           \
538a1362adSmaya   OVERLAY_PARAM_BOOL(acquire)                       \
548a1362adSmaya   OVERLAY_PARAM_BOOL(acquire_timing)                \
557ec681f3Smrg   OVERLAY_PARAM_BOOL(present_timing)                \
568a1362adSmaya   OVERLAY_PARAM_BOOL(vertices)                      \
578a1362adSmaya   OVERLAY_PARAM_BOOL(primitives)                    \
588a1362adSmaya   OVERLAY_PARAM_BOOL(vert_invocations)              \
598a1362adSmaya   OVERLAY_PARAM_BOOL(geom_invocations)              \
608a1362adSmaya   OVERLAY_PARAM_BOOL(geom_primitives)               \
618a1362adSmaya   OVERLAY_PARAM_BOOL(clip_invocations)              \
628a1362adSmaya   OVERLAY_PARAM_BOOL(clip_primitives)               \
638a1362adSmaya   OVERLAY_PARAM_BOOL(frag_invocations)              \
648a1362adSmaya   OVERLAY_PARAM_BOOL(tess_ctrl_patches)             \
658a1362adSmaya   OVERLAY_PARAM_BOOL(tess_eval_invocations)         \
668a1362adSmaya   OVERLAY_PARAM_BOOL(compute_invocations)           \
678a1362adSmaya   OVERLAY_PARAM_BOOL(gpu_timing)                    \
688a1362adSmaya   OVERLAY_PARAM_CUSTOM(fps_sampling_period)         \
698a1362adSmaya   OVERLAY_PARAM_CUSTOM(output_file)                 \
708a1362adSmaya   OVERLAY_PARAM_CUSTOM(position)                    \
718a1362adSmaya   OVERLAY_PARAM_CUSTOM(width)                       \
728a1362adSmaya   OVERLAY_PARAM_CUSTOM(height)                      \
738a1362adSmaya   OVERLAY_PARAM_CUSTOM(no_display)                  \
747ec681f3Smrg   OVERLAY_PARAM_CUSTOM(control)                     \
758a1362adSmaya   OVERLAY_PARAM_CUSTOM(help)
768a1362adSmaya
778a1362adSmayaenum overlay_param_position {
788a1362adSmaya   LAYER_POSITION_TOP_LEFT,
798a1362adSmaya   LAYER_POSITION_TOP_RIGHT,
808a1362adSmaya   LAYER_POSITION_BOTTOM_LEFT,
818a1362adSmaya   LAYER_POSITION_BOTTOM_RIGHT,
828a1362adSmaya};
838a1362adSmaya
848a1362adSmayaenum overlay_param_enabled {
858a1362adSmaya#define OVERLAY_PARAM_BOOL(name) OVERLAY_PARAM_ENABLED_##name,
868a1362adSmaya#define OVERLAY_PARAM_CUSTOM(name)
878a1362adSmaya   OVERLAY_PARAMS
888a1362adSmaya#undef OVERLAY_PARAM_BOOL
898a1362adSmaya#undef OVERLAY_PARAM_CUSTOM
908a1362adSmaya   OVERLAY_PARAM_ENABLED_MAX
918a1362adSmaya};
928a1362adSmaya
938a1362adSmayastruct overlay_params {
948a1362adSmaya   bool enabled[OVERLAY_PARAM_ENABLED_MAX];
958a1362adSmaya   enum overlay_param_position position;
968a1362adSmaya   FILE *output_file;
977ec681f3Smrg   int control;
988a1362adSmaya   uint32_t fps_sampling_period; /* us */
998a1362adSmaya   bool help;
1008a1362adSmaya   bool no_display;
1018a1362adSmaya   unsigned width;
1028a1362adSmaya   unsigned height;
1038a1362adSmaya};
1048a1362adSmaya
1058a1362adSmayaconst extern char *overlay_param_names[];
1068a1362adSmaya
1078a1362adSmayavoid parse_overlay_env(struct overlay_params *params,
1088a1362adSmaya                       const char *env);
1098a1362adSmaya
1108a1362adSmaya#ifdef __cplusplus
1118a1362adSmaya}
1128a1362adSmaya#endif
1138a1362adSmaya
1148a1362adSmaya#endif /* OVERLAY_PARAMS_H */
115