liamwhite
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with
12 additions and
7 deletions
-
src/video_core/buffer_cache/buffer_cache.h
-
src/video_core/renderer_vulkan/vk_query_cache.cpp
|
|
|
@ -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}; |
|
|
|
|