Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
81cf722
tests: Update tests to be more correct w.r.t. heaps being bound.
HansKristian-Work Jan 26, 2026
540f73a
DO NOT MERGE: Implement VK_EXT_descriptor_heap and rip out all old pa…
HansKristian-Work Jan 26, 2026
a6e26d5
Fix some VVL errors.
HansKristian-Work Jan 27, 2026
c95010a
Add some new things to mute in VVL for now.
HansKristian-Work Jan 27, 2026
2c05b89
Fix buffer usage for sampler feedback.
HansKristian-Work Jan 27, 2026
400ded9
Add a VVL mute. Needs triage later for accuracy ...
HansKristian-Work Jan 27, 2026
1015a9b
Remove workaround for fixed VVL bug.
HansKristian-Work Jan 28, 2026
6e3aff2
Do not falsely exhaust border colors on NV.
HansKristian-Work Jan 28, 2026
3a46a42
Fix bad assert.
HansKristian-Work Jan 28, 2026
c7c5c3c
Forward root constants in WGs.
HansKristian-Work Jan 28, 2026
92033ee
vkd3d: Prepare for cubin 64bit support.
Saancreed Feb 4, 2025
e17ebb6
include: Add definitions for cubin 64bit ID3D12DeviceExt2.
Saancreed Feb 4, 2025
4faab87
vkd3d: Implement ID3D12DeviceExt2_SupportsCubin64bit.
Saancreed Feb 4, 2025
0c0c0fe
vkd3d: Implement ID3D12DeviceExt2_CreateCubinComputeShaderExV2.
Saancreed Feb 4, 2025
8a644a6
vkd3d: Implement ID3D12DeviceExt2_GetCudaMergedTextureSamplerObject.
Saancreed Feb 4, 2025
9d044f0
vkd3d: Implement ID3D12DeviceExt2_GetCudaIndependentDescriptorObject.
Saancreed Feb 4, 2025
f5e96b6
vkd3d: Expose ID3D12DeviceExt2.
Saancreed Feb 4, 2025
694d879
Merge branch 'master' of github-as-work:HansKristian-Work/vkd3d-proto…
HansKristian-Work Feb 10, 2026
8e6f244
Merge branch 'cubin64' of https://github.com/Saancreed/vkd3d-proton i…
HansKristian-Work Feb 10, 2026
ace9fe8
Port over new nvapi stuff.
HansKristian-Work Feb 10, 2026
37e8d98
Merge remote-tracking branch 'origin/master' into descriptor-heap-test
HansKristian-Work Feb 13, 2026
2672531
Merge remote-tracking branch 'origin/master' into descriptor-heap-test
HansKristian-Work Feb 20, 2026
3864e83
Always add heap to VA map.
HansKristian-Work Feb 20, 2026
97a0c5d
Merge remote-tracking branch 'origin/master' into descriptor-heap-test
HansKristian-Work Mar 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion include/private/vulkan_private_extensions.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#ifndef __VULKAN_PRIVATE_EXTENSIONS_H__
#define __VULKAN_PRIVATE_EXTENSIONS_H__

/* Nothing here at the moment. Add hacks here! */
/* Add hacks here! */

#endif
3 changes: 1 addition & 2 deletions include/vkd3d.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,12 +90,11 @@ extern "C" {
#define VKD3D_CONFIG_FLAG_ALLOW_SBT_COLLECTION (1ull << 30)
#define VKD3D_CONFIG_FLAG_PLACED_TEXTURE_ALIASING (1ull << 31)
#define VKD3D_CONFIG_FLAG_USE_HOST_IMPORT_FALLBACK (1ull << 32)
#define VKD3D_CONFIG_FLAG_PREALLOCATE_SRV_MIP_CLAMPS (1ull << 33)
/* Bit 33 vacant */
#define VKD3D_CONFIG_FLAG_FORCE_INITIAL_TRANSITION (1ull << 34)
#define VKD3D_CONFIG_FLAG_FORCE_DEDICATED_IMAGE_ALLOCATION (1ull << 35)
#define VKD3D_CONFIG_FLAG_BREADCRUMBS_TRACE (1ull << 36)
#define VKD3D_CONFIG_FLAG_DISABLE_SIMULTANEOUS_UAV_COMPRESSION (1ull << 37)
#define VKD3D_CONFIG_FLAG_REQUIRES_COMPUTE_INDIRECT_TEMPLATES (1ull << 38)
#define VKD3D_CONFIG_FLAG_SKIP_DRIVER_WORKAROUNDS (1ull << 39)
#define VKD3D_CONFIG_FLAG_RETAIN_PSOS (1ull << 40)
#define VKD3D_CONFIG_FLAG_ENABLE_EXPERIMENTAL_FEATURES (1ull << 41)
Expand Down
60 changes: 44 additions & 16 deletions include/vkd3d_shader.h
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ enum vkd3d_shader_binding_flag
VKD3D_SHADER_BINDING_FLAG_BINDLESS = 0x00000008,
VKD3D_SHADER_BINDING_FLAG_RAW_VA = 0x00000010,
VKD3D_SHADER_BINDING_FLAG_RAW_SSBO = 0x00000020,
VKD3D_SHADER_BINDING_FLAG_FORCE_EXPLICIT_HEAP_INDEXING = 0x00000040,

VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_BINDING_FLAG),
};
Expand Down Expand Up @@ -211,10 +212,7 @@ struct vkd3d_shader_resource_binding
unsigned int register_space;
unsigned int register_index;
unsigned int register_count;
unsigned int descriptor_table;
unsigned int descriptor_offset;
enum vkd3d_shader_visibility shader_visibility;
unsigned int flags; /* vkd3d_shader_binding_flags */

struct vkd3d_shader_descriptor_binding binding;
};
Expand All @@ -231,12 +229,6 @@ struct vkd3d_shader_push_constant_buffer
unsigned int size; /* in bytes */
};

struct vkd3d_shader_descriptor_table_buffer
{
unsigned int offset; /* in bytes */
unsigned int count; /* number of tables */
};

struct vkd3d_shader_root_parameter_mapping
{
unsigned int root_parameter;
Expand All @@ -249,9 +241,6 @@ struct vkd3d_shader_root_parameter_mapping
enum vkd3d_shader_interface_flag
{
VKD3D_SHADER_INTERFACE_PUSH_CONSTANTS_AS_UNIFORM_BUFFER = 0x00000001u,
VKD3D_SHADER_INTERFACE_BINDLESS_CBV_AS_STORAGE_BUFFER = 0x00000002u,
VKD3D_SHADER_INTERFACE_SSBO_OFFSET_BUFFER = 0x00000004u,
VKD3D_SHADER_INTERFACE_TYPED_OFFSET_BUFFER = 0x00000008u,
VKD3D_SHADER_INTERFACE_DESCRIPTOR_QA_BUFFER = 0x00000010u,
/* In this model, use descriptor_size_cbv_srv_uav as array stride for raw VA buffer. */
VKD3D_SHADER_INTERFACE_RAW_VA_ALIAS_DESCRIPTOR_BUFFER = 0x00000020u,
Expand All @@ -261,6 +250,7 @@ enum vkd3d_shader_interface_flag
VKD3D_SHADER_INTERFACE_INSTRUCTION_QA_BUFFER_EXPECT_ASSUME = 0x00000200u,
VKD3D_SHADER_INTERFACE_INSTRUCTION_QA_BUFFER_SYNC = 0x00000400u,
VKD3D_SHADER_INTERFACE_INSTRUCTION_QA_BUFFER_SYNC_COMPUTE = 0x00000800u,
VKD3D_SHADER_INTERFACE_INLINE_REDZONE_CBV = 0x00001000u,
};

struct vkd3d_shader_stage_io_entry
Expand Down Expand Up @@ -291,15 +281,18 @@ struct vkd3d_shader_interface_info
unsigned int min_ssbo_alignment;
unsigned int patch_location_offset;

struct vkd3d_shader_descriptor_table_buffer descriptor_tables;
const struct vkd3d_shader_resource_binding *bindings;
unsigned int binding_count;

const struct vkd3d_shader_push_constant_buffer *push_constant_buffers;
unsigned int push_constant_buffer_count;

unsigned int descriptor_table_offset_words;
unsigned int num_root_descriptors;
unsigned int num_root_constants;

/* Ignored unless VKD3D_SHADER_INTERFACE_PUSH_CONSTANTS_AS_UNIFORM_BUFFER is set */
const struct vkd3d_shader_descriptor_binding *push_constant_ubo_binding;
struct vkd3d_shader_descriptor_binding push_constant_ubo_binding;
/* Ignored unless VKD3D_SHADER_INTERFACE_SSBO_OFFSET_BUFFER or TYPED_OFFSET_BUFFER is set */
const struct vkd3d_shader_descriptor_binding *offset_buffer_binding;

Expand All @@ -319,6 +312,7 @@ struct vkd3d_shader_interface_info

/* Used for either VKD3D_SHADER_INTERFACE_RAW_VA_ALIAS_DESCRIPTOR_BUFFER or local root signatures. */
uint32_t descriptor_size_cbv_srv_uav;
uint32_t descriptor_raw_va_offset;
uint32_t descriptor_size_sampler;

/* Purely for debug. Only non-NULL when running with EXTENDED_DEBUG_UTILS. */
Expand Down Expand Up @@ -360,12 +354,12 @@ struct vkd3d_shader_root_parameter

struct vkd3d_shader_interface_local_info
{
const struct vkd3d_shader_resource_binding *bindings;
unsigned int binding_count;
const struct vkd3d_shader_root_parameter *local_root_parameters;
unsigned int local_root_parameter_count;
const struct vkd3d_shader_push_constant_buffer *shader_record_constant_buffers;
unsigned int shader_record_buffer_count;
const struct vkd3d_shader_resource_binding *bindings;
unsigned int binding_count;
};

struct vkd3d_shader_transform_feedback_element
Expand Down Expand Up @@ -1045,6 +1039,7 @@ struct vkd3d_shader_node_input_push_signature
VkDeviceAddress local_root_signature_bda;
uint32_t node_payload_output_offset;
uint32_t node_remaining_recursion_levels;
VkDeviceAddress root_parameter_bda;
};

struct vkd3d_shader_node_input_data
Expand Down Expand Up @@ -1201,6 +1196,39 @@ bool vkd3d_shader_hash_range_parse_line(char *line,
vkd3d_shader_hash_t *lo, vkd3d_shader_hash_t *hi,
char **trail);

/* In EXT_descriptor_heap, sets and bindings are non-physical concepts.
* Agree on a convention so that we can link SPIR-V to PSO creation. */
enum
{
VKD3D_SHADER_GLOBAL_HEAP_VIRTUAL_DESCRIPTOR_SET = 100,
VKD3D_SHADER_STATIC_SAMPLERS_VIRTUAL_DESCRIPTOR_SET = 101,
VKD3D_SHADER_ROOT_CONSTANTS_VIRTUAL_DESCRIPTOR_SET = 102,
VKD3D_SHADER_ROOT_DESCRIPTORS_VIRTUAL_DESCRIPTOR_SET = 103,
VKD3D_SHADER_STATIC_LOCAL_SAMPLERS_VIRTUAL_DESCRIPTOR_SET = 104,
VKD3D_SHADER_LOCAL_ROOT_CONSTANTS_VIRTUAL_DESCRIPTOR_SET = 105,
VKD3D_SHADER_LOCAL_ROOT_DESCRIPTORS_VIRTUAL_DESCRIPTOR_SET = 106,
VKD3D_SHADER_LOCAL_TABLES_VIRTUAL_DESCRIPTOR_SET_BASE = 200,

VKD3D_SHADER_UAV_COUNTER_SET_OFFSET = 1000,

VKD3D_SHADER_UAV_COUNTER_TABLES_VIRTUAL_DESCRIPTOR_SET_BASE =
VKD3D_SHADER_GLOBAL_HEAP_VIRTUAL_DESCRIPTOR_SET + VKD3D_SHADER_UAV_COUNTER_SET_OFFSET,
VKD3D_SHADER_UAV_COUNTER_LOCAL_TABLES_VIRTUAL_DESCRIPTOR_SET_BASE =
VKD3D_SHADER_LOCAL_TABLES_VIRTUAL_DESCRIPTOR_SET_BASE + VKD3D_SHADER_UAV_COUNTER_SET_OFFSET,

VKD3D_SHADER_GLOBAL_HEAP_BINDING = 0,
VKD3D_SHADER_UAV_COUNTER_GLOBAL_HEAP_BINDING,

/* These are either plain SSBOs or magic UBOs. */
VKD3D_SHADER_GLOBAL_HEAP_BINDING_AUX_BINDINGS,
VKD3D_SHADER_RAW_VIEW_GLOBAL_HEAP_BINDING = VKD3D_SHADER_GLOBAL_HEAP_BINDING_AUX_BINDINGS,
VKD3D_SHADER_GLOBAL_HEAP_SIZE_BINDING,
VKD3D_SHADER_GLOBAL_HEAP_BINDING_AUX_BINDINGS_COUNT = 4
};

#define VKD3D_FORCE_RAW_UAV_COUNTER 0
#define VKD3D_FORCE_HEAP_ROBUSTNESS 0

#ifdef __cplusplus
}
#endif /* __cplusplus */
Expand Down
Loading
Loading