From 079e4aa205917d9bcc22bf596e432f4eaf5cfa02 Mon Sep 17 00:00:00 2001 From: GPUCode Date: Fri, 7 Oct 2022 14:39:12 +0300 Subject: [PATCH] citra: Fix build issues with MinGW and MSVC --- src/citra/citra.cpp | 1 + src/core/arm/dyncom/arm_dyncom_trans.cpp | 2 +- .../renderer_opengl/gl_texture_runtime.cpp | 1 + .../renderer_vulkan/vk_instance.cpp | 2 - src/video_core/renderer_vulkan/vk_instance.h | 1 + src/video_core/renderer_vulkan/vk_platform.h | 2 +- .../renderer_vulkan/vk_rasterizer.cpp | 10 ++--- .../renderer_vulkan/vk_swapchain.cpp | 45 ++++++++++--------- .../renderer_vulkan/vk_texture_runtime.cpp | 3 +- src/video_core/texture/texture_decode.cpp | 8 ++-- 10 files changed, 37 insertions(+), 38 deletions(-) diff --git a/src/citra/citra.cpp b/src/citra/citra.cpp index c78a19dfd..9c816ef87 100644 --- a/src/citra/citra.cpp +++ b/src/citra/citra.cpp @@ -19,6 +19,7 @@ #include "common/microprofile.h" #include "common/scm_rev.h" #include "common/scope_exit.h" +#include "common/string_util.h" #include "core/core.h" #include "core/dumping/backend.h" #include "core/frontend/applets/default_applets.h" diff --git a/src/core/arm/dyncom/arm_dyncom_trans.cpp b/src/core/arm/dyncom/arm_dyncom_trans.cpp index 729c40797..77dafbac7 100644 --- a/src/core/arm/dyncom/arm_dyncom_trans.cpp +++ b/src/core/arm/dyncom/arm_dyncom_trans.cpp @@ -63,7 +63,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(add)(unsigned int inst, int index) { return inst_base; } -static ARM_INST_PTR INTERPRETER_TRANSLATE (and)(unsigned int inst, int index) { +static ARM_INST_PTR INTERPRETER_TRANSLATE(and)(unsigned int inst, int index) { arm_inst* inst_base = (arm_inst*)AllocBuffer(sizeof(arm_inst) + sizeof(and_inst)); and_inst* inst_cream = (and_inst*)inst_base->component; diff --git a/src/video_core/renderer_opengl/gl_texture_runtime.cpp b/src/video_core/renderer_opengl/gl_texture_runtime.cpp index f87adbf1c..2c3925d02 100644 --- a/src/video_core/renderer_opengl/gl_texture_runtime.cpp +++ b/src/video_core/renderer_opengl/gl_texture_runtime.cpp @@ -2,6 +2,7 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include #include "common/scope_exit.h" #include "video_core/rasterizer_cache/utils.h" #include "video_core/renderer_opengl/gl_driver.h" diff --git a/src/video_core/renderer_vulkan/vk_instance.cpp b/src/video_core/renderer_vulkan/vk_instance.cpp index 9b6b32c7f..e66cbb166 100644 --- a/src/video_core/renderer_vulkan/vk_instance.cpp +++ b/src/video_core/renderer_vulkan/vk_instance.cpp @@ -41,7 +41,6 @@ vk::Format ToVkFormat(VideoCore::PixelFormat format) { Instance::Instance() { // Fetch instance independant function pointers - vk::DynamicLoader dl; auto vkGetInstanceProcAddr = dl.getProcAddress("vkGetInstanceProcAddr"); VULKAN_HPP_DEFAULT_DISPATCHER.init(vkGetInstanceProcAddr); @@ -71,7 +70,6 @@ Instance::Instance(Frontend::EmuWindow& window, u32 physical_device_index, bool auto window_info = window.GetWindowInfo(); // Fetch instance independant function pointers - vk::DynamicLoader dl; auto vkGetInstanceProcAddr = dl.getProcAddress("vkGetInstanceProcAddr"); VULKAN_HPP_DEFAULT_DISPATCHER.init(vkGetInstanceProcAddr); diff --git a/src/video_core/renderer_vulkan/vk_instance.h b/src/video_core/renderer_vulkan/vk_instance.h index a1dced109..8051aeed0 100644 --- a/src/video_core/renderer_vulkan/vk_instance.h +++ b/src/video_core/renderer_vulkan/vk_instance.h @@ -133,6 +133,7 @@ private: void CreateAllocator(); private: + vk::DynamicLoader dl; vk::Device device; vk::PhysicalDevice physical_device; vk::Instance instance; diff --git a/src/video_core/renderer_vulkan/vk_platform.h b/src/video_core/renderer_vulkan/vk_platform.h index 7316bcc56..078ed8df9 100644 --- a/src/video_core/renderer_vulkan/vk_platform.h +++ b/src/video_core/renderer_vulkan/vk_platform.h @@ -11,7 +11,7 @@ namespace Frontend { class EmuWindow; enum class WindowSystemType : u8; -} +} // namespace Frontend namespace Vulkan { diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index c249891b1..630123a19 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -185,10 +185,7 @@ RasterizerVulkan::~RasterizerVulkan() { } const VideoCore::HostTextureTag tag = { - .format = VideoCore::PixelFormat::RGBA8, - .width = 1, - .height = 1 - }; + .format = VideoCore::PixelFormat::RGBA8, .width = 1, .height = 1}; runtime.Recycle(tag, std::move(default_texture)); device.destroySampler(default_sampler); @@ -1791,10 +1788,9 @@ void RasterizerVulkan::SyncDepthWriteMask() { void RasterizerVulkan::SyncStencilTest() { const auto& regs = Pica::g_state.regs; - const bool test_enable = - regs.framebuffer.output_merger.stencil_test.enable && - regs.framebuffer.framebuffer.depth_format == Pica::FramebufferRegs::DepthFormat::D24S8; const auto& stencil_test = regs.framebuffer.output_merger.stencil_test; + const bool test_enable = stencil_test.enable && regs.framebuffer.framebuffer.depth_format == + Pica::FramebufferRegs::DepthFormat::D24S8; vk::CommandBuffer command_buffer = scheduler.GetRenderCommandBuffer(); command_buffer.setStencilCompareMask(vk::StencilFaceFlagBits::eFrontAndBack, diff --git a/src/video_core/renderer_vulkan/vk_swapchain.cpp b/src/video_core/renderer_vulkan/vk_swapchain.cpp index b0bb774d6..a766023e2 100644 --- a/src/video_core/renderer_vulkan/vk_swapchain.cpp +++ b/src/video_core/renderer_vulkan/vk_swapchain.cpp @@ -69,7 +69,6 @@ void Swapchain::Create(u32 width, u32 height) { device.destroySwapchainKHR(old_swapchain); } - vk::RenderPass present_renderpass = renderpass_cache.GetPresentRenderpass(); auto images = device.getSwapchainImagesKHR(swapchain); // Destroy the previous images @@ -81,31 +80,33 @@ void Swapchain::Create(u32 width, u32 height) { swapchain_images.clear(); swapchain_images.resize(images.size()); - std::ranges::transform(images, swapchain_images.begin(), [&](vk::Image image) -> Image { - const vk::ImageViewCreateInfo view_info = { - .image = image, - .viewType = vk::ImageViewType::e2D, - .format = surface_format.format, - .subresourceRange = {.aspectMask = vk::ImageAspectFlagBits::eColor, - .baseMipLevel = 0, - .levelCount = 1, - .baseArrayLayer = 0, - .layerCount = 1}}; + std::ranges::transform( + images, swapchain_images.begin(), [device, this](vk::Image image) -> Image { + const vk::ImageViewCreateInfo view_info = { + .image = image, + .viewType = vk::ImageViewType::e2D, + .format = surface_format.format, + .subresourceRange = {.aspectMask = vk::ImageAspectFlagBits::eColor, + .baseMipLevel = 0, + .levelCount = 1, + .baseArrayLayer = 0, + .layerCount = 1}}; - vk::ImageView image_view = device.createImageView(view_info); - const std::array attachments{image_view}; + vk::ImageView image_view = device.createImageView(view_info); + const std::array attachments = {image_view}; - const vk::FramebufferCreateInfo framebuffer_info = {.renderPass = present_renderpass, - .attachmentCount = 1, - .pAttachments = attachments.data(), - .width = extent.width, - .height = extent.height, - .layers = 1}; + const vk::FramebufferCreateInfo framebuffer_info = { + .renderPass = renderpass_cache.GetPresentRenderpass(), + .attachmentCount = 1, + .pAttachments = attachments.data(), + .width = extent.width, + .height = extent.height, + .layers = 1}; - vk::Framebuffer framebuffer = device.createFramebuffer(framebuffer_info); + vk::Framebuffer framebuffer = device.createFramebuffer(framebuffer_info); - return Image{.image = image, .image_view = image_view, .framebuffer = framebuffer}; - }); + return Image{.image = image, .image_view = image_view, .framebuffer = framebuffer}; + }); } // Wait for maximum of 1 second diff --git a/src/video_core/renderer_vulkan/vk_texture_runtime.cpp b/src/video_core/renderer_vulkan/vk_texture_runtime.cpp index b841dfb28..e4f9f9e6d 100644 --- a/src/video_core/renderer_vulkan/vk_texture_runtime.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_runtime.cpp @@ -2,14 +2,15 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include #include "video_core/rasterizer_cache/utils.h" #include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/renderer_vulkan/vk_renderpass_cache.h" #include "video_core/renderer_vulkan/vk_task_scheduler.h" #include "video_core/renderer_vulkan/vk_texture_runtime.h" -#include #include +#include namespace Vulkan { diff --git a/src/video_core/texture/texture_decode.cpp b/src/video_core/texture/texture_decode.cpp index 87a4c6beb..3e5212f73 100644 --- a/src/video_core/texture/texture_decode.cpp +++ b/src/video_core/texture/texture_decode.cpp @@ -252,8 +252,8 @@ void ConvertABGRToRGBA(std::span source, std::span d } void ConvertD32S8ToD24S8(std::span source, std::span dest) { - u32 depth_offset = 0; - u32 stencil_offset = 4 * source.size() / 5; + std::size_t depth_offset = 0; + std::size_t stencil_offset = 4 * source.size() / 5; for (std::size_t i = 0; i < dest.size(); i += 4) { float depth; std::memcpy(&depth, source.data() + depth_offset, sizeof(float)); @@ -287,8 +287,8 @@ void ConvertRGBA8ToRGBA4(std::span source, std::span } void InterleaveD24S8(std::span source, std::span dest) { - u32 depth_offset = 0; - u32 stencil_offset = 3 * source.size() / 4; + std::size_t depth_offset = 0; + std::size_t stencil_offset = 3 * source.size() / 4; for (std::size_t i = 0; i < dest.size(); i += 4) { dest[i] = source[stencil_offset]; std::memcpy(dest.data() + i + 1, source.data() + depth_offset, 3);