1 /* 2 * SPDX-FileCopyrightText: Copyright (c) 2020-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 3 * SPDX-License-Identifier: MIT 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the "Software"), 7 * to deal in the Software without restriction, including without limitation 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 * and/or sell copies of the Software, and to permit persons to whom the 10 * Software is furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be included in 13 * all copies or substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21 * DEALINGS IN THE SOFTWARE. 22 */ 23 24 #ifndef _cl90cdvideo_h_ 25 #define _cl90cdvideo_h_ 26 27 /* This file defines parameters for FECS context switch events*/ 28 29 #define NV_EVENT_BUFFER_VIDEO_VERSION 1 30 31 #define NV_EVENT_BUFFER_VIDEO_TAG_ENGINE_START 0x00 32 #define NV_EVENT_BUFFER_VIDEO_TAG_ENGINE_END 0x01 33 #define NV_EVENT_BUFFER_VIDEO_TAG_PSTATE_CHANGE 0x02 34 #define NV_EVENT_BUFFER_VIDEO_TAG_LOG_DATA 0x03 35 #define NV_EVENT_BUFFER_VIDEO_TAG_LAST NV_EVENT_BUFFER_VIDEO_TAG_LOG_DATA 36 37 #define NV_EVENT_BUFFER_VIDEO_BITMASK_TAG_ENGINE_START NVBIT(NV_EVENT_BUFFER_VIDEO_TAG_ENGINE_START) 38 #define NV_EVENT_BUFFER_VIDEO_BITMASK_TAG_ENGINE_END NVBIT(NV_EVENT_BUFFER_VIDEO_TAG_ENGINE_END) 39 #define NV_EVENT_BUFFER_VIDEO_BITMASK_TAG_PSTATE_CHANGE NVBIT(NV_EVENT_BUFFER_VIDEO_TAG_PSTATE_CHANGE) 40 #define NV_EVENT_BUFFER_VIDEO_BITMASK_TAG_LOG_DATA NVBIT(NV_EVENT_BUFFER_VIDEO_TAG_LOG_DATA) 41 42 /* context_id is set to this value if fecs info doesn't match a known channel/tsg handle*/ 43 #define NV_EVENT_BUFFER_VIDEO_INVALID_CONTEXT 0xFFFFFFFF 44 45 /* 46 * PID/context_id are set to these values if the data is from another user's 47 * client and the current user is not an administrator 48 */ 49 #define NV_EVENT_BUFFER_VIDEO_HIDDEN_PID 0x0 50 #define NV_EVENT_BUFFER_VIDEO_HIDDEN_CONTEXT 0x0 51 52 /* 53 * PID/context_id are set to these values if the data is from a kernel client 54 * and the data is being read by a user client 55 */ 56 #define NV_EVENT_BUFFER_VIDEO_KERNEL_PID 0xFFFFFFFF 57 #define NV_EVENT_BUFFER_VIDEO_KERNEL_CONTEXT 0xFFFFFFFF 58 59 typedef enum 60 { 61 NV_EVENT_BUFFER_VIDEO_ENGINE_TYPE__NVDEC = 0, 62 NV_EVENT_BUFFER_VIDEO_ENGINE_TYPE__NVENC, 63 NV_EVENT_BUFFER_VIDEO_ENGINE_TYPE__NVJPEG, 64 NV_EVENT_BUFFER_VIDEO_ENGINE_TYPE__OFA, 65 NV_EVENT_BUFFER_VIDEO_ENGINE_TYPE__LAST = NV_EVENT_BUFFER_VIDEO_ENGINE_TYPE__OFA, 66 } NV_EVENT_BUFFER_VIDEO_ENGINE_TYPE; 67 68 typedef enum 69 { 70 NV_EVENT_BUFFER_VIDEO_CODEC_ID__MPEG2 = 0, 71 NV_EVENT_BUFFER_VIDEO_CODEC_ID__VC1, 72 NV_EVENT_BUFFER_VIDEO_CODEC_ID__H264, 73 NV_EVENT_BUFFER_VIDEO_CODEC_ID__MPEG4, 74 NV_EVENT_BUFFER_VIDEO_CODEC_ID__VP8, 75 NV_EVENT_BUFFER_VIDEO_CODEC_ID__VP9, 76 NV_EVENT_BUFFER_VIDEO_CODEC_ID__HEVC, 77 NV_EVENT_BUFFER_VIDEO_CODEC_ID__AVD, 78 NV_EVENT_BUFFER_VIDEO_CODEC_ID__LAST = NV_EVENT_BUFFER_VIDEO_CODEC_ID__AVD, 79 } NV_EVENT_BUFFER_VIDEO_ENGINE_CODEC_ID; 80 81 // V1 ------------------------------------------------------------------------ 82 typedef struct 83 { 84 NvU8 event_id; ///< NV_EVENT_BUFFER_VIDEO_TAG_* 85 NvU8 vmid; 86 NvU16 seqno; 87 NvU32 context_id; ///< channel/tsg handle 88 NvU64 pid NV_ALIGN_BYTES(8); ///< process id 89 NvU64 timestamp NV_ALIGN_BYTES(8); 90 NvU64 api_id NV_ALIGN_BYTES(8); 91 union 92 { 93 NvU64 event_data; 94 95 struct 96 { 97 NvU8 engine_type; 98 NvU8 engine_id; 99 NvU16 codec_id; 100 NvU32 status; 101 } session; 102 103 struct 104 { 105 NvU16 from; 106 NvU16 to; 107 } stateChange; 108 109 struct 110 { 111 NvU8 engine_type; 112 NvU8 engine_id; 113 NvU16 codec_id; 114 NvU32 size; 115 } logData; 116 }; 117 } NV_EVENT_BUFFER_VIDEO_RECORD_V1; 118 119 typedef NV_EVENT_BUFFER_VIDEO_RECORD_V1 NV_EVENT_BUFFER_VIDEO_RECORD; 120 #endif /* _cl90cdvideo_h_ */ 121 122