Base the driver version on Version.h.

Also always clear the UUIDs first so that shorter strings don't leave
data undefined.

Bug b/116336664

Change-Id: I77d5ae1514db5d68d540614b7c57c4872695ecca
Reviewed-on: https://swiftshader-review.googlesource.com/c/22490
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Corentin Wallez <cwallez@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/Vulkan/Version.h b/src/Vulkan/Version.h
index 002d880..c97fb24 100644
--- a/src/Vulkan/Version.h
+++ b/src/Vulkan/Version.h
@@ -14,11 +14,11 @@
 
 #define MAJOR_VERSION 5
 #define MINOR_VERSION 0
-#define BUILD_VERSION 0
+#define PATCH_VERSION 0
 #define BUILD_REVISION 1
 
 #define STRINGIFY(x) #x
 #define MACRO_STRINGIFY(x) STRINGIFY(x)
 
 #define REVISION_STRING MACRO_STRINGIFY(BUILD_REVISION)
-#define VERSION_STRING MACRO_STRINGIFY(MAJOR_VERSION) "." MACRO_STRINGIFY(MINOR_VERSION) "." MACRO_STRINGIFY(BUILD_VERSION) "." MACRO_STRINGIFY(BUILD_REVISION)
+#define VERSION_STRING MACRO_STRINGIFY(MAJOR_VERSION) "." MACRO_STRINGIFY(MINOR_VERSION) "." MACRO_STRINGIFY(PATCH_VERSION)
diff --git a/src/Vulkan/VkCommandBuffer.hpp b/src/Vulkan/VkCommandBuffer.hpp
index f191616..abcf241 100644
--- a/src/Vulkan/VkCommandBuffer.hpp
+++ b/src/Vulkan/VkCommandBuffer.hpp
@@ -120,7 +120,7 @@
 		VkBuffer buffer;
 		VkDeviceSize offset;
 	};
-	VertexInputBindings vertexInputBindings[MaxVertexInputBindings];
+	VertexInputBindings vertexInputBindings[MAX_VERTEX_INPUT_BINDINGS];
 };
 
 using DispatchableCommandBuffer = DispatchableObject<CommandBuffer, VkCommandBuffer>;
diff --git a/src/Vulkan/VkConfig.h b/src/Vulkan/VkConfig.h
index f68a688..7646a74 100644
--- a/src/Vulkan/VkConfig.h
+++ b/src/Vulkan/VkConfig.h
@@ -15,17 +15,22 @@
 #ifndef VK_CONFIG_HPP_
 #define VK_CONFIG_HPP_
 
+#include "Version.h"
+
+#include <vulkan/vulkan_core.h>
+
 namespace vk
 {
 
 // Note: Constant array initialization requires a string literal.
 //       constexpr char* or char[] does not work for that purpose.
 #define SWIFTSHADER_DEVICE_NAME "SwiftShader Device" // Max length: VK_MAX_PHYSICAL_DEVICE_NAME_SIZE
-#define SWIFTSHADER_UUID "SwiftShaderUUID" // Max length: VK_UUID_SIZE
+#define SWIFTSHADER_UUID "SwiftShaderUUID" // Max length: VK_UUID_SIZE (16)
 
 enum
 {
-	DRIVER_VERSION = 1,
+	API_VERSION = VK_API_VERSION_1_1,
+	DRIVER_VERSION = VK_MAKE_VERSION(MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION),
 	VENDOR_ID = 0x1AE0, // Google
 	DEVICE_ID = 0xC0DE, // SwiftShader
 };
@@ -45,8 +50,9 @@
 	MAX_IMAGE_ARRAY_LAYERS = 11,
 };
 
-enum {
-	MaxVertexInputBindings = 16,
+enum
+{
+	MAX_VERTEX_INPUT_BINDINGS = 16,
 };
 
 }
diff --git a/src/Vulkan/VkPhysicalDevice.cpp b/src/Vulkan/VkPhysicalDevice.cpp
index 0ee1051..91637d2 100644
--- a/src/Vulkan/VkPhysicalDevice.cpp
+++ b/src/Vulkan/VkPhysicalDevice.cpp
@@ -166,7 +166,7 @@
 		24, // maxDescriptorSetStorageImages
 		4, // maxDescriptorSetInputAttachments
 		16, // maxVertexInputAttributes
-		vk::MaxVertexInputBindings, // maxVertexInputBindings
+		vk::MAX_VERTEX_INPUT_BINDINGS, // maxVertexInputBindings
 		2047, // maxVertexInputAttributeOffset
 		2048, // maxVertexInputBindingStride
 		64, // maxVertexOutputComponents
@@ -247,17 +247,11 @@
 	return limits;
 }
 
-
 const VkPhysicalDeviceProperties& PhysicalDevice::getProperties() const
 {
-	uint32_t apiVersion;
-	VkResult result = vkEnumerateInstanceVersion(&apiVersion);
-	ASSERT(result == VK_SUCCESS);
-	(void)result; // Slence unused variable warning
-
 	static const VkPhysicalDeviceProperties properties
 	{
-		apiVersion,
+		API_VERSION,
 		DRIVER_VERSION,
 		VENDOR_ID,
 		DEVICE_ID,
@@ -273,10 +267,13 @@
 
 void PhysicalDevice::getProperties(VkPhysicalDeviceIDProperties* properties) const
 {
-	memcpy(properties->deviceUUID, SWIFTSHADER_UUID, VK_UUID_SIZE);
-	memset(properties->deviceLUID, 0, VK_LUID_SIZE);
+	memset(properties->deviceUUID, 0, VK_UUID_SIZE);
 	memset(properties->driverUUID, 0, VK_UUID_SIZE);
+	memset(properties->deviceLUID, 0, VK_LUID_SIZE);
+
+	memcpy(properties->deviceUUID, SWIFTSHADER_UUID, VK_UUID_SIZE);
 	*((uint64_t*)properties->driverUUID) = DRIVER_VERSION;
+
 	properties->deviceNodeMask = 0;
 	properties->deviceLUIDValid = VK_FALSE;
 }
diff --git a/src/Vulkan/Vulkan.rc b/src/Vulkan/Vulkan.rc
index 98db1ed..3800c7c 100644
--- a/src/Vulkan/Vulkan.rc
+++ b/src/Vulkan/Vulkan.rc
@@ -54,8 +54,8 @@
 //

 

 VS_VERSION_INFO VERSIONINFO

- FILEVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION

- PRODUCTVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION

+ FILEVERSION MAJOR_VERSION,MINOR_VERSION,PATCH_VERSION,BUILD_REVISION

+ PRODUCTVERSION MAJOR_VERSION,MINOR_VERSION,PATCH_VERSION,BUILD_REVISION

  FILEFLAGSMASK 0x17L

 #ifdef _DEBUG

  FILEFLAGS 0x1L

diff --git a/src/Vulkan/libVulkan.cpp b/src/Vulkan/libVulkan.cpp
index 9e03912..a3abbad 100644
--- a/src/Vulkan/libVulkan.cpp
+++ b/src/Vulkan/libVulkan.cpp
@@ -1376,7 +1376,7 @@
 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceVersion(uint32_t* pApiVersion)
 {
 	TRACE("(uint32_t* pApiVersion = 0x%X)", pApiVersion);
-	*pApiVersion = VK_API_VERSION_1_1;
+	*pApiVersion = vk::API_VERSION;
 	return VK_SUCCESS;
 }