Compare commits

...

33 Commits

Author SHA1 Message Date
Darkywolf999 33089134d0 d 2021-10-26 11:39:54 +02:00
Darkywolf999 6051fc9336 d 2021-10-26 11:16:28 +02:00
Darkywolf999 eaa81211b4 Revert "Revert "Revert "renderers: Disable async shader compilation"""
This reverts commit b113372693.
2021-10-26 10:48:33 +02:00
Darkywolf999 1a1aef2d2a Merge branch 'yuzu-emu:master' into master 2021-10-26 10:45:07 +02:00
Darkywolf999 5dcab5a625 Audio mute button 2021-10-26 10:22:02 +02:00
Morph 63ed7d9af7 Merge pull request #7193 from FernandoS27/idle
SVC: Implement svcInfo:IdleTickCount
2021-10-25 09:17:49 -04:00
Darkywolf999 412678c879 Merge branch 'yuzu-emu:master' into master 2021-10-25 11:18:18 +02:00
Ameer J 3c8c17be4d Merge pull request #7218 from bylaws/aswdqdsam
Fixup channel submit IOCTL syncpoint parameters
2021-10-24 19:35:00 -04:00
Ameer J aed5878dd3 Merge pull request #7222 from FernandoS27/fix-indixed-textures-again
TexturePass: Fix clamping  of images as this allowed negative indices.
2021-10-24 15:16:31 -04:00
Mai M 3be87bed8d Merge pull request #7221 from astrelsky/stepfix
Fixed ARM_Dynamic_64 Step
2021-10-24 14:43:40 -04:00
Andrew Strelsky 31b9797296 Fixed ARM_Dynamic_64 Step 2021-10-24 11:16:32 -04:00
Darkywolf999 58782739e5 Merge branch 'yuzu-emu:master' into master 2021-10-24 09:11:12 +02:00
Fernando S 5299554bb0 Merge pull request #7206 from vonchenplus/fix_vulkan_viewport_issue
Vulkan Rasterizer: Fix viewport issue
2021-10-24 01:53:04 +02:00
Billy Laws 2dbef58eeb Fixup channel submit IOCTL syncpoint parameters
The current arguments worked by happenstance as games only ever submit
one syncpoint and request one fence back, if a game were to do something
other than this then the arguments would've been parsed entirely wrong.
2021-10-24 00:01:35 +01:00
Feng Chen b769bea61b Fix vulkan viewport issue 2021-10-22 22:56:31 +08:00
Darkywolf999 26cf341d75 Merge branch 'yuzu-emu:master' into master 2021-10-21 10:37:31 +02:00
Darkywolf999 ef545fada5 Merge branch 'yuzu-emu:master' into master 2021-10-18 13:44:49 +02:00
Fernando Sahmkow da6673e79a SVC: Implement svcInfo:IdleTickCount
Used by the Witcher 3
2021-10-16 20:33:44 +02:00
Darkywolf999 61aa5b13fb Merge branch 'master' of https://github.com/Darkywolf999/yuzu 2021-10-16 08:12:39 +02:00
Darkywolf999 b113372693 Revert "Revert "renderers: Disable async shader compilation""
This reverts commit 3c6d440015.
2021-10-16 08:12:27 +02:00
Darkywolf999 62da8e3585 Revert "Revert "renderers: Disable async shader compilation""
This reverts commit 3c6d440015.
2021-10-16 07:59:49 +02:00
Darkywolf999 b48b4b503f Merge branch 'yuzu-emu:master' into master 2021-10-16 07:56:58 +02:00
Darkywolf999 d8b1757cf9 Merge pull request #5 from Darkywolf999/Darkywolf999-patch-5
Update gl_device.cpp
2021-10-15 11:02:14 +02:00
Darkywolf999 8b433f1ff1 Update gl_device.cpp
fix for vertex explosions in diablo 2.
disabled GL_EXT_texture_shadow_lod & GLAD_GL_NV_vertex_buffer_unified_memory 
cannot find anything on opengl that this two are still in use also not on google.
2021-10-15 11:02:04 +02:00
Darkywolf999 9fdc9177b2 Merge pull request #4 from Darkywolf999/Darkywolf999-patch-4
Update gl_device.cpp
2021-10-14 22:00:58 +02:00
Darkywolf999 a5818a28a3 Update gl_device.cpp
revert everything only the memory stays for now to fix the screen render problem with this game.
will make other pr's for different problems.
2021-10-14 22:00:48 +02:00
Darkywolf999 e9bc4b71dc Merge pull request #3 from Darkywolf999/Darkywolf999-patch-3
Update gl_device.cpp
2021-10-14 18:42:26 +02:00
Darkywolf999 e54b0ff7a5 Update gl_device.cpp 2021-10-14 18:42:01 +02:00
Darkywolf999 ba5df1a663 Merge pull request #2 from Darkywolf999/Darkywolf999-patch-2
Update gl_device.cpp
2021-10-14 18:32:20 +02:00
Darkywolf999 f2a5511224 Update gl_device.cpp 2021-10-14 18:32:04 +02:00
Darkywolf999 bf7310e336 Merge pull request #1 from Darkywolf999/Darkywolf999-patch-1
Update gl_device.cpp
2021-10-14 18:28:19 +02:00
Darkywolf999 34ba75b98c Update gl_device.cpp 2021-10-14 18:27:22 +02:00
Darkywolf999 6e9b16426a Fix for Snack world and proberaly some other games that where rendered upside down or not correctly
Fix ? for blocking async on windows with intel and amd drivers for opengl

Maybe something is odd as this is my first contribution but please let me know if i did something not correctly.
2021-10-14 11:10:23 +02:00
9 changed files with 57 additions and 23 deletions
+1 -1
View File
@@ -263,7 +263,7 @@ void ARM_Dynarmic_64::Run() {
}
void ARM_Dynarmic_64::Step() {
cb->InterpreterFallback(jit->GetPC(), 1);
jit->Step();
}
ARM_Dynarmic_64::ARM_Dynarmic_64(System& system_, CPUInterrupts& interrupt_handlers_,
+5
View File
@@ -49,6 +49,11 @@ public:
/// Gets the current running thread
[[nodiscard]] KThread* GetCurrentThread() const;
/// Gets the idle thread
[[nodiscard]] KThread* GetIdleThread() const {
return idle_thread;
}
/// Returns true if the scheduler is idle
[[nodiscard]] bool IsIdle() const {
return GetCurrentThread() == idle_thread;
+17
View File
@@ -886,7 +886,24 @@ static ResultCode GetInfo(Core::System& system, u64* result, u64 info_id, Handle
*result = out_ticks;
return ResultSuccess;
}
case GetInfoType::IdleTickCount: {
if (handle == 0) {
LOG_ERROR(Kernel_SVC, "Thread handle does not exist, handle=0x{:08X}",
static_cast<Handle>(handle));
return ResultInvalidHandle;
}
if (info_sub_id != 0xFFFFFFFFFFFFFFFF && info_sub_id != system.CurrentCoreIndex()) {
LOG_ERROR(Kernel_SVC, "Core is not the current core, got {}", info_sub_id);
return ResultInvalidCombination;
}
const auto& scheduler = *system.Kernel().CurrentScheduler();
const auto* const idle_thread = scheduler.GetIdleThread();
*result = idle_thread->GetCpuTime();
return ResultSuccess;
}
default:
LOG_ERROR(Kernel_SVC, "Unimplemented svcGetInfo id=0x{:016X}", info_id);
return ResultInvalidEnumValue;
@@ -69,8 +69,7 @@ NvResult nvhost_nvdec_common::Submit(const std::vector<u8>& input, std::vector<u
std::vector<Reloc> relocs(params.relocation_count);
std::vector<u32> reloc_shifts(params.relocation_count);
std::vector<SyncptIncr> syncpt_increments(params.syncpoint_count);
std::vector<SyncptIncr> wait_checks(params.syncpoint_count);
std::vector<Fence> fences(params.fence_count);
std::vector<u32> fence_thresholds(params.fence_count);
// Slice input into their respective buffers
std::size_t offset = sizeof(IoctlSubmit);
@@ -78,15 +77,13 @@ NvResult nvhost_nvdec_common::Submit(const std::vector<u8>& input, std::vector<u
offset += SliceVectors(input, relocs, params.relocation_count, offset);
offset += SliceVectors(input, reloc_shifts, params.relocation_count, offset);
offset += SliceVectors(input, syncpt_increments, params.syncpoint_count, offset);
offset += SliceVectors(input, wait_checks, params.syncpoint_count, offset);
offset += SliceVectors(input, fences, params.fence_count, offset);
offset += SliceVectors(input, fence_thresholds, params.fence_count, offset);
auto& gpu = system.GPU();
if (gpu.UseNvdec()) {
for (std::size_t i = 0; i < syncpt_increments.size(); i++) {
const SyncptIncr& syncpt_incr = syncpt_increments[i];
fences[i].id = syncpt_incr.id;
fences[i].value =
fence_thresholds[i] =
syncpoint_manager.IncreaseSyncpoint(syncpt_incr.id, syncpt_incr.increments);
}
}
@@ -98,11 +95,6 @@ NvResult nvhost_nvdec_common::Submit(const std::vector<u8>& input, std::vector<u
cmdlist.size() * sizeof(u32));
gpu.PushCommandBuffer(cmdlist);
}
if (gpu.UseNvdec()) {
fences[0].value = syncpoint_manager.IncreaseSyncpoint(fences[0].id, 1);
Tegra::ChCommandHeaderList cmdlist{{(4 << 28) | fences[0].id}};
gpu.PushCommandBuffer(cmdlist);
}
std::memcpy(output.data(), &params, sizeof(IoctlSubmit));
// Some games expect command_buffers to be written back
offset = sizeof(IoctlSubmit);
@@ -110,8 +102,7 @@ NvResult nvhost_nvdec_common::Submit(const std::vector<u8>& input, std::vector<u
offset += WriteVectors(output, relocs, offset);
offset += WriteVectors(output, reloc_shifts, offset);
offset += WriteVectors(output, syncpt_increments, offset);
offset += WriteVectors(output, wait_checks, offset);
offset += WriteVectors(output, fences, offset);
offset += WriteVectors(output, fence_thresholds, offset);
return NvResult::Success;
}
@@ -56,19 +56,16 @@ protected:
s32 target{};
s32 target_offset{};
};
static_assert(sizeof(Reloc) == 0x10, "CommandBuffer has incorrect size");
static_assert(sizeof(Reloc) == 0x10, "Reloc has incorrect size");
struct SyncptIncr {
u32 id{};
u32 increments{};
u32 unk0{};
u32 unk1{};
u32 unk2{};
};
static_assert(sizeof(SyncptIncr) == 0x8, "CommandBuffer has incorrect size");
struct Fence {
u32 id{};
u32 value{};
};
static_assert(sizeof(Fence) == 0x8, "CommandBuffer has incorrect size");
static_assert(sizeof(SyncptIncr) == 0x14, "SyncptIncr has incorrect size");
struct IoctlGetSyncpoint {
// Input
+1 -1
View File
@@ -268,4 +268,4 @@ void main() {
})");
}
} // namespace OpenGL
} // namespace OpenGL
@@ -54,6 +54,7 @@ void SetupDirtyViewports(Tables& tables) {
FillBlock(tables[0], OFF(viewport_transform), NUM(viewport_transform), Viewports);
FillBlock(tables[0], OFF(viewports), NUM(viewports), Viewports);
tables[0][OFF(viewport_transform_enabled)] = Viewports;
tables[1][OFF(screen_y_control)] = Viewports;
}
void SetupDirtyScissors(Tables& tables) {
+22
View File
@@ -756,6 +756,27 @@ void GMainWindow::InitializeWidgets() {
tas_label->setFocusPolicy(Qt::NoFocus);
statusBar()->insertPermanentWidget(0, tas_label);
// Setup Mute button
renderer_mute_button = new QPushButton();
renderer_mute_button->setObjectName(QStringLiteral("TogglableStatusBarButton"));
renderer_mute_button->setCheckable(true);
renderer_mute_button->setFocusPolicy(Qt::NoFocus);
connect(renderer_mute_button, &QPushButton::toggled, [this](bool checked) {
renderer_mute_button->setText(checked ? tr("AUDIO ON") : tr("AUDIO OFF"));
});
renderer_mute_button->toggle();
connect(renderer_mute_button, &QPushButton::clicked, [this] {
if (renderer_mute_button->isChecked()) {
Settings::values.volume.SetValue(100);
} else {
Settings::values.volume.SetValue(0);
}
system->ApplySettings();
});
statusBar()->insertPermanentWidget(0, renderer_mute_button);
statusBar()->setVisible(true);
// Setup Dock button
dock_status_button = new QPushButton();
dock_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton"));
@@ -1519,6 +1540,7 @@ void GMainWindow::ShutdownGame() {
game_fps_label->setVisible(false);
emu_frametime_label->setVisible(false);
renderer_status_button->setEnabled(true);
renderer_mute_button->setVisible(true);
emulation_running = false;
+1
View File
@@ -334,6 +334,7 @@ private:
QLabel* tas_label = nullptr;
QPushButton* gpu_accuracy_button = nullptr;
QPushButton* renderer_status_button = nullptr;
QPushButton* renderer_mute_button = nullptr;
QPushButton* dock_status_button = nullptr;
QTimer status_bar_update_timer;