Skip to content

Commit d76dde4

Browse files
Bossonorintel-mediadev
authored andcommitted
[Encode] Add AV1 SCC Palette tuning for Xe3 LPM
* [Encode] Add AV1 SCC Palette tuning for Xe3 LPM Added performance tuning for AV1 Screen Content Coding (SCC) when Palette mode is enabled and IBC is disabled for target usage levels 6 and 7 on Xe3 LPM platform. Configures vdencCmd2Par settings to optimize intra prediction candidate counts for different CU sizes (8x8, 16x16, 32x32) and chroma channels. Key frames receive more aggressive tuning with additional intra mode checks compared to non-key frames. Settings applied through both parameter structure and direct bit manipulation for hardware command configuration.
1 parent 08da4c4 commit d76dde4

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

media_softlet/agnostic/Xe3_M_plus/Xe3_LPM_base/codec/hal/enc/av1/features/encode_av1_scc_xe3_lpm_base.cpp

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,32 @@ namespace encode
6363
params.vdencCmd2Par100 = 0;
6464
}
6565

66+
// Palette ON + IBC OFF tuning for TU6/TU7 using vdencCmd2Par settings
67+
if (m_enablePalette && !m_enableIBC && (m_basicFeature->m_targetUsage == 6 || m_basicFeature->m_targetUsage == 7))
68+
{
69+
const auto frame_type = static_cast<Av1FrameType>(m_basicFeature->m_av1PicParams->PicFlags.fields.frame_type);
70+
71+
if (AV1_KEY_OR_INRA_FRAME(frame_type))
72+
{
73+
// Key frame vdencCmd2Par settings
74+
params.vdencCmd2Par149 = 3;
75+
params.vdencCmd2Par138 = 3;
76+
params.vdencCmd2Par150 = 3;
77+
params.vdencCmd2Par153 = 4;
78+
params.vdencCmd2Par139 = 3;
79+
params.vdencCmd2Par147 = 1;
80+
}
81+
else
82+
{
83+
// Non-key frame vdencCmd2Par settings
84+
params.vdencCmd2Par153 = 0;
85+
}
86+
87+
// All frames vdencCmd2Par settings
88+
params.vdencCmd2Par146 = 1;
89+
params.vdencCmd2Par100 = 3;
90+
}
91+
6692
if (m_IBCEnabledForCurrentTile)
6793
{
6894
if ((m_basicFeature->m_targetUsage == 2 || m_basicFeature->m_targetUsage == 1) && (params.vdencCmd2Par135[1] == vdencCmd2Par135Value1))
@@ -88,7 +114,29 @@ namespace encode
88114

89115
if ((m_basicFeature->m_targetUsage == 7 || m_basicFeature->m_targetUsage == 6) && (m_enablePalette || m_enableIBC))
90116
{
91-
data[54] &= 0xfffffff1;
117+
data[54] &= 0xffffffE3;
118+
}
119+
120+
// Palette ON + IBC OFF tuning for TU6/TU7 using data array bit manipulation
121+
if (m_enablePalette && !m_enableIBC && (m_basicFeature->m_targetUsage == 6 || m_basicFeature->m_targetUsage == 7))
122+
{
123+
const auto frame_type = static_cast<Av1FrameType>(m_basicFeature->m_av1PicParams->PicFlags.fields.frame_type);
124+
125+
if (AV1_KEY_OR_INRA_FRAME(frame_type))
126+
{
127+
// Key frame vdencCmd2Par settings in DW62 and DW63
128+
data[62] = (data[62] & 0xF00F000F) | 0x03403330;
129+
data[63] = (data[63] & 0xF3FFFFFF) | 0x04000000;
130+
}
131+
else
132+
{
133+
// Non-key frame vdencCmd2Par settings in DW62
134+
data[62] = (data[62] & 0xFF0FFFFF);
135+
}
136+
137+
// All frames vdencCmd2Par settings in DW63 and DW54
138+
data[63] = (data[63] & 0xCFFFFFFF) | 0x10000000;
139+
data[54] = (data[54] & 0xFFFFFFE3) | 0xC;
92140
}
93141

94142
if (m_IBCEnabledForCurrentTile)

0 commit comments

Comments
 (0)