mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2026-02-01 05:59:48 +00:00
580.94.16
This commit is contained in:
@@ -1265,6 +1265,8 @@ void updateColorFormatAndBpcTiming(NVT_EDID_INFO *pInfo)
|
||||
// DisplayId2.0 spec has its own way of determining color format support which includes bpc + color format
|
||||
updateColorFormatForDisplayId20ExtnTimings(pInfo, i);
|
||||
}
|
||||
|
||||
updateBpcForYuv420OnlyTiming(&pInfo->timing[i], &pInfo->ext861);
|
||||
}
|
||||
|
||||
// Go through all the timings and set CTA format accordingly. If a timing is a CTA 861b timing, store the
|
||||
|
||||
@@ -284,7 +284,8 @@ static const NVT_TIMING EIA861B[]=
|
||||
// the end
|
||||
EIA_TIMING(0,0,0,0,'-',0,0,0,0,'-',0,'p',4:3,0,0)
|
||||
};
|
||||
static NvU32 MAX_CEA861B_FORMAT = sizeof(EIA861B)/sizeof(EIA861B[0]) - 1;
|
||||
|
||||
static const NvU32 MAX_CEA861B_FORMAT = sizeof(EIA861B)/sizeof(EIA861B[0]) - 1;
|
||||
|
||||
static const NvU32 EIA861B_DUAL_ASPECT_VICS[][2] =
|
||||
{
|
||||
@@ -972,6 +973,40 @@ void parse861bShortYuv420Timing(NVT_EDID_CEA861_INFO *pExt861,
|
||||
}
|
||||
}
|
||||
|
||||
// If a timing is present in the YUV420 VDB, consider it
|
||||
// incompatible with other sampling modes
|
||||
CODE_SEGMENT(PAGE_DD_CODE)
|
||||
void updateBpcForYuv420OnlyTiming(NVT_TIMING *pT,
|
||||
const NVT_EDID_CEA861_INFO *p861Info)
|
||||
{
|
||||
NvU32 i;
|
||||
const NvU8 *pYuv420Vic = p861Info->svd_y420vdb;
|
||||
NvBool yuv420Only = NV_FALSE;
|
||||
|
||||
for (i = 0; i < p861Info->total_y420vdb; i++)
|
||||
{
|
||||
NVT_TIMING y420vdbTiming;
|
||||
NvU8 vic = NVT_GET_CTA_8BIT_VIC(pYuv420Vic[i]);
|
||||
if (vic == 0 || vic > MAX_CEA861B_FORMAT)
|
||||
continue;
|
||||
|
||||
y420vdbTiming = EIA861B[vic-1];
|
||||
|
||||
if (NvTiming_IsTimingExactEqual(pT, &y420vdbTiming))
|
||||
{
|
||||
yuv420Only = NV_TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (yuv420Only)
|
||||
{
|
||||
pT->etc.rgb444.bpcs = 0;
|
||||
pT->etc.yuv444.bpcs = 0;
|
||||
pT->etc.yuv422.bpcs = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Currently, the SVR both used in the NVRDB and VFPDB.
|
||||
// "One particular application is a Sink that prefers a Video Format that is not listed as an SVD in a VDB
|
||||
// but instead listed in a YCBCR 4:2:0 Video Data Block"
|
||||
|
||||
@@ -77,6 +77,7 @@ NVT_STATUS parseCta861DataBlockInfo(NvU8 *pEdid, NvU32 size, NVT_EDID_CEA861_INF
|
||||
void parse861ExtDetailedTiming(NvU8 *pEdidExt, NvU8 basicCaps, NVT_EDID_INFO *pInfo);
|
||||
void parse861bShortTiming(NVT_EDID_CEA861_INFO *pExt861, void *pRawInfo, NVT_CTA861_ORIGIN flag);
|
||||
void parse861bShortYuv420Timing(NVT_EDID_CEA861_INFO *pExt861, void *pRawInfo, NVT_CTA861_ORIGIN flag);
|
||||
void updateBpcForYuv420OnlyTiming(NVT_TIMING *pT, const NVT_EDID_CEA861_INFO *p861Info);
|
||||
void parseCta861VideoFormatDataBlock(NVT_EDID_CEA861_INFO *pExt861, void *pRawInfo);
|
||||
void parseCta861NativeOrPreferredTiming(NVT_EDID_CEA861_INFO *pExt861, void *pRawInfo, NVT_CTA861_ORIGIN flag);
|
||||
void parseCta861VsdbBlocks(NVT_EDID_CEA861_INFO *pExt861, void *pRawInfo, NVT_CTA861_ORIGIN flag);
|
||||
|
||||
Reference in New Issue
Block a user