mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-12-10 05:38:49 +00:00
buffer_atomic_imax_x2 (#3130)
* buffer_atomic_imax_x2 * Define Int64Atomics SPIR-V capability
This commit is contained in:
committed by
GitHub
parent
77117abb31
commit
1757dfaf5a
@@ -341,7 +341,7 @@ bool Instance::CreateDevice() {
|
||||
const auto topology_list_restart_features =
|
||||
feature_chain.get<vk::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>();
|
||||
const auto vk11_features = feature_chain.get<vk::PhysicalDeviceVulkan11Features>();
|
||||
const auto vk12_features = feature_chain.get<vk::PhysicalDeviceVulkan12Features>();
|
||||
vk12_features = feature_chain.get<vk::PhysicalDeviceVulkan12Features>();
|
||||
const auto vk13_features = feature_chain.get<vk::PhysicalDeviceVulkan13Features>();
|
||||
vk::StructureChain device_chain = {
|
||||
vk::DeviceCreateInfo{
|
||||
@@ -387,6 +387,8 @@ bool Instance::CreateDevice() {
|
||||
.drawIndirectCount = vk12_features.drawIndirectCount,
|
||||
.storageBuffer8BitAccess = vk12_features.storageBuffer8BitAccess,
|
||||
.uniformAndStorageBuffer8BitAccess = vk12_features.uniformAndStorageBuffer8BitAccess,
|
||||
.shaderBufferInt64Atomics = vk12_features.shaderBufferInt64Atomics,
|
||||
.shaderSharedInt64Atomics = vk12_features.shaderSharedInt64Atomics,
|
||||
.shaderFloat16 = vk12_features.shaderFloat16,
|
||||
.shaderInt8 = vk12_features.shaderInt8,
|
||||
.scalarBlockLayout = vk12_features.scalarBlockLayout,
|
||||
|
||||
@@ -178,6 +178,16 @@ public:
|
||||
return shader_atomic_float2 && shader_atomic_float2_features.shaderImageFloat32AtomicMinMax;
|
||||
}
|
||||
|
||||
/// Returns true if 64-bit integer atomic operations can be used on buffers
|
||||
bool IsBufferInt64AtomicsSupported() const {
|
||||
return vk12_features.shaderBufferInt64Atomics;
|
||||
}
|
||||
|
||||
/// Returns true if 64-bit integer atomic operations can be used on shared memory
|
||||
bool IsSharedInt64AtomicsSupported() const {
|
||||
return vk12_features.shaderSharedInt64Atomics;
|
||||
}
|
||||
|
||||
/// Returns true when VK_KHR_workgroup_memory_explicit_layout is supported.
|
||||
bool IsWorkgroupMemoryExplicitLayoutSupported() const {
|
||||
return workgroup_memory_explicit_layout &&
|
||||
@@ -358,6 +368,7 @@ private:
|
||||
vk::PhysicalDeviceVulkan12Properties vk12_props;
|
||||
vk::PhysicalDevicePushDescriptorPropertiesKHR push_descriptor_props;
|
||||
vk::PhysicalDeviceFeatures features;
|
||||
vk::PhysicalDeviceVulkan12Features vk12_features;
|
||||
vk::PhysicalDevicePortabilitySubsetFeaturesKHR portability_features;
|
||||
vk::PhysicalDeviceExtendedDynamicState3FeaturesEXT dynamic_state_3_features;
|
||||
vk::PhysicalDeviceRobustness2FeaturesEXT robustness2_features;
|
||||
|
||||
@@ -219,6 +219,8 @@ PipelineCache::PipelineCache(const Instance& instance_, Scheduler& scheduler_,
|
||||
.supports_buffer_fp32_atomic_min_max =
|
||||
instance_.IsShaderAtomicFloatBuffer32MinMaxSupported(),
|
||||
.supports_image_fp32_atomic_min_max = instance_.IsShaderAtomicFloatImage32MinMaxSupported(),
|
||||
.supports_buffer_int64_atomics = instance_.IsBufferInt64AtomicsSupported(),
|
||||
.supports_shared_int64_atomics = instance_.IsSharedInt64AtomicsSupported(),
|
||||
.supports_workgroup_explicit_memory_layout =
|
||||
instance_.IsWorkgroupMemoryExplicitLayoutSupported(),
|
||||
.needs_manual_interpolation = instance.IsFragmentShaderBarycentricSupported() &&
|
||||
|
||||
Reference in New Issue
Block a user