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
..
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
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
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 VideoCommon: Header cleanup 2016-01-17 20:11:45 -05:00
BoundingBox.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
BoundingBox.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
CMakeLists.txt Video Backends: Split texture cache code out into separate files, introduce 'AbstractTexture' 2017-06-13 00:41:51 -05:00
CPMemory.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
CPMemory.h specify custom brace style to fix unions 2017-01-05 12:55:13 +01: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
DataReader.h Common: Move byte swapping utilities into their own header 2017-03-03 17:18:18 -05:00
Debugger.cpp Further fixes to the formatting change. WX sucks. 2016-06-24 12:16:10 +02:00
Debugger.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
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
FPSCounter.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
FPSCounter.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02: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
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 VideoBackends: Merge Initialize and Shutdown functions. 2016-06-26 12:34:59 +02: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
HiresTextures_DDSLoader.cpp Merge pull request #5305 from iwubcode/abstract_texture 2017-06-18 12:57:05 -07: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 Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
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 Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
MainBase.cpp GameConfigLoader: Add GFX Game INI translations 2017-06-03 18:13:02 +01:00
NativeVertexFormat.h Shader UID change: Only store the two bits of components we need. 2016-06-26 16:13:19 +12:00
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 Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
PerfQueryBase.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
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 Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
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 Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
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.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
VertexLoader.cpp VertexLoaderJit: Fix out-of-bounds access for zfreeze. 2016-09-17 16:47:12 +02:00
VertexLoader.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
VertexLoaderARM64.cpp Merge pull request #4210 from degasus/arm 2016-09-27 18:45:14 +02:00
VertexLoaderARM64.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
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 Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
VertexLoaderX64.cpp Remove code for only allocating low memory 2017-05-20 09:35:53 +02:00
VertexLoaderX64.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
VertexLoader_Color.cpp Common: Move byte swapping utilities into their own header 2017-03-03 17:18:18 -05:00
VertexLoader_Color.h VideoCommon: Header cleanup 2016-01-17 20:11:45 -05:00
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
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 VertexManagerBase: Get rid of static behavior 2016-08-21 23:30:38 -04:00
VideoState.h VideoBackends: Merge Initialize and Shutdown functions. 2016-06-26 12:34:59 +02:00
XFMemory.cpp VideoCommon: Header cleanup 2016-01-17 20:11:45 -05:00
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 Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
sfont.inc Update license headers to GPLv2+ 2015-05-25 13:22:31 +02:00