1
0
Fork 0
forked from suyu/suyu
suyu/src/video_core
ReinUsesLisp e22816a5bb texture_cache: Report incompatible textures as black
Some games bind incompatible texture types to certain types.
For example Astral Chain binds a 2D texture with 1 layer (non-array) to
a cubemap slot (that's how it's used in the shader). After testing this
in hardware, the expected "undefined behavior" is to report all pixels
as black.

We already have a path for reporting black textures in the texture
cache. When textures types are incompatible, this commit binds these
kind of textures. This is done on the API agnostic texture cache so no
extra code has to be inserted on OpenGL or Vulkan.

As a side effect, this fixes invalidations of ASTC textures on Astral
Chain. This happened because yuzu detected a cube texture and forced
6 faces, generating a texture larger than what the TIC reported.
2020-03-12 18:22:05 -03:00
..
buffer_cache buffer_cache: Delay buffer destructions 2020-01-29 17:53:11 -03:00
engines state_tracker: Remove type traits with named structures 2020-02-28 17:56:43 -03:00
renderer_opengl gl_shader_manager: Fix interaction between graphics and compute 2020-03-11 01:04:52 -03:00
renderer_vulkan Merge pull request #3301 from ReinUsesLisp/state-tracker 2020-03-09 18:34:37 -03:00
shader Merge pull request #3451 from ReinUsesLisp/indexed-textures 2020-03-05 11:42:46 -05:00
texture_cache texture_cache: Report incompatible textures as black 2020-03-12 18:22:05 -03:00
textures textures: Fix anisotropy hack 2020-03-08 15:59:38 -03:00
CMakeLists.txt dirty_flags: Deduplicate code between OpenGL and Vulkan 2020-02-28 17:56:43 -03:00
dirty_flags.cpp dirty_flags: Deduplicate code between OpenGL and Vulkan 2020-02-28 17:56:43 -03:00
dirty_flags.h video_core/dirty_flags: Address feedback 2020-02-28 17:56:43 -03:00
dma_pusher.cpp video_core: Reintroduce dirty flags infrastructure 2020-02-28 17:56:41 -03:00
dma_pusher.h gpu: Rewrite virtual memory manager using PageTable. 2019-03-20 22:36:02 -04:00
gpu.cpp video_core/gpu: Remove unused functions 2020-02-25 16:53:47 -03:00
gpu.h Merge pull request #3461 from ReinUsesLisp/r32i-rt 2020-02-25 17:47:14 -05:00
gpu_asynch.cpp Core: Wait for GPU to be idle before shutting down. 2019-10-04 19:59:53 -04:00
gpu_asynch.h Core: Wait for GPU to be idle before shutting down. 2019-10-04 19:59:53 -04:00
gpu_synch.cpp gpu: Change optional<reference_wrapper<T>> to T* for FramebufferConfig 2019-08-21 01:55:25 -03:00
gpu_synch.h Core: Wait for GPU to be idle before shutting down. 2019-10-04 19:59:53 -04:00
gpu_thread.cpp core: frontend: Refactor scope_acquire_window_context to scope_acquire_context. 2020-02-25 21:23:00 -05:00
gpu_thread.h gpu_thread: Use MPSCQueue for GPU commands. 2020-02-07 23:01:23 -05:00
guest_driver.cpp Shader_IR: Address Feedback 2020-01-24 16:43:30 -04:00
guest_driver.h Shader_IR: Address feedback. 2020-01-25 09:04:59 -04:00
macro_interpreter.cpp video_core/macro_interpreter: Make definitions of most private enums/unions hidden 2019-10-17 17:55:46 -04:00
macro_interpreter.h video_core/macro_interpreter: Make definitions of most private enums/unions hidden 2019-10-17 17:55:46 -04:00
memory_manager.cpp video_core: memory_manager: Flush/invalidate asynchronously on Unmap. 2020-02-19 20:03:52 -05:00
memory_manager.h Revert "video_core: memory_manager: Use GPU interface for cache functions." 2020-02-15 17:47:15 -05:00
morton.cpp texture: Implement R32I 2020-02-15 16:26:50 -03:00
morton.h renderer_opengl: Use block linear swizzling for CPU framebuffers 2019-08-21 02:17:14 -03:00
query_cache.h query_cache: Address feedback 2020-02-14 17:38:27 -03:00
rasterizer_accelerated.cpp Added missing include 2019-12-11 18:11:49 +00:00
rasterizer_accelerated.h core: Prepare various classes for memory read/write migration 2019-11-26 21:55:37 -05:00
rasterizer_cache.cpp rasterizer_cache: Add missing virtual destructor to RasterizerCacheObject 2018-11-08 00:31:39 -05:00
rasterizer_cache.h rasterizer_cache: Protect inherited caches from submission level 2019-07-01 04:32:01 -04:00
rasterizer_interface.h video_core: Reintroduce dirty flags infrastructure 2020-02-28 17:56:41 -03:00
renderer_base.cpp video_core/engines: Remove unnecessary includes 2019-03-05 20:35:32 -05:00
renderer_base.h renderer_opengl: Add texture mailbox support for presenter thread. 2020-02-25 21:22:59 -05:00
sampler_cache.cpp video_core: Abstract vk_sampler_cache into a templated class 2019-04-02 15:54:11 -03:00
sampler_cache.h video_core: Abstract vk_sampler_cache into a templated class 2019-04-02 15:54:11 -03:00
surface.cpp video_core/surface: Add R32_SINT render target format 2020-02-25 17:19:34 -03:00
surface.h texture: Implement R32I 2020-02-15 16:26:50 -03:00
video_core.cpp yuzu: Implement Vulkan frontend 2020-01-29 17:53:11 -03:00
video_core.h video_core/gpu: Create threads separately from initialization 2019-04-11 22:11:40 -04:00