summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp16
-rw-r--r--src/video_core/gpu.h12
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