blob: 395718f072ddcb419f0cf1d4cd5f509458f80006 [file] [log] [blame]
From 4485349d8f056ccc3ebde978082c056c4666f014 Mon Sep 17 00:00:00 2001
From: Ed Baker <edward.baker@intel.com>
Date: Fri, 10 Dec 2021 10:48:54 -0700
Subject: [PATCH] [Encode] GLK enable VP8
Enable VP8 encode for Gemini Lake. Interface code was inherited from
KBL paths. Resolves #1313.
---
media_driver/linux/gen9/ddi/media_sku_wa_g9.cpp | 5 +++++
.../media_interfaces_g9_glk.cpp | 17 +++++++++++++++++
.../media_interfaces_g9_glk.h | 6 ++++++
3 files changed, 28 insertions(+)
diff --git a/media_driver/linux/gen9/ddi/media_sku_wa_g9.cpp b/media_driver/linux/gen9/ddi/media_sku_wa_g9.cpp
index cc6ec1961..9f4fa2f3c 100755
--- a/media_driver/linux/gen9/ddi/media_sku_wa_g9.cpp
+++ b/media_driver/linux/gen9/ddi/media_sku_wa_g9.cpp
@@ -103,6 +103,8 @@ static struct LinuxCodecInfo glkCodecInfo =
.hevc10Decoding = 1,
.vp9b10Decoding = 1,
.hevc10Encoding = SET_STATUS_BY_FULL_OPEN_SOURCE(1, 0),
+ .hevc12Encoding = 0,
+ .vp8Encoding = SET_STATUS_BY_FULL_OPEN_SOURCE(1, 0),
};
static bool InitSklMediaSku(struct GfxDeviceInfo *devInfo,
@@ -482,6 +484,9 @@ static bool InitGlkMediaSku(struct GfxDeviceInfo *devInfo,
MEDIA_WR_SKU(skuTable, FtrIntelVP9VLDProfile0Decoding8bit420, codecInfo->vp9Decoding);
MEDIA_WR_SKU(skuTable, FtrVP9VLD10bProfile2Decoding, codecInfo->vp9b10Decoding);
MEDIA_WR_SKU(skuTable, FtrIntelVP9VLDProfile2Decoding10bit420, codecInfo->vp9b10Decoding);
+
+ /* VP8 enc */
+ MEDIA_WR_SKU(skuTable, FtrEncodeVP8, codecInfo->vp8Encoding);
}
MEDIA_WR_SKU(skuTable, FtrEnableMediaKernels, drvInfo->hasHuc);
diff --git a/media_driver/media_interface/media_interfaces_m9_glk/media_interfaces_g9_glk.cpp b/media_driver/media_interface/media_interfaces_m9_glk/media_interfaces_g9_glk.cpp
index 9f388122d..414afc63c 100644
--- a/media_driver/media_interface/media_interfaces_m9_glk/media_interfaces_g9_glk.cpp
+++ b/media_driver/media_interface/media_interfaces_m9_glk/media_interfaces_g9_glk.cpp
@@ -317,6 +317,23 @@ MOS_STATUS CodechalInterfacesG9Glk::Initialize(
}
}
else
+#endif
+#ifdef _VP8_ENCODE_SUPPORTED
+ if (info->Mode == CODECHAL_ENCODE_MODE_VP8)
+ {
+ // Setup encode interface functions
+ encoder = MOS_New(Encode::Vp8, hwInterface, debugInterface, info);
+ if (encoder == nullptr)
+ {
+ CODECHAL_PUBLIC_ASSERTMESSAGE("VP8 Encode allocation failed!");
+ return MOS_STATUS_INVALID_PARAMETER;
+ }
+ else
+ {
+ m_codechalDevice = encoder;
+ }
+ }
+ else
#endif
{
CODECHAL_PUBLIC_ASSERTMESSAGE("Unsupported encode function requested.");
diff --git a/media_driver/media_interface/media_interfaces_m9_glk/media_interfaces_g9_glk.h b/media_driver/media_interface/media_interfaces_m9_glk/media_interfaces_g9_glk.h
index 2ffdb21bc..46b2f4032 100644
--- a/media_driver/media_interface/media_interfaces_m9_glk/media_interfaces_g9_glk.h
+++ b/media_driver/media_interface/media_interfaces_m9_glk/media_interfaces_g9_glk.h
@@ -41,6 +41,9 @@
#ifdef _AVC_ENCODE_VDENC_SUPPORTED
#include "codechal_vdenc_avc_g9_kbl.h"
#endif
+#ifdef _VP8_ENCODE_SUPPORTED
+#include "codechal_encode_vp8_g9.h"
+#endif
#include "codechal_decode_nv12top010_g9_glk.h"
#include "cm_hal_g9.h"
#include "vphal_g9_glk.h"
@@ -86,6 +89,9 @@ public:
#ifdef _AVC_ENCODE_VDENC_SUPPORTED
using AvcVdenc = CodechalVdencAvcStateG9Kbl;
#endif
+#ifdef _VP8_ENCODE_SUPPORTED
+ using Vp8 = CodechalEncodeVp8G9;
+#endif
};
class CodechalInterfacesG9Glk : public CodechalDevice
--
2.25.1