Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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/vkd3d.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ extern "C" {
#define VKD3D_CONFIG_FLAG_SHADER_CACHE_SYNC (1ull << 27)
#define VKD3D_CONFIG_FLAG_FORCE_RAW_VA_CBV (1ull << 28)
#define VKD3D_CONFIG_FLAG_DXR_1_2 (1ull << 29)
#define VKD3D_CONFIG_FLAG_ALLOW_SBT_COLLECTION (1ull << 30)
/* Bit 30 is vacant */
#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)
Expand Down
5 changes: 3 additions & 2 deletions libs/vkd3d/device.c
Original file line number Diff line number Diff line change
Expand Up @@ -572,7 +572,7 @@ static const struct vkd3d_instance_application_meta application_override[] = {
{ VKD3D_STRING_COMPARE_EXACT, "Sam4.exe", VKD3D_CONFIG_FLAG_FORCE_NO_INVARIANT_POSITION | VKD3D_CONFIG_FLAG_SMALL_VRAM_REBAR, 0 },
/* Cyberpunk 2077 (1091500). For whatever reason, anti-lag is always used if it is supported (impossible to disable),
* leading to bad performance in some cases. Currently only affects Proton-GE which ships amdxc64.dll shim by default. */
{ VKD3D_STRING_COMPARE_EXACT, "Cyberpunk2077.exe", VKD3D_CONFIG_FLAG_ALLOW_SBT_COLLECTION, 0, VKD3D_APPLICATION_FEATURE_DISABLE_ANTI_LAG },
{ VKD3D_STRING_COMPARE_EXACT, "Cyberpunk2077.exe", 0, 0, VKD3D_APPLICATION_FEATURE_DISABLE_ANTI_LAG },
/* Control (870780). Control fails to detect DXR if 1.1 is exposed. */
{ VKD3D_STRING_COMPARE_EXACT, "Control_DX12.exe", 0, 0, VKD3D_APPLICATION_FEATURE_LIMIT_DXR_1_0 },
/* Hellblade: Senua's Sacrifice (414340). Enables RT by default if supported which is ... jarring and particularly jarring on Deck. */
Expand Down Expand Up @@ -654,6 +654,8 @@ static const struct vkd3d_instance_application_meta application_override[] = {
{ VKD3D_STRING_COMPARE_EXACT, "Endless Legend 2.exe", VKD3D_CONFIG_FLAG_ENABLE_DXBC_SPIRV, 0 },
/* Red Dead Redemption 2 (1174180). Broken shader compilation with legacy compiler. */
{ VKD3D_STRING_COMPARE_EXACT, "RDR2.exe", VKD3D_CONFIG_FLAG_ENABLE_DXBC_SPIRV, 0 },
/* NBA2K26 (3472040). Uses an extreme number of queues which trip bad submission paths. */
{ VKD3D_STRING_COMPARE_EXACT, "NBA2K26.exe", VKD3D_CONFIG_FLAG_NO_STAGGERED_SUBMIT, 0 },
{ VKD3D_STRING_COMPARE_NEVER, NULL, 0, 0 }
};

Expand Down Expand Up @@ -1107,7 +1109,6 @@ static const struct vkd3d_debug_option vkd3d_config_options[] =
{"pipeline_library_app_cache", VKD3D_CONFIG_FLAG_PIPELINE_LIBRARY_APP_CACHE_ONLY},
{"shader_cache_sync", VKD3D_CONFIG_FLAG_SHADER_CACHE_SYNC},
{"force_raw_va_cbv", VKD3D_CONFIG_FLAG_FORCE_RAW_VA_CBV},
{"allow_sbt_collection", VKD3D_CONFIG_FLAG_ALLOW_SBT_COLLECTION},
{"host_import_fallback", VKD3D_CONFIG_FLAG_USE_HOST_IMPORT_FALLBACK},
{"preallocate_srv_mip_clamps", VKD3D_CONFIG_FLAG_PREALLOCATE_SRV_MIP_CLAMPS},
{"force_initial_transition", VKD3D_CONFIG_FLAG_FORCE_INITIAL_TRANSITION},
Expand Down
16 changes: 0 additions & 16 deletions libs/vkd3d/raytracing_pipeline.c
Original file line number Diff line number Diff line change
Expand Up @@ -2633,22 +2633,6 @@ static HRESULT d3d12_state_object_init(struct d3d12_rt_state_object *object,
object->device = device;
object->type = desc->Type;

if (object->type == D3D12_STATE_OBJECT_TYPE_COLLECTION &&
(vkd3d_config_flags & VKD3D_CONFIG_FLAG_ALLOW_SBT_COLLECTION) &&
!device->device_info.pipeline_library_group_handles_features.pipelineLibraryGroupHandles)
{
/* It seems to be valid to query shader identifiers from a COLLECTION which is pure insanity.
* We can fake this behavior if we pretend we have ALLOW_STATE_OBJECT_ADDITIONS and RTPSO.
* We will validate that the "COLLECTION" matches the consuming RTPSO.
* If the collection does not contain an RGEN shader, we're technically out of spec here. */

/* If we have pipeline library group handles feature however,
* we can ignore this workaround and do it properly. */
INFO("Promoting COLLECTION to RAYTRACING_PIPELINE as workaround.\n");
object->type = D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE;
object->flags |= D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS;
}

memset(&data, 0, sizeof(data));

if (FAILED(hr = d3d12_state_object_parse_subobjects(object, desc, parent, &data)))
Expand Down
Loading