dolphin/Source/Core/VideoCommon
mimimi085181 53663c00b9 Implement minimal emulation of TMEM caching
This is a remake of https://github.com/dolphin-emu/dolphin/pull/3749

Full credit goes to phire.

Old message:
"If none of the texture registers have changed and TMEM hasn't been invalidated or changed in other ways, we can blindly reuse the old texture cache entries without rehashing.

Not only does this fix the bloom effect in Spyro: A Hero's Tail (The game abused texture cache) but it will also provide speedups for other games which use the same texture over multiple draw calls, especially when safe texture cache is in use."

Changed the pr per phire's instructions to only return the current texture(s) if none of the texture registers were changed. If any texture register was changed, fall back to the default hashing and rebuilding textures from memory.
2017-07-10 01:49:27 +02:00
..
AbstractTexture.cpp AbstractTexture: Return config by const reference 2017-06-18 23:38:42 -04:00
AbstractTexture.h AbstractTexture: Return config by const reference 2017-06-18 23:38:42 -04:00
AsyncRequests.cpp VideoCommon: Eliminate static state in Renderer 2017-03-04 16:39:50 +10:00
AsyncRequests.h specify custom brace style to fix unions 2017-01-05 12:55:13 +01:00
AVIDump.cpp do not assign in conditional statements 2017-06-07 20:09:44 -07:00
AVIDump.h MSVC: define HAVE_FFMPEG 2017-05-26 00:53:58 -07:00
BoundingBox.cpp
BoundingBox.h
BPFunctions.cpp VideoCommon: Drop SetDitherMode() 2017-04-18 21:55:22 +10:00
BPFunctions.h VideoCommon: Drop SetDitherMode() 2017-04-18 21:55:22 +10:00
BPMemory.cpp BPMemory: Eliminate union type punning 2017-01-23 16:05:32 -05:00
BPMemory.h BPMemory: Add const specifier to member functions where applicable 2017-01-23 16:07:03 -05:00
BPStructs.cpp Implement minimal emulation of TMEM caching 2017-07-10 01:49:27 +02:00
BPStructs.h
CMakeLists.txt Video Backends: Split texture cache code out into separate files, introduce 'AbstractTexture' 2017-06-13 00:41:51 -05:00
CommandProcessor.cpp CommandProcessor: Limit scope of ugly SCPFifoStruct. 2017-01-27 19:04:56 +01:00
CommandProcessor.h CommandProcessor: Limit scope of ugly SCPFifoStruct. 2017-01-27 19:04:56 +01:00
ConstantManager.h Add configurable toggle that rounds vertices to the nearest pixel when 2017-04-04 09:52:18 -05:00
CPMemory.cpp
CPMemory.h specify custom brace style to fix unions 2017-01-05 12:55:13 +01:00
DataReader.h Common: Move byte swapping utilities into their own header 2017-03-03 17:18:18 -05:00
Debugger.cpp
Debugger.h
DriverDetails.cpp Add a workaround for a PowerVR glsl compiler bug 2017-05-03 19:33:56 -07:00
DriverDetails.h Add a workaround for a PowerVR glsl compiler bug 2017-05-03 19:33:56 -07:00
Fifo.cpp Change "blocking" BlockingLoop::Stop to give up and die after a timeout. 2017-06-25 20:47:30 -07:00
Fifo.h Fifo: const correctness 2017-03-26 23:08:33 -04:00
FPSCounter.cpp
FPSCounter.h
FramebufferManagerBase.cpp VideoCommon: Fix crash at startup with virtual XFB enabled 2017-03-09 23:39:48 +10:00
FramebufferManagerBase.h VideoCommon: Fix crash at startup with virtual XFB enabled 2017-03-09 23:39:48 +10:00
GeometryShaderGen.cpp ShaderGenCommon: Remove unnecessary includes 2017-02-01 12:19:55 -05:00
GeometryShaderGen.h ShaderGenCommon: Remove unnecessary includes 2017-02-01 12:19:55 -05:00
GeometryShaderManager.cpp ShaderManagers: Use aggregate initialization for some variables. 2016-12-10 17:33:51 -05:00
GeometryShaderManager.h
HiresTextures_DDSLoader.cpp Merge pull request #5305 from iwubcode/abstract_texture 2017-06-18 12:57:05 -07:00
HiresTextures.cpp replace DoFileSearch with optimized version 2017-06-23 17:25:53 -07:00
HiresTextures.h Video Backends: Move and rename HostTextureFormat to AbstractTextureFormat 2017-06-13 00:41:56 -05:00
ImageWrite.cpp Add a namespace to OpenFStream 2017-06-15 21:34:04 +02:00
ImageWrite.h ImageWriter: Don't use inplace alpha truncation. 2016-10-08 12:02:49 +02:00
IndexGenerator.cpp fix various instances of -1 being assigned to unsigned types 2017-06-07 19:52:07 -07:00
IndexGenerator.h
LightingShaderGen.cpp ShaderGenCommon: Remove unnecessary includes 2017-02-01 12:19:55 -05:00
LightingShaderGen.h LightingShaderGen: Remove unnecessary includes 2017-02-01 01:06:00 -05:00
LookUpTables.h
MainBase.cpp GameConfigLoader: Add GFX Game INI translations 2017-06-03 18:13:02 +01:00
NativeVertexFormat.h
OnScreenDisplay.cpp Revert "Merge pull request #4286 from shuffle2/Aestek-clean-osd" 2016-10-15 12:44:37 +02:00
OnScreenDisplay.h Revert "Merge pull request #4286 from shuffle2/Aestek-clean-osd" 2016-10-15 12:44:37 +02:00
OpcodeDecoding.cpp CommandProcessor: Limit scope of ugly SCPFifoStruct. 2017-01-27 19:04:56 +01:00
OpcodeDecoding.h OpcodeDecoding: Convert #defines into enum constants 2017-02-08 00:05:17 -05:00
PerfQueryBase.cpp
PerfQueryBase.h
PixelEngine.cpp PixelEngine: Use a DirectRead for the token. 2017-01-27 07:49:47 +01:00
PixelEngine.h PixelEngine: Move enum constants into the PixelEngine namespace 2017-02-28 07:01:50 -05:00
PixelShaderGen.cpp PixelShaderGen: Add missing inputs. 2017-07-05 22:43:39 +02:00
PixelShaderGen.h VideoCommon: Make dst_alpha state implicit. 2017-01-04 20:02:31 +01:00
PixelShaderManager.cpp VideoCommon: Move last EFB scale handling to CalculateTargetSize 2017-03-04 16:53:07 +10:00
PixelShaderManager.h VideoCommon: Move last EFB scale handling to CalculateTargetSize 2017-03-04 16:53:07 +10:00
PostProcessing.cpp replace DoFileSearch with optimized version 2017-06-23 17:25:53 -07:00
PostProcessing.h VideoConfigDiag: Move post-processing shader list to post processor 2017-04-25 14:27:05 +10:00
RenderBase.cpp Merge pull request #5312 from ligfx/cleanupupdatedrawrectangle 2017-06-05 20:03:56 -07:00
RenderBase.h RenderBase: clean up UpdateDrawRectangle 2017-04-24 00:39:25 -07:00
RenderState.cpp OGL: Drop BlendingState.dither 2017-04-18 21:55:23 +10:00
RenderState.h OGL: Drop BlendingState.dither 2017-04-18 21:55:23 +10:00
SamplerCommon.h
sfont.inc
ShaderGenCommon.h Add configurable toggle that rounds vertices to the nearest pixel when 2017-04-04 09:52:18 -05:00
Statistics.cpp VertexLoaderManager: Return debug strings by value 2017-03-26 23:50:09 -04:00
Statistics.h
TextureCacheBase.cpp Implement minimal emulation of TMEM caching 2017-07-10 01:49:27 +02:00
TextureCacheBase.h Implement minimal emulation of TMEM caching 2017-07-10 01:49:27 +02:00
TextureConfig.cpp Video Backends: Split texture cache code out into separate files, introduce 'AbstractTexture' 2017-06-13 00:41:51 -05:00
TextureConfig.h Video Backends: Move and rename HostTextureFormat to AbstractTextureFormat 2017-06-13 00:41:56 -05:00
TextureConversionShader.cpp TextureConversionShader: Use integer math for truncating EFB format 2017-06-17 12:17:09 +10:00
TextureConversionShader.h TextureConversionShader: Consider source format of EFB for EFB2RAM 2017-04-12 00:11:22 +10:00
TextureDecoder_Common.cpp Common: Move byte swapping utilities into their own header 2017-03-03 17:18:18 -05:00
TextureDecoder_Generic.cpp Common: Move byte swapping utilities into their own header 2017-03-03 17:18:18 -05:00
TextureDecoder_Util.h TextureDecoder: Deduplicate some utility code 2017-01-15 20:23:26 +11:00
TextureDecoder_x64.cpp Merge pull request #4548 from stenzek/gcc-sse 2017-03-13 14:28:01 +01:00
TextureDecoder.h TextureConversionShader: Consider source format of EFB for EFB2RAM 2017-04-12 00:11:22 +10:00
VertexLoader_Color.cpp Common: Move byte swapping utilities into their own header 2017-03-03 17:18:18 -05:00
VertexLoader_Color.h
VertexLoader_Normal.cpp Common: Move byte swapping utilities into their own header 2017-03-03 17:18:18 -05:00
VertexLoader_Normal.h Common: Move byte swapping utilities into their own header 2017-03-03 17:18:18 -05:00
VertexLoader_Position.cpp Common: Move byte swapping utilities into their own header 2017-03-03 17:18:18 -05:00
VertexLoader_Position.h Common: Move byte swapping utilities into their own header 2017-03-03 17:18:18 -05:00
VertexLoader_TextCoord.cpp Common: Move byte swapping utilities into their own header 2017-03-03 17:18:18 -05:00
VertexLoader_TextCoord.h Common: Move byte swapping utilities into their own header 2017-03-03 17:18:18 -05:00
VertexLoader.cpp VertexLoaderJit: Fix out-of-bounds access for zfreeze. 2016-09-17 16:47:12 +02:00
VertexLoader.h
VertexLoaderARM64.cpp Merge pull request #4210 from degasus/arm 2016-09-27 18:45:14 +02:00
VertexLoaderARM64.h
VertexLoaderBase.cpp VertexLoaderBase: Return debug strings by value 2017-03-26 23:49:59 -04:00
VertexLoaderBase.h fix various instances of -1 being assigned to unsigned types 2017-06-07 19:52:07 -07:00
VertexLoaderManager.cpp Remove D3D12 2017-05-18 17:01:12 -07:00
VertexLoaderManager.h VertexLoaderManager: Return debug strings by value 2017-03-26 23:50:09 -04:00
VertexLoaderUtils.h
VertexLoaderX64.cpp Remove code for only allocating low memory 2017-05-20 09:35:53 +02:00
VertexLoaderX64.h
VertexManagerBase.cpp Implement minimal emulation of TMEM caching 2017-07-10 01:49:27 +02:00
VertexManagerBase.h VideoCommon: rework anamorphic widescreen heuristic 2017-04-05 17:23:16 -07:00
VertexShaderGen.cpp VideoCommon: rework anamorphic widescreen heuristic 2017-04-05 17:23:16 -07:00
VertexShaderGen.h Add configurable toggle that rounds vertices to the nearest pixel when 2017-04-04 09:52:18 -05:00
VertexShaderManager.cpp VertexShaderManager: Rename projection hack variables 2017-06-15 16:38:10 +01:00
VertexShaderManager.h VertexShaderManager: Rename projection hack variables 2017-06-15 16:38:10 +01:00
VideoBackendBase.cpp Remove D3D12 2017-05-18 17:01:12 -07:00
VideoBackendBase.h CommandProcessor: Limit scope of ugly SCPFifoStruct. 2017-01-27 19:04:56 +01:00
VideoCommon.h Video Backends: Move and rename HostTextureFormat to AbstractTextureFormat 2017-06-13 00:41:56 -05:00
VideoCommon.vcxproj Video Backends: Split texture cache code out into separate files, introduce 'AbstractTexture' 2017-06-13 00:41:51 -05:00
VideoCommon.vcxproj.filters VideoCommon: Fix VS filter for AbstractTexture.cpp 2017-06-18 22:58:02 -04:00
VideoConfig.cpp VertexShaderManager: Rename projection hack variables 2017-06-15 16:38:10 +01:00
VideoConfig.h D3D: Add quad-buffer stereoscopy support. 2017-07-05 22:43:39 +02:00
VideoState.cpp
VideoState.h
XFMemory.cpp
XFMemory.h specify custom brace style to fix unions 2017-01-05 12:55:13 +01:00
XFStructs.cpp XFStructs: Get rid of an unnecessary pointer cast 2017-03-26 23:09:30 -04:00
XFStructs.h