Files
open-gpu-kernel-modules/src/common/sdk/nvidia/inc/class/cl90cdvideo.h
Bernhard Stoeckner 54d69484da 570.86.15
2025-01-27 19:36:56 +01:00

130 lines
4.9 KiB
C

/*
* SPDX-FileCopyrightText: Copyright (c) 2020-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#ifndef _cl90cdvideo_h_
#define _cl90cdvideo_h_
/* This file defines parameters for FECS context switch events*/
#define NV_EVENT_BUFFER_VIDEO_VERSION 1
#define NV_EVENT_BUFFER_VIDEO_TAG_ENGINE_START 0x00
#define NV_EVENT_BUFFER_VIDEO_TAG_ENGINE_END 0x01
#define NV_EVENT_BUFFER_VIDEO_TAG_PSTATE_CHANGE 0x02
#define NV_EVENT_BUFFER_VIDEO_TAG_LOG_DATA 0x03
#define NV_EVENT_BUFFER_VIDEO_TAG_LAST NV_EVENT_BUFFER_VIDEO_TAG_LOG_DATA
#define NV_EVENT_BUFFER_VIDEO_BITMASK_TAG_ENGINE_START NVBIT(NV_EVENT_BUFFER_VIDEO_TAG_ENGINE_START)
#define NV_EVENT_BUFFER_VIDEO_BITMASK_TAG_ENGINE_END NVBIT(NV_EVENT_BUFFER_VIDEO_TAG_ENGINE_END)
#define NV_EVENT_BUFFER_VIDEO_BITMASK_TAG_PSTATE_CHANGE NVBIT(NV_EVENT_BUFFER_VIDEO_TAG_PSTATE_CHANGE)
#define NV_EVENT_BUFFER_VIDEO_BITMASK_TAG_LOG_DATA NVBIT(NV_EVENT_BUFFER_VIDEO_TAG_LOG_DATA)
/* context_id is set to this value if fecs info doesn't match a known channel/tsg handle*/
#define NV_EVENT_BUFFER_VIDEO_INVALID_CONTEXT 0xFFFFFFFF
/*
* PID/context_id are set to these values if the data is from another user's
* client and the current user is not an administrator
*/
#define NV_EVENT_BUFFER_VIDEO_HIDDEN_PID 0x0
#define NV_EVENT_BUFFER_VIDEO_HIDDEN_CONTEXT 0x0
/*
* PID/context_id are set to these values if the data is from a kernel client
* and the data is being read by a user client
*/
#define NV_EVENT_BUFFER_VIDEO_KERNEL_PID 0xFFFFFFFF
#define NV_EVENT_BUFFER_VIDEO_KERNEL_CONTEXT 0xFFFFFFFF
typedef enum
{
NV_EVENT_BUFFER_VIDEO_ENGINE_TYPE__NVDEC = 0,
NV_EVENT_BUFFER_VIDEO_ENGINE_TYPE__NVENC,
NV_EVENT_BUFFER_VIDEO_ENGINE_TYPE__NVJPEG,
NV_EVENT_BUFFER_VIDEO_ENGINE_TYPE__OFA,
NV_EVENT_BUFFER_VIDEO_ENGINE_TYPE__LAST = NV_EVENT_BUFFER_VIDEO_ENGINE_TYPE__OFA,
} NV_EVENT_BUFFER_VIDEO_ENGINE_TYPE;
typedef enum
{
NV_EVENT_BUFFER_VIDEO_CODEC_ID__MPEG2 = 0,
NV_EVENT_BUFFER_VIDEO_CODEC_ID__VC1,
NV_EVENT_BUFFER_VIDEO_CODEC_ID__H264,
NV_EVENT_BUFFER_VIDEO_CODEC_ID__MPEG4,
NV_EVENT_BUFFER_VIDEO_CODEC_ID__VP8,
NV_EVENT_BUFFER_VIDEO_CODEC_ID__VP9,
NV_EVENT_BUFFER_VIDEO_CODEC_ID__HEVC,
NV_EVENT_BUFFER_VIDEO_CODEC_ID__AVD,
NV_EVENT_BUFFER_VIDEO_CODEC_ID__LAST = NV_EVENT_BUFFER_VIDEO_CODEC_ID__AVD,
} NV_EVENT_BUFFER_VIDEO_ENGINE_CODEC_ID;
typedef enum
{
NV_EVENT_BUFFER_VIDEO_ENGINE_LOG_DATA_TYPE__GENERIC = 0, /* Generic opaque data */
NV_EVENT_BUFFER_VIDEO_ENGINE_LOG_DATA_TYPE__STR, /* Log data can be interpreted as string */
NV_EVENT_BUFFER_VIDEO_ENGINE_LOG_DATA_TYPE__BIN, /* Log data is binary data */
NV_EVENT_BUFFER_VIDEO_ENGINE_LOG_DATA_TYPE__NUM
} NV_EVENT_BUFFER_VIDEO_ENGINE_LOG_DATA_TYPE;
// V1 ------------------------------------------------------------------------
typedef struct
{
NvU8 event_id; ///< NV_EVENT_BUFFER_VIDEO_TAG_*
NvU8 vmid;
NvU16 seqno;
NvU32 context_id; ///< channel/tsg handle
NvU64 pid NV_ALIGN_BYTES(8); ///< process id
NvU64 timestamp NV_ALIGN_BYTES(8);
NvU64 api_id NV_ALIGN_BYTES(8);
union
{
NvU64 event_data;
struct
{
NvU8 engine_type;
NvU8 engine_id;
NvU16 codec_id;
NvU32 status;
} session;
struct
{
NvU16 from;
NvU16 to;
} stateChange;
struct
{
NvU8 engine_type;
NvU8 engine_id;
NvU16 type;
NvU32 size;
} logData;
};
} NV_EVENT_BUFFER_VIDEO_RECORD_V1;
typedef NV_EVENT_BUFFER_VIDEO_RECORD_V1 NV_EVENT_BUFFER_VIDEO_RECORD;
#endif /* _cl90cdvideo_h_ */