diff --git a/rpcs3/Emu/RSX/Common/surface_cache_dma.hpp b/rpcs3/Emu/RSX/Common/surface_cache_dma.hpp index da6535e86b..cbe97f9987 100644 --- a/rpcs3/Emu/RSX/Common/surface_cache_dma.hpp +++ b/rpcs3/Emu/RSX/Common/surface_cache_dma.hpp @@ -21,6 +21,7 @@ namespace rsx using buffer_object_storage_type = typename Traits::buffer_object_storage_type; using buffer_object_type = typename Traits::buffer_object_type; + using command_list_type = typename Traits::command_list_type; struct memory_buffer_entry_t { @@ -48,7 +49,7 @@ namespace rsx } } - surface_cache_dma& with_range(Traits::command_list_type cmd, const utils::address_range& range) + surface_cache_dma& with_range(command_list_type cmd, const utils::address_range& range) { // Prepare underlying memory so that the range specified is provisioned and contiguous // 1. Check if we have a pre-existing bo layer diff --git a/rpcs3/Emu/RSX/Common/surface_utils.h b/rpcs3/Emu/RSX/Common/surface_utils.h index 1ead7ffb41..993933d19d 100644 --- a/rpcs3/Emu/RSX/Common/surface_utils.h +++ b/rpcs3/Emu/RSX/Common/surface_utils.h @@ -180,20 +180,20 @@ namespace rsx virtual bool is_depth_surface() const = 0; virtual void release_ref(image_storage_type) const = 0; - template - u32 get_surface_width() const + template + T get_surface_width() const { if constexpr (Metrics == rsx::surface_metrics::samples) { - return surface_width * samples_x; + return static_cast(surface_width * samples_x); } else if constexpr (Metrics == rsx::surface_metrics::pixels) { - return surface_width; + return static_cast(surface_width); } else if constexpr (Metrics == rsx::surface_metrics::bytes) { - return native_pitch; + return static_cast(native_pitch); } else { @@ -201,20 +201,20 @@ namespace rsx } } - template - u32 get_surface_height() const + template + T get_surface_height() const { if constexpr (Metrics == rsx::surface_metrics::samples) { - return surface_height * samples_y; + return static_cast(surface_height * samples_y); } else if constexpr (Metrics == rsx::surface_metrics::pixels) { - return surface_height; + return static_cast(surface_height); } else if constexpr (Metrics == rsx::surface_metrics::bytes) { - return surface_height * samples_y; + return static_cast(surface_height * samples_y); } else { diff --git a/rpcs3/Emu/RSX/VK/VKRenderTargets.h b/rpcs3/Emu/RSX/VK/VKRenderTargets.h index a867587e70..1c6c2d40e5 100644 --- a/rpcs3/Emu/RSX/VK/VKRenderTargets.h +++ b/rpcs3/Emu/RSX/VK/VKRenderTargets.h @@ -481,8 +481,8 @@ namespace vk const bool is_scaled = surface->width() != surface->surface_width; if (is_scaled) { - const areai src_rect = { 0, 0, source->width(), source->height() }; - const areai dst_rect = { 0, 0, surface->get_surface_width(), surface->get_surface_height() }; + const areai src_rect = { 0, 0, static_cast(source->width()), static_cast(source->height()) }; + const areai dst_rect = { 0, 0, surface->get_surface_width(), surface->get_surface_height() }; auto scratch = vk::get_typeless_helper(source->format(), source->format_class(), dst_rect.x2, dst_rect.y2); vk::copy_scaled_image(cmd, source, scratch, src_rect, dst_rect, 1, true, VK_FILTER_NEAREST); @@ -540,10 +540,10 @@ namespace vk } // Create dst - auto pdev = cmd.get_command_pool().owner; - auto dst = new vk::buffer(*pdev, + auto& dev = cmd.get_command_pool().get_owner(); + auto dst = new vk::buffer(dev, required_bo_size, - pdev->get_memory_mapping().device_local, 0, + dev.get_memory_mapping().device_local, 0, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_TRANSFER_SRC_BIT, 0, VMM_ALLOCATION_POOL_SURFACE_CACHE);