@@ -16,26 +16,36 @@ namespace IGC {
1616// Helpers for clarity
1717// Basically, these forward GetX/SetX from interface (of given version)
1818// to GT_SYSTEM_INFO inside pImpl
19- // Prefix is used because members in platform are in hungarian notation
20- #define DEFINE_GET_SET_PREFIX (INTERFACE, VERSION, NAME, TYPE, PREFIX )\
19+ //
20+ // DEFINE_GET_SET as defined in igc_features_and_workarounds_impl.cpp cannot
21+ // handle complex objects.
22+ #define DEFINE_GET_SET_COMPLEX (INTERFACE, VERSION, NAME, TYPE, SOURCE )\
2123 TYPE CIF_GET_INTERFACE_CLASS (INTERFACE, VERSION)::Get##NAME() const {\
22- return static_cast <TYPE>(CIF_GET_PIMPL ()->p .PREFIX ##NAME );\
24+ return static_cast <TYPE>(CIF_GET_PIMPL ()->p .SOURCE );\
2325 }\
2426 void CIF_GET_INTERFACE_CLASS (INTERFACE, VERSION)::Set##NAME(TYPE v) {\
25- CIF_GET_PIMPL ()->p .PREFIX ##NAME = static_cast <decltype (CIF_GET_PIMPL ()->p .PREFIX ##NAME )>(v);\
27+ CIF_GET_PIMPL ()->p .SOURCE = static_cast <decltype (CIF_GET_PIMPL ()->p .SOURCE )>(v);\
2628 }
2729
28- DEFINE_GET_SET_PREFIX (Platform, 1 , ProductFamily, TypeErasedEnum, e);
29- DEFINE_GET_SET_PREFIX (Platform, 1 , PCHProductFamily, TypeErasedEnum, e);
30- DEFINE_GET_SET_PREFIX (Platform, 1 , DisplayCoreFamily, TypeErasedEnum, e);
31- DEFINE_GET_SET_PREFIX (Platform, 1 , RenderCoreFamily, TypeErasedEnum, e);
32- DEFINE_GET_SET_PREFIX (Platform, 1 , PlatformType, TypeErasedEnum, e);
33- DEFINE_GET_SET_PREFIX (Platform, 1 , DeviceID, unsigned short , us);
34- DEFINE_GET_SET_PREFIX (Platform, 1 , RevId, unsigned short , us);
35- DEFINE_GET_SET_PREFIX (Platform, 1 , DeviceID_PCH, unsigned short , us);
36- DEFINE_GET_SET_PREFIX (Platform, 1 , RevId_PCH, unsigned short , us);
37- DEFINE_GET_SET_PREFIX (Platform, 1 , GTType, TypeErasedEnum, e);
38-
30+ // Interface version 1.
31+ DEFINE_GET_SET_COMPLEX (Platform, 1 , ProductFamily, TypeErasedEnum, eProductFamily);
32+ DEFINE_GET_SET_COMPLEX (Platform, 1 , PCHProductFamily, TypeErasedEnum, ePCHProductFamily);
33+ DEFINE_GET_SET_COMPLEX (Platform, 1 , DisplayCoreFamily, TypeErasedEnum, eDisplayCoreFamily);
34+ DEFINE_GET_SET_COMPLEX (Platform, 1 , RenderCoreFamily, TypeErasedEnum, eRenderCoreFamily);
35+ DEFINE_GET_SET_COMPLEX (Platform, 1 , PlatformType, TypeErasedEnum, ePlatformType);
36+ DEFINE_GET_SET_COMPLEX (Platform, 1 , DeviceID, unsigned short , usDeviceID);
37+ DEFINE_GET_SET_COMPLEX (Platform, 1 , RevId, unsigned short , usRevId);
38+ DEFINE_GET_SET_COMPLEX (Platform, 1 , DeviceID_PCH, unsigned short , usDeviceID_PCH);
39+ DEFINE_GET_SET_COMPLEX (Platform, 1 , RevId_PCH, unsigned short , usRevId_PCH);
40+ DEFINE_GET_SET_COMPLEX (Platform, 1 , GTType, TypeErasedEnum, eGTType);
41+
42+ // Interface version 2.
43+ // Added Render/Media/Display block IDs
44+ DEFINE_GET_SET_COMPLEX (Platform, 2 , RenderBlockID, unsigned int , sRenderBlockID .Value);
45+ DEFINE_GET_SET_COMPLEX (Platform, 2 , MediaBlockID, unsigned int , sMediaBlockID .Value);
46+ DEFINE_GET_SET_COMPLEX (Platform, 2 , DisplayBlockID, unsigned int , sDisplayBlockID .Value);
47+
48+ #undef DEFINE_GET_SET_COMPLEX
3949}
4050
4151#include " cif/macros/disable.h"
0 commit comments