summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRodeo <[email protected]>2013-12-27 20:49:39 +0000
committerRodeo <[email protected]>2013-12-27 20:49:39 +0000
commite087032ff8edb0441eafc225ae860503ce12f3d4 (patch)
treecf550b8e074d46aff5a235daf6c8c825660b21ca
parent840cb1e3448867a3d56bafc980dce39189d4814f (diff)
ports: detect more Intel microarchitecture families.
Also disable QSV hardware support on Bonnell-based microprocessors. Some Cloverview processors apparently support media SDK with third-party hardware, and until we can access hardware to test and fix the crashes we have on that platform, let's not enable it. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@5942 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r--libhb/ports.c16
-rw-r--r--libhb/ports.h2
-rw-r--r--libhb/qsv_common.c13
3 files changed, 27 insertions, 4 deletions
diff --git a/libhb/ports.c b/libhb/ports.c
index e5c9fe7e2..5b69f16d1 100644
--- a/libhb/ports.c
+++ b/libhb/ports.c
@@ -247,10 +247,14 @@ const char* hb_get_cpu_platform_name()
{
// Intel 64 and IA-32 Architectures Software Developer's Manual, Vol. 3C
// Table 35-1: CPUID Signature Values of DisplayFamily_DisplayModel
+ case HB_CPU_PLATFORM_INTEL_BNL:
+ return "Intel microarchitecture Bonnell";
case HB_CPU_PLATFORM_INTEL_SNB:
return "Intel microarchitecture Sandy Bridge";
case HB_CPU_PLATFORM_INTEL_IVB:
return "Intel microarchitecture Ivy Bridge";
+ case HB_CPU_PLATFORM_INTEL_SLM:
+ return "Intel microarchitecture Silvermont";
case HB_CPU_PLATFORM_INTEL_HSW:
return "Intel microarchitecture Haswell";
@@ -281,6 +285,13 @@ static void init_cpu_info()
{
switch (model)
{
+ case 0x1C:
+ case 0x26:
+ case 0x27:
+ case 0x35:
+ case 0x36:
+ hb_cpu_info.platform = HB_CPU_PLATFORM_INTEL_BNL;
+ break;
case 0x2A:
case 0x2D:
hb_cpu_info.platform = HB_CPU_PLATFORM_INTEL_SNB;
@@ -289,6 +300,11 @@ static void init_cpu_info()
case 0x3E:
hb_cpu_info.platform = HB_CPU_PLATFORM_INTEL_IVB;
break;
+ case 0x37:
+ case 0x4A:
+ case 0x4D:
+ hb_cpu_info.platform = HB_CPU_PLATFORM_INTEL_SLM;
+ break;
case 0x3C:
case 0x45:
case 0x46:
diff --git a/libhb/ports.h b/libhb/ports.h
index 5021a5176..bcc898865 100644
--- a/libhb/ports.h
+++ b/libhb/ports.h
@@ -23,8 +23,10 @@ enum hb_cpu_platform
{
// list of microarchitecture codenames
HB_CPU_PLATFORM_UNSPECIFIED = 0,
+ HB_CPU_PLATFORM_INTEL_BNL,
HB_CPU_PLATFORM_INTEL_SNB,
HB_CPU_PLATFORM_INTEL_IVB,
+ HB_CPU_PLATFORM_INTEL_SLM,
HB_CPU_PLATFORM_INTEL_HSW,
};
int hb_get_cpu_count();
diff --git a/libhb/qsv_common.c b/libhb/qsv_common.c
index 9465a972e..3dcaa25ed 100644
--- a/libhb/qsv_common.c
+++ b/libhb/qsv_common.c
@@ -77,10 +77,15 @@ int hb_qsv_info_init()
if (MFXInit(MFX_IMPL_HARDWARE_ANY|MFX_IMPL_VIA_ANY,
&qsv_minimum_version, &session) == MFX_ERR_NONE)
{
- qsv_hardware_available = 1;
- preferred_implementation = MFX_IMPL_HARDWARE_ANY|MFX_IMPL_VIA_ANY;
- // our minimum is supported, but query the actual version
- MFXQueryVersion(session, &qsv_hardware_version);
+ // Cloverview (Bonnell microarchitecture) supports MSDK via third-party
+ // hardware - we don't support this configuration for the time being
+ if (hb_get_cpu_platform() != HB_CPU_PLATFORM_INTEL_BNL)
+ {
+ qsv_hardware_available = 1;
+ preferred_implementation = MFX_IMPL_HARDWARE_ANY|MFX_IMPL_VIA_ANY;
+ // our minimum is supported, but query the actual version
+ MFXQueryVersion(session, &qsv_hardware_version);
+ }
MFXClose(session);
}