mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2026-02-08 00:59:58 +00:00
560.35.03
This commit is contained in:
@@ -84,8 +84,8 @@ NvBool nvKmsKapiIsNotifierFinish(const struct NvKmsKapiDevice *device,
|
||||
void nvKmsKapiNotifierSetNotBegun(struct NvKmsKapiDevice *device,
|
||||
NvU32 head, NvU32 layer, NvU32 index);
|
||||
|
||||
NvBool nvKmsKapiResetDisplaySemaphore(struct NvKmsKapiDevice *device,
|
||||
NvU32 index);
|
||||
NvBool nvKmsKapiTryInitDisplaySemaphore(struct NvKmsKapiDevice *device,
|
||||
NvU32 index);
|
||||
|
||||
void nvKmsKapiSignalDisplaySemaphore(struct NvKmsKapiDevice *device,
|
||||
NvU32 index);
|
||||
|
||||
@@ -1425,7 +1425,7 @@ struct NvKmsKapiFunctionsTable {
|
||||
);
|
||||
|
||||
/*!
|
||||
* Immediately reset the specified display semaphore to the pending state.
|
||||
* Immediately initialize the specified display semaphore to the pending state.
|
||||
*
|
||||
* Must be called prior to applying a mode set that utilizes the specified
|
||||
* display semaphore for synchronization.
|
||||
@@ -1438,7 +1438,7 @@ struct NvKmsKapiFunctionsTable {
|
||||
* for the specified device.
|
||||
*/
|
||||
NvBool
|
||||
(*resetDisplaySemaphore)
|
||||
(*tryInitDisplaySemaphore)
|
||||
(
|
||||
struct NvKmsKapiDevice *device,
|
||||
NvU32 semaphoreIndex
|
||||
@@ -1447,7 +1447,7 @@ struct NvKmsKapiFunctionsTable {
|
||||
/*!
|
||||
* Immediately set the specified display semaphore to the displayable state.
|
||||
*
|
||||
* Must be called after \ref resetDisplaySemaphore to indicate a mode
|
||||
* Must be called after \ref tryInitDisplaySemaphore to indicate a mode
|
||||
* configuration change that utilizes the specified display semaphore for
|
||||
* synchronization may proceed.
|
||||
*
|
||||
@@ -1471,7 +1471,7 @@ struct NvKmsKapiFunctionsTable {
|
||||
*
|
||||
* This can be used by clients to restore a semaphore to a consistent state
|
||||
* when they have prepared it for use by previously calling
|
||||
* \ref resetDisplaySemaphore() on it, but are then prevented from
|
||||
* \ref tryInitDisplaySemaphore() on it, but are then prevented from
|
||||
* submitting the associated hardware operations to consume it due to the
|
||||
* subsequent failure of some software or hardware operation.
|
||||
*
|
||||
|
||||
@@ -286,8 +286,8 @@ NvBool nvKmsKapiAllocateSemaphores(struct NvKmsKapiDevice *device,
|
||||
return NV_TRUE;
|
||||
}
|
||||
|
||||
NvBool nvKmsKapiResetDisplaySemaphore(struct NvKmsKapiDevice *device,
|
||||
NvU32 index)
|
||||
NvBool nvKmsKapiTryInitDisplaySemaphore(struct NvKmsKapiDevice *device,
|
||||
NvU32 index)
|
||||
{
|
||||
struct nvKmsParsedSemaphore semParsed;
|
||||
|
||||
@@ -297,12 +297,6 @@ NvBool nvKmsKapiResetDisplaySemaphore(struct NvKmsKapiDevice *device,
|
||||
&semParsed);
|
||||
|
||||
if (semParsed.payload != NVKMS_KAPI_SEMAPHORE_VALUE_DONE) {
|
||||
nvKmsKapiLogDeviceDebug(
|
||||
device,
|
||||
"Attempt to reuse semaphore at index %u with pending status 0x%08x",
|
||||
index,
|
||||
semParsed.payload);
|
||||
|
||||
return NV_FALSE;
|
||||
}
|
||||
|
||||
|
||||
@@ -3607,7 +3607,7 @@ NvBool nvKmsKapiGetFunctionsTableInternal
|
||||
nvKmsKapiSetSemaphoreSurfaceValue;
|
||||
funcsTable->setSuspendResumeCallback = nvKmsKapiSetSuspendResumeCallback;
|
||||
|
||||
funcsTable->resetDisplaySemaphore = nvKmsKapiResetDisplaySemaphore;
|
||||
funcsTable->tryInitDisplaySemaphore = nvKmsKapiTryInitDisplaySemaphore;
|
||||
funcsTable->signalDisplaySemaphore = nvKmsKapiSignalDisplaySemaphore;
|
||||
funcsTable->cancelDisplaySemaphore = nvKmsKapiCancelDisplaySemaphore;
|
||||
funcsTable->signalVrrSemaphore = SignalVrrSemaphore;
|
||||
|
||||
@@ -6716,7 +6716,8 @@ static NvBool GetDfpHdmiProtocol(const NVDpyEvoRec *pDpyEvo,
|
||||
nvDpyGetOutputColorFormatInfo(pDpyEvo);
|
||||
const NvBool forceHdmiFrlIsSupported = FALSE;
|
||||
|
||||
nvAssert(rmProtocol == NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_SINGLE_TMDS_A ||
|
||||
nvAssert(rmProtocol == NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_DUAL_TMDS ||
|
||||
rmProtocol == NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_SINGLE_TMDS_A ||
|
||||
rmProtocol == NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_SINGLE_TMDS_B);
|
||||
|
||||
/* Override protocol if this mode requires HDMI FRL. */
|
||||
@@ -6743,10 +6744,25 @@ static NvBool GetDfpHdmiProtocol(const NVDpyEvoRec *pDpyEvo,
|
||||
if (nvHdmiGetEffectivePixelClockKHz(pDpyEvo, pTimings, pDpyColor) <=
|
||||
pDpyEvo->maxSingleLinkPixelClockKHz) {
|
||||
|
||||
*pTimingsProtocol = (rmProtocol ==
|
||||
NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_SINGLE_TMDS_A) ?
|
||||
NVKMS_PROTOCOL_SOR_SINGLE_TMDS_A :
|
||||
NVKMS_PROTOCOL_SOR_SINGLE_TMDS_B;
|
||||
switch (rmProtocol) {
|
||||
case NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_DUAL_TMDS:
|
||||
/*
|
||||
* Force single link TMDS protocol. HDMI does not support
|
||||
* physically support dual link TMDS.
|
||||
*
|
||||
* TMDS_A: "use A side of the link"
|
||||
*/
|
||||
*pTimingsProtocol = NVKMS_PROTOCOL_SOR_SINGLE_TMDS_A;
|
||||
break;
|
||||
case NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_SINGLE_TMDS_A:
|
||||
*pTimingsProtocol = NVKMS_PROTOCOL_SOR_SINGLE_TMDS_A;
|
||||
break;
|
||||
case NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_SINGLE_TMDS_B:
|
||||
*pTimingsProtocol = NVKMS_PROTOCOL_SOR_SINGLE_TMDS_B;
|
||||
break;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
} while (nvDowngradeColorSpaceAndBpc(&colorFormatsInfo,
|
||||
|
||||
@@ -110,7 +110,7 @@ NvBool nvHsIoctlMoveCursor(
|
||||
{
|
||||
NVHsChannelEvoRec *pHsChannel;
|
||||
|
||||
if (apiHead > ARRAY_LEN(pDispEvo->pHsChannel)) {
|
||||
if (apiHead >= ARRAY_LEN(pDispEvo->pHsChannel)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -206,7 +206,7 @@ NvBool nvHsIoctlSetCursorImage(
|
||||
NVHsChannelEvoRec *pHsChannel;
|
||||
NVSurfaceEvoRec *pSurfaceEvo = NULL;
|
||||
|
||||
if (apiHead > ARRAY_LEN(pDispEvo->pHsChannel)) {
|
||||
if (apiHead >= ARRAY_LEN(pDispEvo->pHsChannel)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user