diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/service/nvdrv/core/nvmap.cpp | 6 | ||||
| -rw-r--r-- | src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_query_cache.cpp | 2 |
3 files changed, 3 insertions, 7 deletions
diff --git a/src/core/hle/service/nvdrv/core/nvmap.cpp b/src/core/hle/service/nvdrv/core/nvmap.cpp index f811b66a0..9b21da6b1 100644 --- a/src/core/hle/service/nvdrv/core/nvmap.cpp +++ b/src/core/hle/service/nvdrv/core/nvmap.cpp | |||
| @@ -41,22 +41,18 @@ NvResult NvMap::Handle::Alloc(Flags pFlags, u32 pAlign, u8 pKind, u64 pAddress) | |||
| 41 | size = Common::AlignUp(size, YUZU_PAGESIZE); | 41 | size = Common::AlignUp(size, YUZU_PAGESIZE); |
| 42 | aligned_size = Common::AlignUp(size, align); | 42 | aligned_size = Common::AlignUp(size, align); |
| 43 | address = pAddress; | 43 | address = pAddress; |
| 44 | |||
| 45 | // TODO: pin init | ||
| 46 | |||
| 47 | allocated = true; | 44 | allocated = true; |
| 48 | 45 | ||
| 49 | return NvResult::Success; | 46 | return NvResult::Success; |
| 50 | } | 47 | } |
| 51 | 48 | ||
| 52 | NvResult NvMap::Handle::Duplicate(bool internal_session) { | 49 | NvResult NvMap::Handle::Duplicate(bool internal_session) { |
| 50 | std::scoped_lock lock(mutex); | ||
| 53 | // Unallocated handles cannot be duplicated as duplication requires memory accounting (in HOS) | 51 | // Unallocated handles cannot be duplicated as duplication requires memory accounting (in HOS) |
| 54 | if (!allocated) [[unlikely]] { | 52 | if (!allocated) [[unlikely]] { |
| 55 | return NvResult::BadValue; | 53 | return NvResult::BadValue; |
| 56 | } | 54 | } |
| 57 | 55 | ||
| 58 | std::scoped_lock lock(mutex); | ||
| 59 | |||
| 60 | // If we internally use FromId the duplication tracking of handles won't work accurately due to | 56 | // If we internally use FromId the duplication tracking of handles won't work accurately due to |
| 61 | // us not implementing per-process handle refs. | 57 | // us not implementing per-process handle refs. |
| 62 | if (internal_session) { | 58 | if (internal_session) { |
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp index 908e60191..32e45540d 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp | |||
| @@ -270,12 +270,12 @@ NvResult nvhost_gpu::SubmitGPFIFOImpl(IoctlSubmitGpfifo& params, std::vector<u8> | |||
| 270 | } | 270 | } |
| 271 | } | 271 | } |
| 272 | 272 | ||
| 273 | gpu.PushGPUEntries(bind_id, std::move(entries)); | ||
| 274 | params.fence.id = channel_syncpoint; | 273 | params.fence.id = channel_syncpoint; |
| 275 | 274 | ||
| 276 | u32 increment{(flags.fence_increment.Value() != 0 ? 2 : 0) + | 275 | u32 increment{(flags.fence_increment.Value() != 0 ? 2 : 0) + |
| 277 | (flags.increment_value.Value() != 0 ? params.fence.value : 0)}; | 276 | (flags.increment_value.Value() != 0 ? params.fence.value : 0)}; |
| 278 | params.fence.value = syncpoint_manager.IncrementSyncpointMaxExt(channel_syncpoint, increment); | 277 | params.fence.value = syncpoint_manager.IncrementSyncpointMaxExt(channel_syncpoint, increment); |
| 278 | gpu.PushGPUEntries(bind_id, std::move(entries)); | ||
| 279 | 279 | ||
| 280 | if (flags.fence_increment.Value()) { | 280 | if (flags.fence_increment.Value()) { |
| 281 | if (flags.suppress_wfi.Value()) { | 281 | if (flags.suppress_wfi.Value()) { |
diff --git a/src/video_core/renderer_vulkan/vk_query_cache.cpp b/src/video_core/renderer_vulkan/vk_query_cache.cpp index 393bbdf37..7cb02631c 100644 --- a/src/video_core/renderer_vulkan/vk_query_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_query_cache.cpp | |||
| @@ -66,7 +66,7 @@ void QueryPool::Reserve(std::pair<VkQueryPool, u32> query) { | |||
| 66 | } | 66 | } |
| 67 | 67 | ||
| 68 | QueryCache::QueryCache(VideoCore::RasterizerInterface& rasterizer_, const Device& device_, | 68 | QueryCache::QueryCache(VideoCore::RasterizerInterface& rasterizer_, const Device& device_, |
| 69 | Scheduler& scheduler_) | 69 | Scheduler& scheduler_) |
| 70 | : QueryCacheBase{rasterizer_}, device{device_}, scheduler{scheduler_}, | 70 | : QueryCacheBase{rasterizer_}, device{device_}, scheduler{scheduler_}, |
| 71 | query_pools{ | 71 | query_pools{ |
| 72 | QueryPool{device_, scheduler_, QueryType::SamplesPassed}, | 72 | QueryPool{device_, scheduler_, QueryType::SamplesPassed}, |