diff --git a/DeviceId.cpp b/DeviceId.cpp index 330db63..730b502 100644 --- a/DeviceId.cpp +++ b/DeviceId.cpp @@ -1,161 +1,168 @@ -//////////////////////////////////////////////////////////////////////////////// -// Copyright 2017-2018 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -//////////////////////////////////////////////////////////////////////////////// - -#include -#include "DeviceId.h" - - -namespace GPUDetect -{ - - char const* GetIntelGPUArchitectureString( INTEL_GPU_ARCHITECTURE arch ) - { - switch( arch ) - { - case IGFX_SANDYBRIDGE: return "Sandy Bridge"; - case IGFX_IVYBRIDGE: return "Ivy Bridge"; - case IGFX_HASWELL: return "Haswell"; - case IGFX_VALLEYVIEW: return "ValleyView"; - case IGFX_BROADWELL: return "Broadwell"; - case IGFX_CHERRYVIEW: return "Cherryview"; - case IGFX_SKYLAKE: return "Skylake"; - case IGFX_KABYLAKE: return "Kabylake"; - case IGFX_COFFEELAKE: return "Coffeelake"; - case IGFX_WILLOWVIEW: return "Willowview"; - case IGFX_BROXTON: return "Broxton"; - case IGFX_GEMINILAKE: return "Geminilake"; - - case IGFX_CANNONLAKE: return "Cannonlake"; - - case IGFX_ICELAKE: return "Icelake"; - case IGFX_ICELAKE_LP: return "Icelake LP"; - case IGFX_LAKEFIELD: return "Lakefield"; - - case IGFX_TIGERLAKE_LP: return "Tigerlake LP"; - - case IGFX_ROCKETLAKE: return "Rocketlake"; - - case IGFX_DG1: return "DG1"; - - case IGFX_ADL: return "Alderlake"; - - case DGFX_ACM: return "Alchemist"; - - // Architectures with no unique enum value, but that still can be determined from DeviceID - case IGFX_WHISKEYLAKE: return "Whiskeylake"; - case IGFX_COMETLAKE: return "Cometlake"; - - case IGFX_UNKNOWN: - case IGFX_MAX_PRODUCT: - default: - assert(false); - return "Unknown"; - } - } - - INTEL_GPU_ARCHITECTURE GetIntelGPUArchitecture( unsigned int deviceId ) - { - const unsigned int idhi = deviceId & 0xFF00; - const unsigned int idlo = deviceId & 0x00FF; - - if( idhi == 0x0100 ) - { - if( ( idlo & 0xFFF0 ) == 0x0050 || ( idlo & 0xFFF0 ) == 0x0060 ) - { - return IGFX_IVYBRIDGE; - } - return IGFX_SANDYBRIDGE; - } - - if( idhi == 0x0400 || idhi == 0x0A00 || idhi == 0x0D00 || idhi == 0x0C00 ) - { - return IGFX_HASWELL; - } - - if( idhi == 0x1600 || idhi == 0x0B00 ) - { - return IGFX_BROADWELL; - } - - if( idhi == 0x1900 || idhi == 0x0900 ) - { - return IGFX_SKYLAKE; - } - - if( idhi == 0x5900 ) - { - return IGFX_KABYLAKE; - } - - if( idhi == 0x3100 ) - { - return IGFX_GEMINILAKE; - } - - if( idhi == 0x5A00 ) - { - return IGFX_CANNONLAKE; - } - - if( idhi == 0x3E00 ) - { - if( idlo == 0x00A0 || idlo == 0x00A1 ) - { - return IGFX_WHISKEYLAKE; - } - return IGFX_COFFEELAKE; - } - - if ( idhi == 0x8A00 ) - { - return IGFX_ICELAKE_LP; - } - - if( idhi == 0x9A00 ) - { - return IGFX_TIGERLAKE_LP; - } - - if( idhi == 0x4900 ) - { - return IGFX_DG1; - } - - if (idhi == 0x4C00) - { - return IGFX_ROCKETLAKE; - } - - if (idhi == 0x9B00) - { - return IGFX_COMETLAKE; - } - - if (idhi == 0x4600) - { - return IGFX_ADL; - } - - if (idhi == 0x5600) - { - return DGFX_ACM; - } - - assert(false); - return IGFX_UNKNOWN; - } - -} +//////////////////////////////////////////////////////////////////////////////// +// Copyright 2017-2018 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//////////////////////////////////////////////////////////////////////////////// + +#include +#include "DeviceId.h" + + +namespace GPUDetect +{ + + char const* GetIntelGPUArchitectureString( INTEL_GPU_ARCHITECTURE arch ) + { + switch( arch ) + { + case IGFX_SANDYBRIDGE: return "Sandy Bridge"; + case IGFX_IVYBRIDGE: return "Ivy Bridge"; + case IGFX_HASWELL: return "Haswell"; + case IGFX_VALLEYVIEW: return "ValleyView"; + case IGFX_BROADWELL: return "Broadwell"; + case IGFX_CHERRYVIEW: return "Cherryview"; + case IGFX_SKYLAKE: return "Skylake"; + case IGFX_KABYLAKE: return "Kabylake"; + case IGFX_COFFEELAKE: return "Coffeelake"; + case IGFX_WILLOWVIEW: return "Willowview"; + case IGFX_BROXTON: return "Broxton"; + case IGFX_GEMINILAKE: return "Geminilake"; + + case IGFX_CANNONLAKE: return "Cannonlake"; + + case IGFX_ICELAKE: return "Icelake"; + case IGFX_ICELAKE_LP: return "Icelake LP"; + case IGFX_LAKEFIELD: return "Lakefield"; + + case IGFX_TIGERLAKE_LP: return "Tigerlake LP"; + + case IGFX_ROCKETLAKE: return "Rocketlake"; + + case IGFX_DG1: return "DG1"; + + case IGFX_ADL: return "Alderlake"; + + case DGFX_ACM: return "Alchemist"; + + case IGFX_RAPTORLAKE: return "Raptorlake"; + + // Architectures with no unique enum value, but that still can be determined from DeviceID + case IGFX_WHISKEYLAKE: return "Whiskeylake"; + case IGFX_COMETLAKE: return "Cometlake"; + + case IGFX_UNKNOWN: + case IGFX_MAX_PRODUCT: + default: + assert(false); + return "Unknown"; + } + } + + INTEL_GPU_ARCHITECTURE GetIntelGPUArchitecture( unsigned int deviceId ) + { + const unsigned int idhi = deviceId & 0xFF00; + const unsigned int idlo = deviceId & 0x00FF; + + if( idhi == 0x0100 ) + { + if( ( idlo & 0xFFF0 ) == 0x0050 || ( idlo & 0xFFF0 ) == 0x0060 ) + { + return IGFX_IVYBRIDGE; + } + return IGFX_SANDYBRIDGE; + } + + if( idhi == 0x0400 || idhi == 0x0A00 || idhi == 0x0D00 || idhi == 0x0C00 ) + { + return IGFX_HASWELL; + } + + if( idhi == 0x1600 || idhi == 0x0B00 ) + { + return IGFX_BROADWELL; + } + + if( idhi == 0x1900 || idhi == 0x0900 ) + { + return IGFX_SKYLAKE; + } + + if( idhi == 0x5900 ) + { + return IGFX_KABYLAKE; + } + + if( idhi == 0x3100 ) + { + return IGFX_GEMINILAKE; + } + + if( idhi == 0x5A00 ) + { + return IGFX_CANNONLAKE; + } + + if( idhi == 0x3E00 ) + { + if( idlo == 0x00A0 || idlo == 0x00A1 ) + { + return IGFX_WHISKEYLAKE; + } + return IGFX_COFFEELAKE; + } + + if ( idhi == 0x8A00 ) + { + return IGFX_ICELAKE_LP; + } + + if( idhi == 0x9A00 ) + { + return IGFX_TIGERLAKE_LP; + } + + if( idhi == 0x4900 ) + { + return IGFX_DG1; + } + + if (idhi == 0x4C00) + { + return IGFX_ROCKETLAKE; + } + + if (idhi == 0x9B00) + { + return IGFX_COMETLAKE; + } + + if (idhi == 0x4600) + { + return IGFX_ADL; + } + + if (idhi == 0x5600) + { + return DGFX_ACM; + } + + if (idhi == 0xA700) + { + return IGFX_RAPTORLAKE; + } + + assert(false); + return IGFX_UNKNOWN; + } + +} diff --git a/DeviceId.h b/DeviceId.h index 944de95..ebd7a74 100644 --- a/DeviceId.h +++ b/DeviceId.h @@ -1,87 +1,89 @@ -///////////////////////////////////////////////////////////////////////////////////////////// -// Copyright 2017-2018 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -///////////////////////////////////////////////////////////////////////////////////////////// - - -#pragma once - - -namespace GPUDetect -{ - enum INTEL_GPU_ARCHITECTURE - { - IGFX_UNKNOWN = 0x00, - - IGFX_SANDYBRIDGE = 0x0c, - IGFX_IVYBRIDGE, - IGFX_HASWELL, - IGFX_VALLEYVIEW, - IGFX_BROADWELL, - IGFX_CHERRYVIEW, - IGFX_SKYLAKE, - IGFX_KABYLAKE, - IGFX_COFFEELAKE, - IGFX_WILLOWVIEW, - IGFX_BROXTON, - IGFX_GEMINILAKE, - - IGFX_CANNONLAKE = 0x1a, - - IGFX_ICELAKE = 0x1c, - IGFX_ICELAKE_LP, - - IGFX_LAKEFIELD = 0x1e, - - IGFX_TIGERLAKE_LP = 0x21, - - IGFX_ROCKETLAKE = 0x23, - - IGFX_ADL = 0x24, - IGFX_ADL_LP = 0X25, - - // Alchemist - DGFX_ACM = 1270, - - IGFX_DG1 = 0x4ba, - - IGFX_MAX_PRODUCT, - - // Architectures with no enum value - IGFX_WHISKEYLAKE, - IGFX_COMETLAKE, - - }; - - /******************************************************************************* - * getIntelGPUArchitecture - * - * Returns the architecture of an Intel GPU by parsing the device id. It - * assumes that it is indeed an Intel GPU device ID (i.e., that VendorID - * was INTEL_VENDOR_ID). - * - * You cannot generally compare device IDs to compare architectures; for - * example, a newer architecture may have an lower deviceID. - * - ******************************************************************************/ - INTEL_GPU_ARCHITECTURE GetIntelGPUArchitecture(unsigned int deviceId); - - /******************************************************************************* - * getIntelGPUArchitectureString - * - * Convert A INTEL_GPU_ARCHITECTURE to a string. - * - ******************************************************************************/ - char const* GetIntelGPUArchitectureString(INTEL_GPU_ARCHITECTURE arch); -} +///////////////////////////////////////////////////////////////////////////////////////////// +// Copyright 2017-2018 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +///////////////////////////////////////////////////////////////////////////////////////////// + + +#pragma once + + +namespace GPUDetect +{ + enum INTEL_GPU_ARCHITECTURE + { + IGFX_UNKNOWN = 0x00, + + IGFX_SANDYBRIDGE = 0x0c, + IGFX_IVYBRIDGE, + IGFX_HASWELL, + IGFX_VALLEYVIEW, + IGFX_BROADWELL, + IGFX_CHERRYVIEW, + IGFX_SKYLAKE, + IGFX_KABYLAKE, + IGFX_COFFEELAKE, + IGFX_WILLOWVIEW, + IGFX_BROXTON, + IGFX_GEMINILAKE, + + IGFX_CANNONLAKE = 0x1a, + + IGFX_ICELAKE = 0x1c, + IGFX_ICELAKE_LP, + + IGFX_LAKEFIELD = 0x1e, + + IGFX_TIGERLAKE_LP = 0x21, + + IGFX_ROCKETLAKE = 0x23, + + IGFX_ADL = 0x24, + IGFX_ADL_LP = 0X25, + + // Alchemist + DGFX_ACM = 1270, + + IGFX_DG1 = 0x4ba, + + IGFX_RAPTORLAKE = 0x4bb, + + IGFX_MAX_PRODUCT, + + // Architectures with no enum value + IGFX_WHISKEYLAKE, + IGFX_COMETLAKE, + + }; + + /******************************************************************************* + * getIntelGPUArchitecture + * + * Returns the architecture of an Intel GPU by parsing the device id. It + * assumes that it is indeed an Intel GPU device ID (i.e., that VendorID + * was INTEL_VENDOR_ID). + * + * You cannot generally compare device IDs to compare architectures; for + * example, a newer architecture may have an lower deviceID. + * + ******************************************************************************/ + INTEL_GPU_ARCHITECTURE GetIntelGPUArchitecture(unsigned int deviceId); + + /******************************************************************************* + * getIntelGPUArchitectureString + * + * Convert A INTEL_GPU_ARCHITECTURE to a string. + * + ******************************************************************************/ + char const* GetIntelGPUArchitectureString(INTEL_GPU_ARCHITECTURE arch); +} diff --git a/VirtualMachine.cpp b/VirtualMachine.cpp new file mode 100644 index 0000000..ef10253 --- /dev/null +++ b/VirtualMachine.cpp @@ -0,0 +1,15 @@ +#include "VirtualMachine.h" +#include + +void VirtualMachine::start() { + std::cout << "Virtual Machine started." << std::endl; +} + +void VirtualMachine::stop() { + std::cout << "Virtual Machine stopped." << std::endl; +} + +void VirtualMachine::restart() { + stop(); + start(); +} diff --git a/VirtualMachine.h b/VirtualMachine.h new file mode 100644 index 0000000..d383270 --- /dev/null +++ b/VirtualMachine.h @@ -0,0 +1,11 @@ +#ifndef VIRTUALMACHINE_H +#define VIRTUALMACHINE_H + +class VirtualMachine { +public: + void start(); + void stop(); + void restart(); +}; + +#endif // VIRTUALMACHINE_H diff --git a/WasmServer.cpp b/WasmServer.cpp new file mode 100644 index 0000000..9a249f5 --- /dev/null +++ b/WasmServer.cpp @@ -0,0 +1,15 @@ +#include "WasmServer.h" +#include + +void WasmServer::start() { + std::cout << "Wasm Server started." << std::endl; +} + +void WasmServer::stop() { + std::cout << "Wasm Server stopped." << std::endl; +} + +void WasmServer::restart() { + stop(); + start(); +} diff --git a/WasmServer.h b/WasmServer.h new file mode 100644 index 0000000..8bd15a3 --- /dev/null +++ b/WasmServer.h @@ -0,0 +1,11 @@ +#ifndef WASMSERVER_H +#define WASMSERVER_H + +class WasmServer { +public: + void start(); + void stop(); + void restart(); +}; + +#endif // WASMSERVER_H diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..93c5a5f --- /dev/null +++ b/main.cpp @@ -0,0 +1,16 @@ +#include "VirtualMachine.h" +#include "WasmServer.h" + +int main() { + VirtualMachine vm; + vm.start(); + vm.stop(); + vm.restart(); + + WasmServer ws; + ws.start(); + ws.stop(); + ws.restart(); + + return 0; +}