Vulkan: include backend name in deviceName
* Add rr::BackendName() to dynamically return the name of the backend
* Set VkPhysicalDeviceProperties::deviceName to include backend name
Bug: b/130459196
Change-Id: I028f3607e4eda9de55bc4cec8af78e7b4793160d
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/39552
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Tested-by: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Reactor/LLVMReactor.cpp b/src/Reactor/LLVMReactor.cpp
index 7b06cb4..70ada9c 100644
--- a/src/Reactor/LLVMReactor.cpp
+++ b/src/Reactor/LLVMReactor.cpp
@@ -1000,6 +1000,11 @@
namespace rr {
+std::string BackendName()
+{
+ return std::string("LLVM ") + LLVM_VERSION_STRING;
+}
+
const Capabilities Caps = {
true, // CoroutinesSupported
};
diff --git a/src/Reactor/Reactor.hpp b/src/Reactor/Reactor.hpp
index 59b3d0a..95f0700 100644
--- a/src/Reactor/Reactor.hpp
+++ b/src/Reactor/Reactor.hpp
@@ -50,6 +50,8 @@
namespace rr {
+std::string BackendName();
+
struct Capabilities
{
bool CoroutinesSupported; // Support for rr::Coroutine<F>
diff --git a/src/Reactor/SubzeroReactor.cpp b/src/Reactor/SubzeroReactor.cpp
index 2f3e9ee..54dcf93 100644
--- a/src/Reactor/SubzeroReactor.cpp
+++ b/src/Reactor/SubzeroReactor.cpp
@@ -170,6 +170,11 @@
namespace rr {
+std::string BackendName()
+{
+ return "Subzero";
+}
+
const Capabilities Caps = {
false, // CoroutinesSupported
};
diff --git a/src/Vulkan/VkPhysicalDevice.cpp b/src/Vulkan/VkPhysicalDevice.cpp
index 3517cca..2635a57 100644
--- a/src/Vulkan/VkPhysicalDevice.cpp
+++ b/src/Vulkan/VkPhysicalDevice.cpp
@@ -16,6 +16,7 @@
#include "VkConfig.h"
#include "Pipeline/SpirvShader.hpp" // sw::SIMD::Width
+#include "Reactor/Reactor.hpp"
#include <cstring>
#include <limits>
@@ -286,18 +287,27 @@
const VkPhysicalDeviceProperties &PhysicalDevice::getProperties() const
{
- static const VkPhysicalDeviceProperties properties{
- API_VERSION,
- DRIVER_VERSION,
- VENDOR_ID,
- DEVICE_ID,
- VK_PHYSICAL_DEVICE_TYPE_CPU, // deviceType
- SWIFTSHADER_DEVICE_NAME, // deviceName
- SWIFTSHADER_UUID, // pipelineCacheUUID
- getLimits(), // limits
- {} // sparseProperties
+ auto getProperties = [&]() -> VkPhysicalDeviceProperties {
+ VkPhysicalDeviceProperties properties = {
+ API_VERSION,
+ DRIVER_VERSION,
+ VENDOR_ID,
+ DEVICE_ID,
+ VK_PHYSICAL_DEVICE_TYPE_CPU, // deviceType
+ "", // deviceName
+ SWIFTSHADER_UUID, // pipelineCacheUUID
+ getLimits(), // limits
+ {} // sparseProperties
+ };
+
+ // Append Reactor JIT backend name and version
+ snprintf(properties.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE,
+ "%s (%s)", SWIFTSHADER_DEVICE_NAME, rr::BackendName().c_str());
+
+ return properties;
};
+ static const VkPhysicalDeviceProperties properties = getProperties();
return properties;
}
diff --git a/tests/VulkanUnitTests/unittests.cpp b/tests/VulkanUnitTests/unittests.cpp
index e7b954b..4055ce1 100644
--- a/tests/VulkanUnitTests/unittests.cpp
+++ b/tests/VulkanUnitTests/unittests.cpp
@@ -102,7 +102,7 @@
EXPECT_EQ(physicalDeviceProperties.deviceID, 0xC0DEU);
EXPECT_EQ(physicalDeviceProperties.deviceType, VK_PHYSICAL_DEVICE_TYPE_CPU);
- EXPECT_EQ(strncmp(physicalDeviceProperties.deviceName, "SwiftShader Device", VK_MAX_PHYSICAL_DEVICE_NAME_SIZE), 0);
+ EXPECT_NE(strstr(physicalDeviceProperties.deviceName, "SwiftShader Device"), nullptr);
VkPhysicalDeviceProperties2 physicalDeviceProperties2;
VkPhysicalDeviceDriverPropertiesKHR physicalDeviceDriverProperties;