diff --git a/plugins/GSdx/GS.cpp b/plugins/GSdx/GS.cpp index 2e5e763396..cb4d5e8e61 100644 --- a/plugins/GSdx/GS.cpp +++ b/plugins/GSdx/GS.cpp @@ -128,6 +128,7 @@ EXPORT_C_(int) GSinit() // const type qualifier from all the affected variables. theApp.Init(); + GSUtil::Init(); GSBlock::InitVectors(); GSClut::InitVectors(); #ifdef ENABLE_OPENCL diff --git a/plugins/GSdx/GSUtil.cpp b/plugins/GSdx/GSUtil.cpp index df2fddd43f..23f919f44c 100644 --- a/plugins/GSdx/GSUtil.cpp +++ b/plugins/GSdx/GSUtil.cpp @@ -102,7 +102,8 @@ public: uint32 CompatibleBitsField[64][2]; uint32 SharedBitsField[64][2]; - GSUtilMaps() + // Defer init to avoid AVX2 illegal instructions + void Init() { PrimClassField[GS_POINTLIST] = GS_POINT_CLASS; PrimClassField[GS_LINELIST] = GS_LINE_CLASS; @@ -163,6 +164,11 @@ public: } s_maps; +void GSUtil::Init() +{ + s_maps.Init(); +} + GS_PRIM_CLASS GSUtil::GetPrimClass(uint32 prim) { return (GS_PRIM_CLASS)s_maps.PrimClassField[prim]; diff --git a/plugins/GSdx/GSUtil.h b/plugins/GSdx/GSUtil.h index 867e901a78..035d62bc3a 100644 --- a/plugins/GSdx/GSUtil.h +++ b/plugins/GSdx/GSUtil.h @@ -37,6 +37,8 @@ struct OCLDeviceDesc class GSUtil { public: + static void Init(); + static const char* GetLibName(); static GS_PRIM_CLASS GetPrimClass(uint32 prim);