diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp | 16 | ||||
-rw-r--r-- | src/video_core/gpu.h | 12 |
2 files changed, 16 insertions, 12 deletions
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp index 88d6c771c..d9458ab2f 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp @@ -159,17 +159,11 @@ NvResult nvhost_gpu::SetErrorNotifier(IoctlSetErrorNotifier& params) { LOG_DEBUG(Service_NVDRV, "called, offset={:X}, size={:X}, mem={:X}", params.offset, params.size, params.mem); - // Validate parameters - if (params.size == 0) { - return NvResult::BadParameter; - } - - // Store error notifier configuration error_notifier_offset = params.offset; error_notifier_size = params.size; - error_notifier_memory = static_cast<u32_le>(params.mem); // Explicit conversion + error_notifier_memory = static_cast<u32_le>(params.mem); - // Enable error notifications in the GPU + // Always enable error notifier in GPU system.GPU().EnableErrorNotifier(static_cast<u32>(error_notifier_memory), static_cast<u32>(error_notifier_offset), static_cast<u32>(error_notifier_size)); @@ -193,9 +187,9 @@ NvResult nvhost_gpu::AllocGPFIFOEx2(IoctlAllocGpfifoEx2& params, DeviceFD fd) { return NvResult::AlreadyAllocated; } - // Validate parameters - if (params.num_entries == 0 || params.num_entries > 0x10000) { - LOG_ERROR(Service_NVDRV, "Invalid GPFIFO entry count!"); + // Relax validation to allow any non-zero value + if (params.num_entries == 0) { + LOG_WARNING(Service_NVDRV, "Zero GPFIFO entries requested"); return NvResult::BadParameter; } diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h index fd9a7918b..dadfc00bf 100644 --- a/src/video_core/gpu.h +++ b/src/video_core/gpu.h @@ -261,9 +261,14 @@ public: /// Enables error notifier for the GPU channel void EnableErrorNotifier(u32 memory, u32 offset, u32 size) { - // Implementation depends on specific GPU requirements LOG_DEBUG(HW_GPU, "Error notifier enabled: memory={:X}, offset={:X}, size={:X}", memory, offset, size); + + // For now, just store the values and return + // TODO: Implement proper error notification handling + error_notifier_memory = memory; + error_notifier_offset = offset; + error_notifier_size = size; } /// Sets the timeout for the GPU channel @@ -287,6 +292,11 @@ public: private: struct Impl; mutable std::unique_ptr<Impl> impl; + + // Add these member variables to store error notifier state + u32 error_notifier_memory{}; + u32 error_notifier_offset{}; + u32 error_notifier_size{}; }; } // namespace Tegra |