summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Morph2022-06-15 07:06:10 -0400
committerGravatar Morph2022-06-15 07:12:16 -0400
commit4572634a4ee6f2786ec067f12a2f8c5501954d07 (patch)
tree79d7bf7803e5ab8476117fb51b832cd7a802593f /src
parentMerge pull request #8383 from Morph1984/shadow-of-the-past (diff)
downloadyuzu-4572634a4ee6f2786ec067f12a2f8c5501954d07.tar.gz
yuzu-4572634a4ee6f2786ec067f12a2f8c5501954d07.tar.xz
yuzu-4572634a4ee6f2786ec067f12a2f8c5501954d07.zip
vk_compute_pass: Explicitly cast to VkAccessFlags
According to the standard, a narrowing conversion is an implicit conversion from an integer or unscoped enumeration type to an integer type that cannot represent all the values of the original type, except when the value is a literal or constant expression. MSVC, unlike GCC or Clang, determines this to be a narrowing conversion despite the enumeration exclusively containing values that fit within the range of a 32 bit integer, emitting a warning since designated initializers prohibit narrowing conversions. To solve this, explicitly cast to the type we are initializing.
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_vulkan/vk_compute_pass.cpp51
1 files changed, 26 insertions, 25 deletions
diff --git a/src/video_core/renderer_vulkan/vk_compute_pass.cpp b/src/video_core/renderer_vulkan/vk_compute_pass.cpp
index a3d478837..4cba777e6 100644
--- a/src/video_core/renderer_vulkan/vk_compute_pass.cpp
+++ b/src/video_core/renderer_vulkan/vk_compute_pass.cpp
@@ -328,31 +328,32 @@ void ASTCDecoderPass::Assemble(Image& image, const StagingBufferRef& map,
328 const VkImageAspectFlags aspect_mask = image.AspectMask(); 328 const VkImageAspectFlags aspect_mask = image.AspectMask();
329 const VkImage vk_image = image.Handle(); 329 const VkImage vk_image = image.Handle();
330 const bool is_initialized = image.ExchangeInitialization(); 330 const bool is_initialized = image.ExchangeInitialization();
331 scheduler.Record( 331 scheduler.Record([vk_pipeline, vk_image, aspect_mask,
332 [vk_pipeline, vk_image, aspect_mask, is_initialized](vk::CommandBuffer cmdbuf) { 332 is_initialized](vk::CommandBuffer cmdbuf) {
333 const VkImageMemoryBarrier image_barrier{ 333 const VkImageMemoryBarrier image_barrier{
334 .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, 334 .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
335 .pNext = nullptr, 335 .pNext = nullptr,
336 .srcAccessMask = is_initialized ? VK_ACCESS_SHADER_WRITE_BIT : VK_ACCESS_NONE, 336 .srcAccessMask = static_cast<VkAccessFlags>(is_initialized ? VK_ACCESS_SHADER_WRITE_BIT
337 .dstAccessMask = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT, 337 : VK_ACCESS_NONE),
338 .oldLayout = is_initialized ? VK_IMAGE_LAYOUT_GENERAL : VK_IMAGE_LAYOUT_UNDEFINED, 338 .dstAccessMask = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT,
339 .newLayout = VK_IMAGE_LAYOUT_GENERAL, 339 .oldLayout = is_initialized ? VK_IMAGE_LAYOUT_GENERAL : VK_IMAGE_LAYOUT_UNDEFINED,
340 .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, 340 .newLayout = VK_IMAGE_LAYOUT_GENERAL,
341 .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, 341 .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
342 .image = vk_image, 342 .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
343 .subresourceRange{ 343 .image = vk_image,
344 .aspectMask = aspect_mask, 344 .subresourceRange{
345 .baseMipLevel = 0, 345 .aspectMask = aspect_mask,
346 .levelCount = VK_REMAINING_MIP_LEVELS, 346 .baseMipLevel = 0,
347 .baseArrayLayer = 0, 347 .levelCount = VK_REMAINING_MIP_LEVELS,
348 .layerCount = VK_REMAINING_ARRAY_LAYERS, 348 .baseArrayLayer = 0,
349 }, 349 .layerCount = VK_REMAINING_ARRAY_LAYERS,
350 }; 350 },
351 cmdbuf.PipelineBarrier(is_initialized ? VK_PIPELINE_STAGE_ALL_COMMANDS_BIT 351 };
352 : VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, 352 cmdbuf.PipelineBarrier(is_initialized ? VK_PIPELINE_STAGE_ALL_COMMANDS_BIT
353 VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, 0, image_barrier); 353 : VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
354 cmdbuf.BindPipeline(VK_PIPELINE_BIND_POINT_COMPUTE, vk_pipeline); 354 VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, 0, image_barrier);
355 }); 355 cmdbuf.BindPipeline(VK_PIPELINE_BIND_POINT_COMPUTE, vk_pipeline);
356 });
356 for (const VideoCommon::SwizzleParameters& swizzle : swizzles) { 357 for (const VideoCommon::SwizzleParameters& swizzle : swizzles) {
357 const size_t input_offset = swizzle.buffer_offset + map.offset; 358 const size_t input_offset = swizzle.buffer_offset + map.offset;
358 const u32 num_dispatches_x = Common::DivCeil(swizzle.num_tiles.width, 8U); 359 const u32 num_dispatches_x = Common::DivCeil(swizzle.num_tiles.width, 8U);