Browse Source

[vulkan] Adjusted image view usage flags to ensure compatibility with image format in TextureCache

CamilleLaVey 1 day ago
parent
commit
55a0504513
  1. 1
      src/video_core/renderer_vulkan/vk_rasterizer.cpp
  2. 7
      src/video_core/renderer_vulkan/vk_texture_cache.cpp

1
src/video_core/renderer_vulkan/vk_rasterizer.cpp

@ -286,6 +286,7 @@ void RasterizerVulkan::PrepareDraw(bool is_indexed, Func&& draw_func) {
maxwell3d->regs.zpass_pixel_count_enable); maxwell3d->regs.zpass_pixel_count_enable);
UpdateDynamicStates(); UpdateDynamicStates();
scheduler.RequestRenderpass(texture_cache.GetFramebuffer());
draw_func(); draw_func();
} }

7
src/video_core/renderer_vulkan/vk_texture_cache.cpp

@ -2112,7 +2112,10 @@ ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewI
} }
} }
const auto format_info = MaxwellToVK::SurfaceFormat(*device, FormatType::Optimal, true, format); const auto format_info = MaxwellToVK::SurfaceFormat(*device, FormatType::Optimal, true, format);
if (ImageUsageFlags(format_info, format) != image.UsageFlags()) {
const VkImageUsageFlags desired_view_usage = ImageUsageFlags(format_info, format);
const VkImageUsageFlags image_usage = image.UsageFlags();
const VkImageUsageFlags view_usage = desired_view_usage & image_usage;
if (desired_view_usage != image_usage) {
LOG_WARNING(Render_Vulkan, LOG_WARNING(Render_Vulkan,
"Image view format {} has different usage flags than image format {}", format, "Image view format {} has different usage flags than image format {}", format,
image.info.format); image.info.format);
@ -2120,7 +2123,7 @@ ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewI
const VkImageViewUsageCreateInfo image_view_usage{ const VkImageViewUsageCreateInfo image_view_usage{
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO, .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
.pNext = nullptr, .pNext = nullptr,
.usage = ImageUsageFlags(format_info, format),
.usage = view_usage,
}; };
const VkImageViewCreateInfo create_info{ const VkImageViewCreateInfo create_info{
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,

Loading…
Cancel
Save