diff --git a/README.md b/README.md index 18f973c4c..c14f3ad71 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ yuzu emulator early access ============= -This is the source code for early-access 4162. +This is the source code for early-access 4163. ## Legal Notice diff --git a/src/audio_core/sink/oboe_sink.cpp b/src/audio_core/sink/oboe_sink.cpp index e61841172..466a9cc8e 100755 --- a/src/audio_core/sink/oboe_sink.cpp +++ b/src/audio_core/sink/oboe_sink.cpp @@ -67,9 +67,13 @@ public: oboe::AudioStreamBuilder builder; const auto result = ConfigureBuilder(builder, direction)->openStream(temp_stream); - ASSERT(result == oboe::Result::OK); + if (result == oboe::Result::OK) { + return temp_stream->getChannelCount() >= 6 ? 6 : 2; + } - return temp_stream->getChannelCount() >= 6 ? 6 : 2; + LOG_ERROR(Audio_Sink, "Failed to open {} stream. Using default channel count 2", + direction == oboe::Direction::Output ? "output" : "input"); + return 2; } protected: diff --git a/src/core/hle/service/vi/conductor.h b/src/core/hle/service/vi/conductor.h index 52e3595d2..6dd105dd4 100755 --- a/src/core/hle/service/vi/conductor.h +++ b/src/core/hle/service/vi/conductor.h @@ -10,6 +10,8 @@ #include "common/polyfill_thread.h" #include "common/thread.h" +#include "core/hle/service/vi/vsync_manager.h" + namespace Core { class System; } @@ -26,7 +28,6 @@ namespace Service::VI { class Container; class DisplayList; -class VsyncManager; class Conductor { public: diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index b11cf9acd..90b91f0be 100755 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -125,9 +125,11 @@ VkRect2D GetScissorState(const Maxwell& regs, size_t index, u32 up_scale = 1, u3 return value < 0 ? std::min(converted_value - acumm, -1) : std::max(converted_value + acumm, 1); }; + const bool lower_left = regs.window_origin.mode != Maxwell::WindowOrigin::Mode::UpperLeft; + const s32 y_adj = lower_left ? scale_up(regs.surface_clip.height - (src.max_y - src.min_y)) : 0; if (src.enable) { scissor.offset.x = scale_up(static_cast(src.min_x)); - scissor.offset.y = scale_up(static_cast(src.min_y)); + scissor.offset.y = scale_up(static_cast(src.min_y)) + y_adj; scissor.extent.width = scale_up(src.max_x - src.min_x); scissor.extent.height = scale_up(src.max_y - src.min_y); } else {