Merge yuzu-emu#12749
This commit is contained in:
		| @@ -1488,7 +1488,10 @@ void BufferCache<P>::ImmediateUploadMemory([[maybe_unused]] Buffer& buffer, | ||||
|             std::span<const u8> upload_span; | ||||
|             const DAddr device_addr = buffer.CpuAddr() + copy.dst_offset; | ||||
|             if (IsRangeGranular(device_addr, copy.size)) { | ||||
|                 upload_span = std::span(device_memory.GetPointer<u8>(device_addr), copy.size); | ||||
|                 auto* const ptr = device_memory.GetPointer<u8>(device_addr); | ||||
|                 if (ptr != nullptr) { | ||||
|                     upload_span = std::span(ptr, copy.size); | ||||
|                 } | ||||
|             } else { | ||||
|                 if (immediate_buffer.empty()) { | ||||
|                     immediate_buffer = ImmediateBuffer(largest_copy); | ||||
|   | ||||
| @@ -1064,8 +1064,6 @@ public: | ||||
|                 } | ||||
|             }); | ||||
|         } | ||||
|         auto* ptr = device_memory.GetPointer<u8>(new_query->dependant_address); | ||||
|         ASSERT(ptr != nullptr); | ||||
|  | ||||
|         new_query->dependant_manage = must_manage_dependance; | ||||
|         pending_flush_queries.push_back(index); | ||||
| @@ -1104,10 +1102,12 @@ public: | ||||
|                 tfb_streamer.Free(query->dependant_index); | ||||
|             } else { | ||||
|                 u8* pointer = device_memory.GetPointer<u8>(query->dependant_address); | ||||
|                 if (pointer != nullptr) { | ||||
|                     u32 result; | ||||
|                     std::memcpy(&result, pointer, sizeof(u32)); | ||||
|                     num_vertices = static_cast<u64>(result) / query->stride; | ||||
|                 } | ||||
|             } | ||||
|             query->value = [&]() -> u64 { | ||||
|                 switch (query->topology) { | ||||
|                 case Maxwell3D::Regs::PrimitiveTopology::Points: | ||||
| @@ -1360,7 +1360,9 @@ bool QueryCacheRuntime::HostConditionalRenderingCompareValues(VideoCommon::Looku | ||||
|     const auto check_value = [&](DAddr address) { | ||||
|         u8* ptr = impl->device_memory.GetPointer<u8>(address); | ||||
|         u64 value{}; | ||||
|         if (ptr != nullptr) { | ||||
|             std::memcpy(&value, ptr, sizeof(value)); | ||||
|         } | ||||
|         return value == 0; | ||||
|     }; | ||||
|     std::array<VideoCommon::LookupData*, 2> objects{&object_1, &object_2}; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user