From ddb2ba8a1b71d363e4ecace74301c8e170b1594f Mon Sep 17 00:00:00 2001 From: PixelyIon Date: Sat, 22 Jan 2022 20:15:28 +0530 Subject: [PATCH] Rename `QuirkManager` to `TraitManager` Quirk terminology was deemed to be inappropriate for describing the features/extensions of a device. It has been replaced with traits which is far more fitting but quirks will be used as a terminology for errata in devices. --- app/CMakeLists.txt | 2 +- app/src/main/cpp/skyline/gpu.cpp | 12 ++--- app/src/main/cpp/skyline/gpu.h | 4 +- .../gpu/interconnect/graphics_context.h | 20 ++++---- .../main/cpp/skyline/gpu/shader_manager.cpp | 46 +++++++++---------- .../{quirk_manager.cpp => trait_manager.cpp} | 22 ++++----- .../gpu/{quirk_manager.h => trait_manager.h} | 10 ++-- 7 files changed, 58 insertions(+), 58 deletions(-) rename app/src/main/cpp/skyline/gpu/{quirk_manager.cpp => trait_manager.cpp} (96%) rename app/src/main/cpp/skyline/gpu/{quirk_manager.h => trait_manager.h} (94%) diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 3528ef52..291fe527 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -157,7 +157,7 @@ add_library(skyline SHARED ${source_DIR}/skyline/audio/resampler.cpp ${source_DIR}/skyline/audio/adpcm_decoder.cpp ${source_DIR}/skyline/gpu.cpp - ${source_DIR}/skyline/gpu/quirk_manager.cpp + ${source_DIR}/skyline/gpu/trait_manager.cpp ${source_DIR}/skyline/gpu/memory_manager.cpp ${source_DIR}/skyline/gpu/texture_manager.cpp ${source_DIR}/skyline/gpu/buffer_manager.cpp diff --git a/app/src/main/cpp/skyline/gpu.cpp b/app/src/main/cpp/skyline/gpu.cpp index 69e4c6a8..bc5580d6 100644 --- a/app/src/main/cpp/skyline/gpu.cpp +++ b/app/src/main/cpp/skyline/gpu.cpp @@ -122,7 +122,7 @@ namespace skyline::gpu { static vk::raii::Device CreateDevice(const vk::raii::Context &context, const vk::raii::PhysicalDevice &physicalDevice, decltype(vk::DeviceQueueCreateInfo::queueCount) &vkQueueFamilyIndex, - QuirkManager &quirks) { + TraitManager &traits) { auto deviceFeatures2{physicalDevice.getFeatures2()}; decltype(deviceFeatures2) enabledFeatures2{}; // We only want to enable features we required due to potential overhead from unused features @@ -154,8 +154,8 @@ namespace skyline::gpu { auto deviceProperties2{physicalDevice.getProperties2()}; - quirks = QuirkManager(deviceFeatures2, enabledFeatures2, deviceExtensions, enabledExtensions, deviceProperties2); - quirks.ApplyDriverPatches(context); + traits = TraitManager(deviceFeatures2, enabledFeatures2, deviceExtensions, enabledExtensions, deviceProperties2); + traits.ApplyDriverPatches(context); std::vector pEnabledExtensions; pEnabledExtensions.reserve(enabledExtensions.size()); @@ -191,11 +191,11 @@ namespace skyline::gpu { queueString += util::Format("\n* {}x{}{}{}{}{}: TSB{} MIG({}x{}x{}){}", queueFamily.queueCount, queueFamily.queueFlags & vk::QueueFlagBits::eGraphics ? 'G' : '-', queueFamily.queueFlags & vk::QueueFlagBits::eCompute ? 'C' : '-', queueFamily.queueFlags & vk::QueueFlagBits::eTransfer ? 'T' : '-', queueFamily.queueFlags & vk::QueueFlagBits::eSparseBinding ? 'S' : '-', queueFamily.queueFlags & vk::QueueFlagBits::eProtected ? 'P' : '-', queueFamily.timestampValidBits, queueFamily.minImageTransferGranularity.width, queueFamily.minImageTransferGranularity.height, queueFamily.minImageTransferGranularity.depth, familyIndex++ == vkQueueFamilyIndex ? " <--" : ""); auto properties{deviceProperties2.get().properties}; - Logger::Info("Vulkan Device:\nName: {}\nType: {}\nVulkan Version: {}.{}.{}\nDriver Version: {}.{}.{}\nQueues:{}\nExtensions:{}\nQuirks:{}", + Logger::Info("Vulkan Device:\nName: {}\nType: {}\nVulkan Version: {}.{}.{}\nDriver Version: {}.{}.{}\nQueues:{}\nExtensions:{}\nTraits:{}", properties.deviceName, vk::to_string(properties.deviceType), VK_API_VERSION_MAJOR(properties.apiVersion), VK_API_VERSION_MINOR(properties.apiVersion), VK_API_VERSION_PATCH(properties.apiVersion), VK_API_VERSION_MAJOR(properties.driverVersion), VK_API_VERSION_MINOR(properties.driverVersion), VK_API_VERSION_PATCH(properties.driverVersion), - queueString, extensionString, quirks.Summary()); + queueString, extensionString, traits.Summary()); } return vk::raii::Device(physicalDevice, vk::DeviceCreateInfo{ @@ -211,7 +211,7 @@ namespace skyline::gpu { : vkInstance(CreateInstance(state, vkContext)), vkDebugReportCallback(CreateDebugReportCallback(vkInstance)), vkPhysicalDevice(CreatePhysicalDevice(vkInstance)), - vkDevice(CreateDevice(vkContext, vkPhysicalDevice, vkQueueFamilyIndex, quirks)), + vkDevice(CreateDevice(vkContext, vkPhysicalDevice, vkQueueFamilyIndex, traits)), vkQueue(vkDevice, vkQueueFamilyIndex, 0), memory(*this), scheduler(*this), diff --git a/app/src/main/cpp/skyline/gpu.h b/app/src/main/cpp/skyline/gpu.h index 09e17395..61d6ba89 100644 --- a/app/src/main/cpp/skyline/gpu.h +++ b/app/src/main/cpp/skyline/gpu.h @@ -3,7 +3,7 @@ #pragma once -#include "gpu/quirk_manager.h" +#include "gpu/trait_manager.h" #include "gpu/memory_manager.h" #include "gpu/command_scheduler.h" #include "gpu/presentation_engine.h" @@ -25,7 +25,7 @@ namespace skyline::gpu { vk::raii::DebugReportCallbackEXT vkDebugReportCallback; //!< An RAII Vulkan debug report manager which calls into 'GPU::DebugCallback' vk::raii::PhysicalDevice vkPhysicalDevice; u32 vkQueueFamilyIndex{}; - QuirkManager quirks; + TraitManager traits; vk::raii::Device vkDevice; std::mutex queueMutex; //!< Synchronizes access to the queue as it is externally synchronized vk::raii::Queue vkQueue; //!< A Vulkan Queue supporting graphics and compute operations diff --git a/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h b/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h index b82d8aab..cb55de36 100644 --- a/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h +++ b/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h @@ -67,7 +67,7 @@ namespace skyline::gpu::interconnect { for (auto &rtBlendState : independentRtBlendState) rtBlendState.colorWriteMask = vk::ColorComponentFlagBits::eR | vk::ColorComponentFlagBits::eG | vk::ColorComponentFlagBits::eB | vk::ColorComponentFlagBits::eA; - if (!gpu.quirks.supportsLastProvokingVertex) + if (!gpu.traits.supportsLastProvokingVertex) rasterizerState.unlink(); } @@ -1121,7 +1121,7 @@ namespace skyline::gpu::interconnect { void SetProvokingVertex(bool isLast) { if (isLast) { - if (!gpu.quirks.supportsLastProvokingVertex) + if (!gpu.traits.supportsLastProvokingVertex) Logger::Warn("Cannot set provoking vertex to last without host GPU support"); rasterizerState.get().provokingVertexMode = vk::ProvokingVertexModeEXT::eLastVertex; } else { @@ -1167,7 +1167,7 @@ namespace skyline::gpu::interconnect { public: void SetBlendLogicOpEnable(bool enabled) { - if (!gpu.quirks.supportsLogicOp && enabled) { + if (!gpu.traits.supportsLogicOp && enabled) { Logger::Warn("Cannot enable framebuffer logical operation without host GPU support"); return; } @@ -1468,9 +1468,9 @@ namespace skyline::gpu::interconnect { } void SetVertexBufferDivisor(u32 index, u32 divisor) { - if (!gpu.quirks.supportsVertexAttributeDivisor) + if (!gpu.traits.supportsVertexAttributeDivisor) Logger::Warn("Cannot set vertex attribute divisor without host GPU support"); - else if (divisor == 0 && !gpu.quirks.supportsVertexAttributeZeroDivisor) + else if (divisor == 0 && !gpu.traits.supportsVertexAttributeZeroDivisor) Logger::Warn("Cannot set vertex attribute divisor to zero without host GPU support"); vertexBuffers[index].bindingDivisorDescription.divisor = divisor; } @@ -2007,7 +2007,7 @@ namespace skyline::gpu::interconnect { auto convertAddressModeWithCheck{[&](TextureSamplerControl::AddressMode mode) { auto vkMode{ConvertSamplerAddressMode(mode)}; - if (vkMode == vk::SamplerAddressMode::eMirrorClampToEdge && !gpu.quirks.supportsSamplerMirrorClampToEdge) [[unlikely]] { + if (vkMode == vk::SamplerAddressMode::eMirrorClampToEdge && !gpu.traits.supportsSamplerMirrorClampToEdge) [[unlikely]] { Logger::Warn("Cannot use Mirror Clamp To Edge as Sampler Address Mode without host GPU support"); return vk::SamplerAddressMode::eClampToEdge; // We use a normal clamp to edge to approximate it } @@ -2039,11 +2039,11 @@ namespace skyline::gpu::interconnect { }, }; - if (!gpu.quirks.supportsSamplerReductionMode) + if (!gpu.traits.supportsSamplerReductionMode) samplerInfo.unlink(); vk::BorderColor &borderColor{samplerInfo.get().borderColor}; - if (gpu.quirks.supportsCustomBorderColor) { + if (gpu.traits.supportsCustomBorderColor) { borderColor = ConvertBorderColorWithCustom(samplerControl.borderColorR, samplerControl.borderColorG, samplerControl.borderColorB, samplerControl.borderColorA); if (borderColor != vk::BorderColor::eFloatCustomEXT) samplerInfo.unlink(); @@ -2090,7 +2090,7 @@ namespace skyline::gpu::interconnect { } }(); - if (indexBuffer.type == vk::IndexType::eUint8EXT && !gpu.quirks.supportsUint8Indices) + if (indexBuffer.type == vk::IndexType::eUint8EXT && !gpu.traits.supportsUint8Indices) throw exception("Cannot use U8 index buffer without host GPU support"); indexBuffer.view.reset(); @@ -2395,7 +2395,7 @@ namespace skyline::gpu::interconnect { auto storage{std::make_shared(std::move(pipelineLayout), std::move(descriptorSet))}; // Submit Draw - executor.AddSubpass([=, &vkDevice = gpu.vkDevice, shaderModules = programState.shaderModules, shaderStages = programState.shaderStages, inputAssemblyState = inputAssemblyState, multiViewport = gpu.quirks.supportsMultipleViewports, viewports = viewports, scissors = scissors, rasterizerState = rasterizerState, multisampleState = multisampleState, depthState = depthState, blendState = blendState, storage = std::move(storage), supportsVertexAttributeDivisor = gpu.quirks.supportsVertexAttributeDivisor, vertexBufferHandles = std::move(vertexBufferHandles), vertexBufferOffsets = std::move(vertexBufferOffsets), pipelineCache = *pipelineCache](vk::raii::CommandBuffer &commandBuffer, const std::shared_ptr &cycle, GPU &, vk::RenderPass renderPass, u32 subpassIndex) mutable { + executor.AddSubpass([=, &vkDevice = gpu.vkDevice, shaderModules = programState.shaderModules, shaderStages = programState.shaderStages, inputAssemblyState = inputAssemblyState, multiViewport = gpu.traits.supportsMultipleViewports, viewports = viewports, scissors = scissors, rasterizerState = rasterizerState, multisampleState = multisampleState, depthState = depthState, blendState = blendState, storage = std::move(storage), supportsVertexAttributeDivisor = gpu.traits.supportsVertexAttributeDivisor, vertexBufferHandles = std::move(vertexBufferHandles), vertexBufferOffsets = std::move(vertexBufferOffsets), pipelineCache = *pipelineCache](vk::raii::CommandBuffer &commandBuffer, const std::shared_ptr &cycle, GPU &, vk::RenderPass renderPass, u32 subpassIndex) mutable { vk::StructureChain vertexState{ vk::PipelineVertexInputStateCreateInfo{ .pVertexBindingDescriptions = vertexBindingDescriptions.data(), diff --git a/app/src/main/cpp/skyline/gpu/shader_manager.cpp b/app/src/main/cpp/skyline/gpu/shader_manager.cpp index 1276a8d7..e10ea888 100644 --- a/app/src/main/cpp/skyline/gpu/shader_manager.cpp +++ b/app/src/main/cpp/skyline/gpu/shader_manager.cpp @@ -24,42 +24,42 @@ namespace Shader::Log { namespace skyline::gpu { ShaderManager::ShaderManager(const DeviceState &state, GPU &gpu) : gpu(gpu) { - auto &quirks{gpu.quirks}; + auto &traits{gpu.traits}; hostTranslateInfo = Shader::HostTranslateInfo{ - .support_float16 = quirks.supportsFloat16, - .support_int64 = quirks.supportsInt64, + .support_float16 = traits.supportsFloat16, + .support_int64 = traits.supportsInt64, .needs_demote_reorder = false, }; constexpr u32 TegraX1WarpSize{32}; //!< The amount of threads in a warp on the Tegra X1 profile = Shader::Profile{ - .supported_spirv = quirks.supportsSpirv14 ? 0x00010400U : 0x00010000U, + .supported_spirv = traits.supportsSpirv14 ? 0x00010400U : 0x00010000U, .unified_descriptor_binding = true, .support_descriptor_aliasing = true, - .support_int8 = quirks.supportsInt8, - .support_int16 = quirks.supportsInt16, - .support_int64 = quirks.supportsInt64, + .support_int8 = traits.supportsInt8, + .support_int16 = traits.supportsInt16, + .support_int64 = traits.supportsInt64, .support_vertex_instance_id = false, - .support_float_controls = quirks.supportsFloatControls, - .support_separate_denorm_behavior = quirks.floatControls.denormBehaviorIndependence == vk::ShaderFloatControlsIndependence::eAll, - .support_separate_rounding_mode = quirks.floatControls.roundingModeIndependence == vk::ShaderFloatControlsIndependence::eAll, - .support_fp16_denorm_preserve = static_cast(quirks.floatControls.shaderDenormPreserveFloat16), - .support_fp32_denorm_preserve = static_cast(quirks.floatControls.shaderDenormPreserveFloat32), - .support_fp16_denorm_flush = static_cast(quirks.floatControls.shaderDenormFlushToZeroFloat16), - .support_fp32_denorm_flush = static_cast(quirks.floatControls.shaderDenormFlushToZeroFloat32), - .support_fp16_signed_zero_nan_preserve = static_cast(quirks.floatControls.shaderSignedZeroInfNanPreserveFloat16), - .support_fp32_signed_zero_nan_preserve = static_cast(quirks.floatControls.shaderSignedZeroInfNanPreserveFloat32), - .support_fp64_signed_zero_nan_preserve = static_cast(quirks.floatControls.shaderSignedZeroInfNanPreserveFloat64), + .support_float_controls = traits.supportsFloatControls, + .support_separate_denorm_behavior = traits.floatControls.denormBehaviorIndependence == vk::ShaderFloatControlsIndependence::eAll, + .support_separate_rounding_mode = traits.floatControls.roundingModeIndependence == vk::ShaderFloatControlsIndependence::eAll, + .support_fp16_denorm_preserve = static_cast(traits.floatControls.shaderDenormPreserveFloat16), + .support_fp32_denorm_preserve = static_cast(traits.floatControls.shaderDenormPreserveFloat32), + .support_fp16_denorm_flush = static_cast(traits.floatControls.shaderDenormFlushToZeroFloat16), + .support_fp32_denorm_flush = static_cast(traits.floatControls.shaderDenormFlushToZeroFloat32), + .support_fp16_signed_zero_nan_preserve = static_cast(traits.floatControls.shaderSignedZeroInfNanPreserveFloat16), + .support_fp32_signed_zero_nan_preserve = static_cast(traits.floatControls.shaderSignedZeroInfNanPreserveFloat32), + .support_fp64_signed_zero_nan_preserve = static_cast(traits.floatControls.shaderSignedZeroInfNanPreserveFloat64), .support_explicit_workgroup_layout = false, - .support_vote = quirks.supportsSubgroupVote, - .support_viewport_index_layer_non_geometry = quirks.supportsShaderViewportIndexLayer, + .support_vote = traits.supportsSubgroupVote, + .support_viewport_index_layer_non_geometry = traits.supportsShaderViewportIndexLayer, .support_viewport_mask = false, - .support_typeless_image_loads = quirks.supportsImageReadWithoutFormat, - .support_demote_to_helper_invocation = quirks.supportsShaderDemoteToHelper, - .support_int64_atomics = quirks.supportsAtomicInt64, + .support_typeless_image_loads = traits.supportsImageReadWithoutFormat, + .support_demote_to_helper_invocation = traits.supportsShaderDemoteToHelper, + .support_int64_atomics = traits.supportsAtomicInt64, .support_derivative_control = true, .support_geometry_shader_passthrough = false, - .warp_size_potentially_larger_than_guest = TegraX1WarpSize < quirks.subgroupSize, + .warp_size_potentially_larger_than_guest = TegraX1WarpSize < traits.subgroupSize, .lower_left_origin_mode = false, .need_declared_frag_colors = false, }; diff --git a/app/src/main/cpp/skyline/gpu/quirk_manager.cpp b/app/src/main/cpp/skyline/gpu/trait_manager.cpp similarity index 96% rename from app/src/main/cpp/skyline/gpu/quirk_manager.cpp rename to app/src/main/cpp/skyline/gpu/trait_manager.cpp index 62a6d8a5..940ca6e0 100644 --- a/app/src/main/cpp/skyline/gpu/quirk_manager.cpp +++ b/app/src/main/cpp/skyline/gpu/trait_manager.cpp @@ -2,10 +2,10 @@ // Copyright © 2021 Skyline Team and Contributors (https://github.com/skyline-emu/) #include -#include "quirk_manager.h" +#include "trait_manager.h" namespace skyline::gpu { - QuirkManager::QuirkManager(const DeviceFeatures2 &deviceFeatures2, DeviceFeatures2 &enabledFeatures2, const std::vector &deviceExtensions, std::vector> &enabledExtensions, const DeviceProperties2 &deviceProperties2) { + TraitManager::TraitManager(const DeviceFeatures2 &deviceFeatures2, DeviceFeatures2 &enabledFeatures2, const std::vector &deviceExtensions, std::vector> &enabledExtensions, const DeviceProperties2 &deviceProperties2) { bool hasCustomBorderColorExtension{}, hasShaderAtomicInt64{}, hasShaderFloat16Int8Ext{}, hasShaderDemoteToHelper{}; bool supportsUniformBufferStandardLayout{}; // We require VK_KHR_uniform_buffer_standard_layout but assume it is implicitly supported even when not present @@ -114,7 +114,14 @@ namespace skyline::gpu { subgroupSize = deviceProperties2.get().subgroupSize; } - void QuirkManager::ApplyDriverPatches(const vk::raii::Context &context) { + std::string TraitManager::Summary() { + return fmt::format( + "\n* Supports U8 Indices: {}\n* Supports Sampler Mirror Clamp To Edge: {}\n* Supports Sampler Reduction Mode: {}\n* Supports Custom Border Color (Without Format): {}\n* Supports Last Provoking Vertex: {}\n* Supports Logical Operations: {}\n* Supports Vertex Attribute Divisor: {}\n* Supports Vertex Attribute Zero Divisor: {}\n* Supports Multiple Viewports: {}\n* Supports Shader Viewport Index: {}\n* Supports SPIR-V 1.4: {}\n* Supports Shader Invocation Demotion: {}\n* Supports 16-bit FP: {}\n* Supports 8-bit Integers: {}\n* Supports 16-bit Integers: {}\n* Supports 64-bit Integers: {}\n* Supports Atomic 64-bit Integers: {}\n* Supports Floating Point Behavior Control: {}\n* Supports Image Read Without Format: {}\n* Supports Subgroup Vote: {}\n* Subgroup Size: {}", + supportsUint8Indices, supportsSamplerMirrorClampToEdge, supportsSamplerReductionMode, supportsCustomBorderColor, supportsLastProvokingVertex, supportsLogicOp, supportsVertexAttributeDivisor, supportsVertexAttributeZeroDivisor, supportsMultipleViewports, supportsShaderViewportIndexLayer, supportsSpirv14, supportsShaderDemoteToHelper, supportsFloat16, supportsInt8, supportsInt16, supportsInt64, supportsAtomicInt64, supportsFloatControls, supportsImageReadWithoutFormat, supportsSubgroupVote, subgroupSize + ); + } + + void TraitManager::ApplyDriverPatches(const vk::raii::Context &context) { // Create an instance without validation layers in order to get pointers to the functions we need to patch from the driver vk::ApplicationInfo applicationInfo{ .apiVersion = VK_API_VERSION_1_0, @@ -128,7 +135,7 @@ namespace skyline::gpu { auto properties{physicalDevice.getProperties()}; // Apply BCeNabler for Adreno devices - auto type{adrenotools_get_bcn_type( VK_VERSION_MAJOR(properties.driverVersion), VK_VERSION_MINOR(properties.driverVersion), properties.vendorID)}; + auto type{adrenotools_get_bcn_type(VK_VERSION_MAJOR(properties.driverVersion), VK_VERSION_MINOR(properties.driverVersion), properties.vendorID)}; if (type == ADRENOTOOLS_BCN_PATCH) { if (adrenotools_patch_bcn(reinterpret_cast(physicalDevice.getDispatcher()->vkGetPhysicalDeviceFormatProperties))) Logger::Info("Applied BCeNabler patch"); @@ -138,11 +145,4 @@ namespace skyline::gpu { Logger::Info("BCeNabler skipped, blob BCN support is present"); } } - - std::string QuirkManager::Summary() { - return fmt::format( - "\n* Supports U8 Indices: {}\n* Supports Sampler Mirror Clamp To Edge: {}\n* Supports Sampler Reduction Mode: {}\n* Supports Custom Border Color (Without Format): {}\n* Supports Last Provoking Vertex: {}\n* Supports Logical Operations: {}\n* Supports Vertex Attribute Divisor: {}\n* Supports Vertex Attribute Zero Divisor: {}\n* Supports Multiple Viewports: {}\n* Supports Shader Viewport Index: {}\n* Supports SPIR-V 1.4: {}\n* Supports Shader Invocation Demotion: {}\n* Supports 16-bit FP: {}\n* Supports 8-bit Integers: {}\n* Supports 16-bit Integers: {}\n* Supports 64-bit Integers: {}\n* Supports Atomic 64-bit Integers: {}\n* Supports Floating Point Behavior Control: {}\n* Supports Image Read Without Format: {}\n* Supports Subgroup Vote: {}\n* Subgroup Size: {}", - supportsUint8Indices, supportsSamplerMirrorClampToEdge, supportsSamplerReductionMode, supportsCustomBorderColor, supportsLastProvokingVertex, supportsLogicOp, supportsVertexAttributeDivisor, supportsVertexAttributeZeroDivisor, supportsMultipleViewports, supportsShaderViewportIndexLayer, supportsSpirv14, supportsShaderDemoteToHelper, supportsFloat16, supportsInt8, supportsInt16, supportsInt64, supportsAtomicInt64, supportsFloatControls, supportsImageReadWithoutFormat, supportsSubgroupVote, subgroupSize - ); - } } diff --git a/app/src/main/cpp/skyline/gpu/quirk_manager.h b/app/src/main/cpp/skyline/gpu/trait_manager.h similarity index 94% rename from app/src/main/cpp/skyline/gpu/quirk_manager.h rename to app/src/main/cpp/skyline/gpu/trait_manager.h index 495cd3fc..a652d166 100644 --- a/app/src/main/cpp/skyline/gpu/quirk_manager.h +++ b/app/src/main/cpp/skyline/gpu/trait_manager.h @@ -8,9 +8,9 @@ namespace skyline::gpu { /** - * @brief Checks and stores all the quirks of the host GPU discovered at runtime + * @brief Checks and stores all the traits of the host GPU discovered at runtime */ - class QuirkManager { + class TraitManager { public: bool supportsUint8Indices{}; //!< If the device supports using uint8 indices in index buffers (with VK_EXT_index_type_uint8) bool supportsSamplerMirrorClampToEdge{}; //!< If the device supports a mirrored clamp to edge as a sampler address mode (with VK_KHR_sampler_mirror_clamp_to_edge) @@ -35,13 +35,13 @@ namespace skyline::gpu { bool supportsSubgroupVote{}; //!< If subgroup votes are supported in shaders with SPV_KHR_subgroup_vote u32 subgroupSize{}; //!< Size of a subgroup on the host GPU - QuirkManager() = default; + TraitManager() = default; using DeviceProperties2 = vk::StructureChain; using DeviceFeatures2 = vk::StructureChain; - QuirkManager(const DeviceFeatures2 &deviceFeatures2, DeviceFeatures2 &enabledFeatures2, const std::vector &deviceExtensions, std::vector> &enabledExtensions, const DeviceProperties2 &deviceProperties2); + TraitManager(const DeviceFeatures2 &deviceFeatures2, DeviceFeatures2 &enabledFeatures2, const std::vector &deviceExtensions, std::vector> &enabledExtensions, const DeviceProperties2 &deviceProperties2); /** * @brief Applies driver specific binary patches to the driver (e.g. BCeNabler) @@ -49,7 +49,7 @@ namespace skyline::gpu { void ApplyDriverPatches(const vk::raii::Context &context); /** - * @return A summary of all the GPU quirks as a human-readable string + * @return A summary of all the GPU traits as a human-readable string */ std::string Summary(); };