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