9d8ca6cc4a
Some games usually write memory pages currently used by the GPU, causing rendering issues (e.g. flashing geometry and shadows on Link's Awakening). To workaround this issue, Guest CPU writes are delayed until the command buffer finishes processing, but the pages are updated immediately. The overall behavior is: - CPU writes are cached until they are flushed, they update the page state, but don't change the modification state. Cached writes stop pages from being flushed, in case games have meaningful data in it. - Command processing writes (e.g. push constants) update the page state and are marked to the command processor as dirty. They don't remove the state of cached writes. |
||
---|---|---|
.. | ||
buffer_cache | ||
command_classes | ||
engines | ||
host_shaders | ||
macro | ||
renderer_opengl | ||
renderer_vulkan | ||
shader | ||
texture_cache | ||
textures | ||
vulkan_common | ||
cdma_pusher.cpp | ||
cdma_pusher.h | ||
CMakeLists.txt | ||
compatible_formats.cpp | ||
compatible_formats.h | ||
delayed_destruction_ring.h | ||
dirty_flags.cpp | ||
dirty_flags.h | ||
dma_pusher.cpp | ||
dma_pusher.h | ||
fence_manager.h | ||
framebuffer_config.h | ||
gpu_thread.cpp | ||
gpu_thread.h | ||
gpu.cpp | ||
gpu.h | ||
guest_driver.cpp | ||
guest_driver.h | ||
memory_manager.cpp | ||
memory_manager.h | ||
query_cache.h | ||
rasterizer_accelerated.cpp | ||
rasterizer_accelerated.h | ||
rasterizer_interface.h | ||
renderer_base.cpp | ||
renderer_base.h | ||
shader_cache.h | ||
shader_notify.cpp | ||
shader_notify.h | ||
surface.cpp | ||
surface.h | ||
video_core.cpp | ||
video_core.h |