We are using an Intel Atom E3815 and trying to get Intel Media SDK based H264 acceleration working. This processor has an HD Graphics GPU, so it's my belief the media SDK should work well.
Our target platform is Linux, hence we purchased the latest Intel Media SDK for Servers. Unfortunately it appears that these processors are not yet supported. The main problem is that the library appears to be built assuming support for AVX instructions, which are not supported by this CPU. Here is what happens:
$ gdb --quiet --args mediasdk/samples/__cmake/intel64.make.release/__bin/release/sample_decode_drm h264 -i 720p_stockholm.264 -o output.yuv -hw Reading symbols from mediasdk/samples/__cmake/intel64.make.release/__bin/release/sample_decode_drm...(no debugging symbols found)...done. (gdb) r Starting program: /home/starleaf/mediasdk/samples/__cmake/intel64.make.release/__bin/release/sample_decode_drm h264 -i 720p_stockholm.264 -o output.yuv -hw [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Program received signal SIGILL, Illegal instruction. 0x00007ffff5fbec47 in ?? () from /opt/intel/mediasdk/lib64/8086/0f31/libmfxhw64-p.so.1.8 (gdb) bt #0 0x00007ffff5fbec47 in ?? () from /opt/intel/mediasdk/lib64/8086/0f31/libmfxhw64-p.so.1.8 #1 0x00007ffff5bfdb63 in ?? () from /opt/intel/mediasdk/lib64/8086/0f31/libmfxhw64-p.so.1.8 #2 0x00007ffff5ad41f9 in ?? () from /opt/intel/mediasdk/lib64/8086/0f31/libmfxhw64-p.so.1.8 #3 0x00007ffff7dea13a in call_init (l=<optimised out>, argc=argc@entry=7, argv=argv@entry=0x7fffffffe5e8, env=env@entry=0x7fffffffe628) at dl-init.c:78 #4 0x00007ffff7dea223 in call_init (env=<optimised out>, argv=<optimised out>, argc=<optimised out>, l=<optimised out>) at dl-init.c:36 #5 _dl_init (main_map=main_map@entry=0x629440, argc=7, argv=0x7fffffffe5e8, env=0x7fffffffe628) at dl-init.c:126 #6 0x00007ffff7deec70 in dl_open_worker (a=a@entry=0x7fffffffcd78) at dl-open.c:577 #7 0x00007ffff7de9ff4 in _dl_catch_error (objname=objname@entry=0x7fffffffcd68, errstring=errstring@entry=0x7fffffffcd70, mallocedp=mallocedp@entry=0x7fffffffcd60, operate=operate@entry=0x7ffff7dee9a0 <dl_open_worker>, args=args@entry=0x7fffffffcd78) at dl-error.c:187 #8 0x00007ffff7dee3bb in _dl_open (file=0x7fffffffd1e0 "/opt/intel/mediasdk/lib64/8086/0f31/libmfxhw64-p.so.1.8", mode=-2147483647, caller_dlopen=<optimised out>, nsid=-2, argc=7, argv=0x7fffffffe5e8, env=0x7fffffffe628) at dl-open.c:661 #9 0x00007ffff7bd702b in dlopen_doit (a=a@entry=0x7fffffffcf90) at dlopen.c:66 #10 0x00007ffff7de9ff4 in _dl_catch_error (objname=0x631720, errstring=0x631728, mallocedp=0x631718, operate=0x7ffff7bd6fd0 <dlopen_doit>, args=0x7fffffffcf90) at dl-error.c:187 #11 0x00007ffff7bd762d in _dlerror_run (operate=operate@entry=0x7ffff7bd6fd0 <dlopen_doit>, args=args@entry=0x7fffffffcf90) at dlerror.c:163 #12 0x00007ffff7bd70c1 in __dlopen (file=<optimised out>, mode=<optimised out>) at dlopen.c:87 #13 0x000000000041bf88 in MFX_DISP_HANDLE::LoadSelectedDLL(char const*, eMfxImplType, int, int) () #14 0x000000000041b738 in MFXInit () #15 0x000000000040f746 in CDecodingPipeline::Init(sInputParams*) () #16 0x000000000040cff4 in main () (gdb) x/i 0x00007ffff5fbec47 => 0x7ffff5fbec47: vmovdqu 0x3212f1(%rip),%xmm0 # 0x7ffff62dff40
We can see there we get a SIGILL (illegral instruction) when trying to run one of the sample programs.
In addition, the supported platform (Ubuntu 12.04) for the Media SDK appears to not support this platform well - we got graphical problems with the normal Xorg driver. So we have tested on a newer distribution with the latest kernel too, which results in Xorg working well, but we still have the problem shown here of course: we can't use the mfx library.
Would you be able to tell us:
The "Intel® Media SDK 2013 for Servers" product is "For Intel Xeon® processor E3-1200 v3 product family and 4th Generation Intel Core™ Processor-based Platforms with Intel Iris™ Pro and Intel HD Graphics".