mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2026-02-03 23:09:23 +00:00
104 lines
4.5 KiB
C
104 lines
4.5 KiB
C
/*
|
|
* SPDX-FileCopyrightText: Copyright (c) 2014 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 __NVKMS_FLIP_H__
|
|
#define __NVKMS_FLIP_H__
|
|
|
|
|
|
#include "nvkms-types.h"
|
|
|
|
NvBool nvCheckFlipPermissions(
|
|
const struct NvKmsPerOpenDev *pOpenDev,
|
|
const NVDevEvoRec *pDevEvo,
|
|
const NvU32 sd,
|
|
const NvU32 apiHead,
|
|
const struct NvKmsFlipCommonParams *pParams);
|
|
|
|
NvBool nvFlipEvo(NVDevEvoPtr pDevEvo,
|
|
const struct NvKmsPerOpenDev *pOpenDev,
|
|
const struct NvKmsFlipRequestOneHead *pFlipHead,
|
|
NvU32 numFlipHeads,
|
|
NvBool commit,
|
|
struct NvKmsFlipReply *reply,
|
|
NvBool skipUpdate,
|
|
NvBool allowFlipLock);
|
|
|
|
void nvApiHeadGetLayerSurfaceArray(const NVDispEvoRec *pDispEvo,
|
|
const NvU32 apiHead,
|
|
const NvU32 layer,
|
|
NVSurfaceEvoPtr pSurfaceEvos[NVKMS_MAX_EYES]);
|
|
|
|
void nvApiHeadGetCursorInfo(const NVDispEvoRec *pDispEvo,
|
|
const NvU32 apiHead,
|
|
NVSurfaceEvoPtr *ppSurfaceEvo,
|
|
NvS16 *x, NvS16 *y);
|
|
|
|
void nvApiHeadSetViewportPointIn(const NVDispEvoRec *pDispEvo,
|
|
const NvU32 apiHead,
|
|
const NvU16 x,
|
|
const NvU16 y);
|
|
|
|
NvU32 nvApiHeadGetActiveViewportOffset(NVDispEvoRec *pDispEvo,
|
|
NvU32 apiHead);
|
|
|
|
void nvApiHeadIdleMainLayerChannels(NVDevEvoRec *pDevEvo,
|
|
const NvU32 apiHeadMaskPerSd[NVKMS_MAX_SUBDEVICES]);
|
|
|
|
void nvApiHeadUpdateFlipLock(NVDevEvoRec *pDevEvo,
|
|
const NvU32 apiHeadMaskPerSd[NVKMS_MAX_SUBDEVICES],
|
|
const NvBool enable);
|
|
|
|
NvBool nvIdleMainLayerChannelCheckIdleOneApiHead(NVDispEvoPtr pDispEvo,
|
|
NvU32 apiHead);
|
|
|
|
#define NV_SURFACE_USAGE_MASK_CURSOR 0:0
|
|
#define NV_SURFACE_USAGE_MASK_CURSOR_DISABLE 0
|
|
#define NV_SURFACE_USAGE_MASK_CURSOR_ENABLE 1
|
|
#define NV_SURFACE_USAGE_MASK_LAYER(_n) (3+(3*(_n))):(1+(3*(_n)))
|
|
|
|
#define NV_SURFACE_USAGE_MASK_LAYER_SEMAPHORE 1:1
|
|
#define NV_SURFACE_USAGE_MASK_LAYER_SEMAPHORE_DISABLE 0
|
|
#define NV_SURFACE_USAGE_MASK_LAYER_SEMAPHORE_ENABLE 1
|
|
#define NV_SURFACE_USAGE_MASK_LAYER_NOTIFIER 2:2
|
|
#define NV_SURFACE_USAGE_MASK_LAYER_NOTIFIER_DISABLE 0
|
|
#define NV_SURFACE_USAGE_MASK_LAYER_NOTIFIER_ENABLE 1
|
|
#define NV_SURFACE_USAGE_MASK_LAYER_SCANOUT 0:0
|
|
#define NV_SURFACE_USAGE_MASK_LAYER_SCANOUT_DISABLE 0
|
|
#define NV_SURFACE_USAGE_MASK_LAYER_SCANOUT_ENABLE 1
|
|
|
|
NvU32 nvCollectSurfaceUsageMaskOneApiHead(const NVDispEvoRec *pDispEvo,
|
|
const NvU32 apiHead,
|
|
NVSurfaceEvoPtr pSurfaceEvo);
|
|
|
|
void nvIdleLayerChannels(NVDevEvoRec *pDevEvo,
|
|
NvU32 layerMaskPerSdApiHead[NVKMS_MAX_SUBDEVICES][NVKMS_MAX_HEADS_PER_DISP]);
|
|
|
|
void nvEvoClearSurfaceUsage(NVDevEvoRec *pDevEvo,
|
|
NVSurfaceEvoPtr pSurfaceEvo,
|
|
const NvBool skipSync);
|
|
|
|
NvBool nvIdleBaseChannelOneApiHead(NVDispEvoRec *pDispEvo, NvU32 apiHead,
|
|
NvBool *pStoppedBase);
|
|
|
|
#endif /* __NVKMS_FLIP_H__ */
|