Merge pull request #6188 from lioncash/bits

vk_texture_cache: Make use of bit_cast where applicable
This commit is contained in:
bunnei 2021-04-13 16:44:49 -07:00 committed by GitHub
commit 62b560e8e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -7,6 +7,8 @@
#include <span> #include <span>
#include <vector> #include <vector>
#include "common/bit_cast.h"
#include "video_core/engines/fermi_2d.h" #include "video_core/engines/fermi_2d.h"
#include "video_core/renderer_vulkan/blit_image.h" #include "video_core/renderer_vulkan/blit_image.h"
#include "video_core/renderer_vulkan/maxwell_to_vk.h" #include "video_core/renderer_vulkan/maxwell_to_vk.h"
@ -1062,14 +1064,13 @@ vk::ImageView ImageView::MakeDepthStencilView(VkImageAspectFlags aspect_mask) {
Sampler::Sampler(TextureCacheRuntime& runtime, const Tegra::Texture::TSCEntry& tsc) { Sampler::Sampler(TextureCacheRuntime& runtime, const Tegra::Texture::TSCEntry& tsc) {
const auto& device = runtime.device; const auto& device = runtime.device;
const bool arbitrary_borders = runtime.device.IsExtCustomBorderColorSupported(); const bool arbitrary_borders = runtime.device.IsExtCustomBorderColorSupported();
const std::array<float, 4> color = tsc.BorderColor(); const auto color = tsc.BorderColor();
// C++20 bit_cast
VkClearColorValue border_color;
std::memcpy(&border_color, &color, sizeof(color));
const VkSamplerCustomBorderColorCreateInfoEXT border_ci{ const VkSamplerCustomBorderColorCreateInfoEXT border_ci{
.sType = VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT, .sType = VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT,
.pNext = nullptr, .pNext = nullptr,
.customBorderColor = border_color, // TODO: Make use of std::bit_cast once libc++ supports it.
.customBorderColor = Common::BitCast<VkClearColorValue>(color),
.format = VK_FORMAT_UNDEFINED, .format = VK_FORMAT_UNDEFINED,
}; };
const void* pnext = nullptr; const void* pnext = nullptr;