Skip to content

Commit 7b698ed

Browse files
zxyeintel-mediadev
authored andcommitted
[Decode] Fix the 3rd VD debug override issue
Support the 3rd VDBox in the debug override Force VDBOX user key
1 parent a126f35 commit 7b698ed

File tree

3 files changed

+34
-9
lines changed

3 files changed

+34
-9
lines changed

media_common/agnostic/common/os/mos_os.h

+1
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ typedef enum _TRINITY_PATH
159159
#define MOS_FORCE_VDBOX_NONE 0
160160
#define MOS_FORCE_VDBOX_1 0x0001
161161
#define MOS_FORCE_VDBOX_2 0x0002
162+
#define MOS_FORCE_VDBOX_3 0x0003
162163
//below is for scalability case,
163164
//format is FE vdbox is specified as lowest 4 bits; BE0 is 2nd low 4 bits; BE1 is 3rd low 4bits.
164165
#define MOS_FORCE_VDBOX_1_1_2 0x0211

media_softlet/agnostic/common/shared/mediacontext/media_context.cpp

+33-2
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,31 @@ MediaContext::MediaContext(uint8_t componentType, void *hwInterface, PMOS_INTERF
6363
m_streamId = m_osInterface->streamIndex;
6464
m_gpuContextAttributeTable.clear();
6565

66+
MEDIA_SYSTEM_INFO *gtSystemInfo = nullptr;
67+
MEDIA_ENGINE_INFO mediaEngineInfo = {};
68+
69+
auto skuTable = m_osInterface->pfnGetSkuTable(m_osInterface);
70+
if (!skuTable)
71+
{
72+
MOS_OS_ASSERTMESSAGE("Failed to get skuTable");
73+
return;
74+
}
75+
if (MEDIA_IS_SKU(skuTable,FtrMediaIPSeparation))
76+
{
77+
if (m_osInterface->pfnGetMediaEngineInfo(m_osInterface, mediaEngineInfo) == MOS_STATUS_SUCCESS)
78+
{
79+
m_numVdbox = (uint8_t)mediaEngineInfo.VDBoxInfo.NumberOfVDBoxEnabled;
80+
}
81+
}
82+
else
83+
{
84+
gtSystemInfo = m_osInterface->pfnGetGtSystemInfo(m_osInterface);
85+
if(gtSystemInfo)
86+
{
87+
m_numVdbox = (uint8_t)(gtSystemInfo->VDBoxInfo.NumberOfVDBoxEnabled);
88+
}
89+
}
90+
6691
if (m_numVdbox > 1
6792
&& m_osInterface != nullptr
6893
&& m_osInterface->bHcpDecScalabilityMode)
@@ -500,6 +525,7 @@ MOS_STATUS MediaContext::CheckScalabilityOverrideValidity()
500525
bool scalableDecMode = false;
501526
bool useVD1 = false;
502527
bool useVD2 = false;
528+
bool useVD3 = false;
503529

504530
MHW_MI_CHK_NULL(m_osInterface);
505531
scalableDecMode = m_osInterface->bHcpDecScalabilityMode ? true : false;
@@ -519,6 +545,7 @@ MOS_STATUS MediaContext::CheckScalabilityOverrideValidity()
519545
if (forceVdbox != MOS_FORCE_VDBOX_NONE &&
520546
forceVdbox != MOS_FORCE_VDBOX_1 &&
521547
forceVdbox != MOS_FORCE_VDBOX_2 &&
548+
forceVdbox != MOS_FORCE_VDBOX_3 &&
522549
// 2 pipes, VDBOX1-BE1, VDBOX2-BE2
523550
forceVdbox != MOS_FORCE_VDBOX_1_1_2 &&
524551
forceVdbox != MOS_FORCE_VDBOX_2_1_2)
@@ -551,13 +578,16 @@ MOS_STATUS MediaContext::CheckScalabilityOverrideValidity()
551578
{
552579
MHW_VDBOX_IS_VDBOX_SPECIFIED(forceVdbox, MOS_FORCE_VDBOX_1, MOS_FORCEVDBOX_VDBOXID_BITSNUM, MOS_FORCEVDBOX_MASK, useVD1);
553580
MHW_VDBOX_IS_VDBOX_SPECIFIED(forceVdbox, MOS_FORCE_VDBOX_2, MOS_FORCEVDBOX_VDBOXID_BITSNUM, MOS_FORCEVDBOX_MASK, useVD2);
581+
MHW_VDBOX_IS_VDBOX_SPECIFIED(forceVdbox, MOS_FORCE_VDBOX_3, MOS_FORCEVDBOX_VDBOXID_BITSNUM, MOS_FORCEVDBOX_MASK, useVD3);
554582
}
555583
if (MEDIA_IS_SKU(skuTable,FtrMediaIPSeparation))
556584
{
557585
if (!mediaEngineInfo.VDBoxInfo.IsValid ||
558586
(useVD1 && !mediaEngineInfo.VDBoxInfo.Instances.Bits.VDBox0Enabled) ||
559-
(useVD2 && !mediaEngineInfo.VDBoxInfo.Instances.Bits.VDBox2Enabled))
587+
(useVD2 && !mediaEngineInfo.VDBoxInfo.Instances.Bits.VDBox2Enabled) ||
588+
(useVD3 && !mediaEngineInfo.VDBoxInfo.Instances.Bits.VDBox1Enabled))
560589
{
590+
//1:VD0 2:VD2 3:VD1
561591
eStatus = MOS_STATUS_INVALID_PARAMETER;
562592
MHW_ASSERTMESSAGE("the forced VDBOX is not enabled in current platform.");
563593
return eStatus;
@@ -567,7 +597,8 @@ MOS_STATUS MediaContext::CheckScalabilityOverrideValidity()
567597
{
568598
if (!gtSystemInfo->VDBoxInfo.IsValid ||
569599
(useVD1 && !gtSystemInfo->VDBoxInfo.Instances.Bits.VDBox0Enabled) ||
570-
(useVD2 && !gtSystemInfo->VDBoxInfo.Instances.Bits.VDBox2Enabled))
600+
(useVD2 && !gtSystemInfo->VDBoxInfo.Instances.Bits.VDBox2Enabled) ||
601+
(useVD3 && !gtSystemInfo->VDBoxInfo.Instances.Bits.VDBox1Enabled))
571602
{
572603
eStatus = MOS_STATUS_INVALID_PARAMETER;
573604
MHW_ASSERTMESSAGE("the forced VDBOX is not enabled in current platform.");

media_softlet/agnostic/common/shared/mediacontext/media_context.h

-7
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,6 @@ class MediaContext
124124

125125
uint8_t GetNumVdbox()
126126
{
127-
m_numVdbox = 1;
128-
MEDIA_SYSTEM_INFO *gtSystemInfo = m_osInterface->pfnGetGtSystemInfo(m_osInterface);
129-
if (gtSystemInfo != nullptr)
130-
{
131-
// Both VE mode and media solo mode should be able to get the VDBOX number via the same interface
132-
m_numVdbox = (uint8_t)(gtSystemInfo->VDBoxInfo.NumberOfVDBoxEnabled);
133-
}
134127
return m_numVdbox;
135128
}
136129

0 commit comments

Comments
 (0)