Compare commits
2 Commits
Author | SHA1 | Date |
---|---|---|
Joshua Ashton | 07e22a13d0 | |
Joshua Ashton | 31edccd237 |
|
@ -36,14 +36,13 @@ static VkResult vkd3d_create_pipeline_cache(struct d3d12_device *device,
|
||||||
}
|
}
|
||||||
|
|
||||||
#define VKD3D_CACHE_BLOB_VERSION MAKE_MAGIC('V','K','B',1)
|
#define VKD3D_CACHE_BLOB_VERSION MAKE_MAGIC('V','K','B',1)
|
||||||
#define VKD3D_CACHE_BUILD_SIZE 8
|
|
||||||
|
|
||||||
struct vkd3d_pipeline_blob
|
struct vkd3d_pipeline_blob
|
||||||
{
|
{
|
||||||
uint32_t version;
|
uint32_t version;
|
||||||
uint32_t vendor_id;
|
uint32_t vendor_id;
|
||||||
uint32_t device_id;
|
uint32_t device_id;
|
||||||
char vkd3d_build[VKD3D_CACHE_BUILD_SIZE];
|
char vkd3d_build[VKD3D_BUILD_SIZE];
|
||||||
uint8_t cache_uuid[VK_UUID_SIZE];
|
uint8_t cache_uuid[VK_UUID_SIZE];
|
||||||
uint8_t vk_blob[];
|
uint8_t vk_blob[];
|
||||||
};
|
};
|
||||||
|
@ -71,7 +70,7 @@ HRESULT vkd3d_create_pipeline_cache_from_d3d12_desc(struct d3d12_device *device,
|
||||||
|
|
||||||
/* Check the vkd3d build since the shader compiler itself may change,
|
/* Check the vkd3d build since the shader compiler itself may change,
|
||||||
* and the driver since that will affect the generated pipeline cache */
|
* and the driver since that will affect the generated pipeline cache */
|
||||||
if (strncmp(blob->vkd3d_build, vkd3d_build, VKD3D_CACHE_BUILD_SIZE) ||
|
if (strncmp(blob->vkd3d_build, vkd3d_build, VKD3D_BUILD_SIZE) ||
|
||||||
memcmp(blob->cache_uuid, device_properties->pipelineCacheUUID, VK_UUID_SIZE))
|
memcmp(blob->cache_uuid, device_properties->pipelineCacheUUID, VK_UUID_SIZE))
|
||||||
return D3D12_ERROR_DRIVER_VERSION_MISMATCH;
|
return D3D12_ERROR_DRIVER_VERSION_MISMATCH;
|
||||||
|
|
||||||
|
@ -107,7 +106,8 @@ VkResult vkd3d_serialize_pipeline_state(const struct d3d12_pipeline_state *state
|
||||||
blob->version = VKD3D_CACHE_BLOB_VERSION;
|
blob->version = VKD3D_CACHE_BLOB_VERSION;
|
||||||
blob->vendor_id = device_properties->vendorID;
|
blob->vendor_id = device_properties->vendorID;
|
||||||
blob->device_id = device_properties->deviceID;
|
blob->device_id = device_properties->deviceID;
|
||||||
strncpy(blob->vkd3d_build, vkd3d_build, VKD3D_CACHE_BUILD_SIZE);
|
strncpy(blob->vkd3d_build, vkd3d_build, VKD3D_BUILD_SIZE);
|
||||||
|
blob->vkd3d_build[VKD3D_BUILD_MAX_LENGTH] = '\0';
|
||||||
memcpy(blob->cache_uuid, device_properties->pipelineCacheUUID, VK_UUID_SIZE);
|
memcpy(blob->cache_uuid, device_properties->pipelineCacheUUID, VK_UUID_SIZE);
|
||||||
|
|
||||||
if (state->vk_pso_cache)
|
if (state->vk_pso_cache)
|
||||||
|
@ -182,7 +182,7 @@ struct vkd3d_serialized_pipeline_library
|
||||||
uint32_t vendor_id;
|
uint32_t vendor_id;
|
||||||
uint32_t device_id;
|
uint32_t device_id;
|
||||||
uint32_t pipeline_count;
|
uint32_t pipeline_count;
|
||||||
char vkd3d_build[VKD3D_CACHE_BUILD_SIZE];
|
char vkd3d_build[VKD3D_BUILD_SIZE];
|
||||||
uint8_t cache_uuid[VK_UUID_SIZE];
|
uint8_t cache_uuid[VK_UUID_SIZE];
|
||||||
uint8_t data[];
|
uint8_t data[];
|
||||||
};
|
};
|
||||||
|
@ -551,7 +551,8 @@ static HRESULT STDMETHODCALLTYPE d3d12_pipeline_library_Serialize(d3d12_pipeline
|
||||||
header->vendor_id = device_properties->vendorID;
|
header->vendor_id = device_properties->vendorID;
|
||||||
header->device_id = device_properties->deviceID;
|
header->device_id = device_properties->deviceID;
|
||||||
header->pipeline_count = pipeline_library->map.used_count;
|
header->pipeline_count = pipeline_library->map.used_count;
|
||||||
strncpy(header->vkd3d_build, vkd3d_build, VKD3D_CACHE_BUILD_SIZE);
|
strncpy(header->vkd3d_build, vkd3d_build, VKD3D_BUILD_SIZE);
|
||||||
|
header->vkd3d_build[VKD3D_BUILD_MAX_LENGTH] = '\0';
|
||||||
memcpy(header->cache_uuid, device_properties->pipelineCacheUUID, VK_UUID_SIZE);
|
memcpy(header->cache_uuid, device_properties->pipelineCacheUUID, VK_UUID_SIZE);
|
||||||
|
|
||||||
for (i = 0; i < pipeline_library->map.entry_count; i++)
|
for (i = 0; i < pipeline_library->map.entry_count; i++)
|
||||||
|
@ -643,7 +644,7 @@ static HRESULT d3d12_pipeline_library_read_blob(struct d3d12_pipeline_library *p
|
||||||
if (header->device_id != device_properties->deviceID || header->vendor_id != device_properties->vendorID)
|
if (header->device_id != device_properties->deviceID || header->vendor_id != device_properties->vendorID)
|
||||||
return D3D12_ERROR_ADAPTER_NOT_FOUND;
|
return D3D12_ERROR_ADAPTER_NOT_FOUND;
|
||||||
|
|
||||||
if (strncmp(header->vkd3d_build, vkd3d_build, VKD3D_CACHE_BUILD_SIZE) ||
|
if (strncmp(header->vkd3d_build, vkd3d_build, VKD3D_BUILD_SIZE) ||
|
||||||
memcmp(header->cache_uuid, device_properties->pipelineCacheUUID, VK_UUID_SIZE))
|
memcmp(header->cache_uuid, device_properties->pipelineCacheUUID, VK_UUID_SIZE))
|
||||||
return D3D12_ERROR_DRIVER_VERSION_MISMATCH;
|
return D3D12_ERROR_DRIVER_VERSION_MISMATCH;
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
|
|
||||||
#include "vkd3d.h"
|
#include "vkd3d.h"
|
||||||
#include "vkd3d_shader.h"
|
#include "vkd3d_shader.h"
|
||||||
|
#include "vkd3d_version.h"
|
||||||
#include "vkd3d_threads.h"
|
#include "vkd3d_threads.h"
|
||||||
#include "vkd3d_platform.h"
|
#include "vkd3d_platform.h"
|
||||||
#include "vkd3d_swapchain_factory.h"
|
#include "vkd3d_swapchain_factory.h"
|
||||||
|
@ -2084,8 +2085,6 @@ HRESULT vkd3d_load_vk_instance_procs(struct vkd3d_vk_instance_procs *procs,
|
||||||
HRESULT vkd3d_load_vk_device_procs(struct vkd3d_vk_device_procs *procs,
|
HRESULT vkd3d_load_vk_device_procs(struct vkd3d_vk_device_procs *procs,
|
||||||
const struct vkd3d_vk_instance_procs *parent_procs, VkDevice device) DECLSPEC_HIDDEN;
|
const struct vkd3d_vk_instance_procs *parent_procs, VkDevice device) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
extern const char vkd3d_build[];
|
|
||||||
|
|
||||||
VkResult vkd3d_set_vk_object_name_utf8(struct d3d12_device *device, uint64_t vk_object,
|
VkResult vkd3d_set_vk_object_name_utf8(struct d3d12_device *device, uint64_t vk_object,
|
||||||
VkObjectType vk_object_type, const char *name) DECLSPEC_HIDDEN;
|
VkObjectType vk_object_type, const char *name) DECLSPEC_HIDDEN;
|
||||||
HRESULT vkd3d_set_vk_object_name(struct d3d12_device *device, uint64_t vk_object,
|
HRESULT vkd3d_set_vk_object_name(struct d3d12_device *device, uint64_t vk_object,
|
||||||
|
|
|
@ -93,8 +93,8 @@ endif
|
||||||
|
|
||||||
vkd3d_version = vcs_tag(
|
vkd3d_version = vcs_tag(
|
||||||
command : ['git', 'describe', '--always', '--dirty=+'],
|
command : ['git', 'describe', '--always', '--dirty=+'],
|
||||||
input : 'vkd3d_version.c.in',
|
input : 'vkd3d_version.h.in',
|
||||||
output : 'vkd3d_version.c')
|
output : 'vkd3d_version.h')
|
||||||
|
|
||||||
dxil_spirv = subproject('dxil-spirv')
|
dxil_spirv = subproject('dxil-spirv')
|
||||||
dxil_spirv_dep = dxil_spirv.get_variable('dxil_spirv_dep')
|
dxil_spirv_dep = dxil_spirv.get_variable('dxil_spirv_dep')
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
const char vkd3d_build[] = "@VCS_TAG@";
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
#define VKD3D_BUILD_SIZE 8
|
||||||
|
#define VKD3D_BUILD_MAX_LENGTH (VKD3D_BUILD_SIZE - 1)
|
||||||
|
|
||||||
|
static const char vkd3d_build[VKD3D_BUILD_SIZE] = "@VCS_TAG@";
|
Loading…
Reference in New Issue