dolphin/Source/Core/VideoCommon
mimimi085181 2f8e0c9bb9 Allow multiple texture cache entries for textures at the same address
This is the same trick which is used for Metroid's fonts/texts, but for all textures. If 2 different textures at the same address are loaded during the same frame, create a 2nd entry instead of overwriting the existing one. If the entry was overwritten in this case, there wouldn't be any caching, which results in a big performance drop.

The restriction to textures, which are loaded during the same frame, prevents creating lots of textures when textures are used in the regular way. This restriction is new. Overwriting textures, instead of creating new ones is faster, if the old ones are unlikely to be used again.

Since this would break efb copies, don't do it for efb copies.

Castlevania 3 goes from 80 fps to 115 fps for me.

There might be games that need a higher texture cache accuracy with this, but those games should also see a performance boost from this PR.

Some games, which use paletted textures, which are not efb copies, might be faster now. And also not require a higher texture cache accuracy anymore. (similar sitation as PR https://github.com/dolphin-emu/dolphin/pull/1916)
2015-02-18 23:54:40 +01:00
..
AVIDump.cpp Windows AVIDump: support "silent" frame dumping 2015-02-14 23:38:14 +01:00
AVIDump.h
BoundingBox.cpp VertexLoader: Add a VertexLoader pointer to each function call 2014-12-21 14:13:04 +01:00
BoundingBox.h VertexLoader: Add a VertexLoader pointer to each function call 2014-12-21 14:13:04 +01:00
BPFunctions.cpp VideoCommon: Merge LineGeometryShader into GeometryShaderGen. 2014-12-15 22:47:42 +01:00
BPFunctions.h VideoCommon: Merge LineGeometryShader into GeometryShaderGen. 2014-12-15 22:47:42 +01:00
BPMemory.cpp
BPMemory.h Silence some -Wswitch-default warnings. 2014-12-11 22:23:05 -06:00
BPStructs.cpp VideoCommon: split VertexLoaderBase from VertexLoader 2014-12-21 14:12:43 +01:00
BPStructs.h
CMakeLists.txt [AArch64] Implement vertex loader recompiler. 2015-02-16 16:51:32 -06:00
CommandProcessor.cpp Remove AtBreakpoint() from ReadIdle. Fixes Rogue Squadron 2 without 2014-12-27 19:16:50 -05:00
CommandProcessor.h
ConstantManager.h Make zfreeze use screenspace coordinates independant of IR. 2015-01-23 03:32:31 +13:00
CPMemory.cpp Fix indentation 2015-01-07 21:51:47 +01:00
CPMemory.h VertexLoaderX64: support VAT.ByteDequant=0 2015-01-20 09:23:15 +01:00
DataReader.h DataReader: turn WritePointer into GetPointer 2015-01-18 12:59:33 +01:00
Debugger.cpp
Debugger.h
DriverDetails.cpp DriverDetails: Remove Intel Structs bug since it doesn't affect us anymore. 2014-12-28 23:28:00 +01:00
DriverDetails.h Minor consistency changes 2015-01-12 15:18:18 -05:00
Fifo.cpp FIFO: allocate slightly more for SIMD vertex loader overreads 2014-12-10 05:52:55 -08:00
Fifo.h VideoCommon: fifo cleanups 2014-12-09 18:56:27 +01:00
FPSCounter.cpp
FPSCounter.h
FramebufferManagerBase.cpp Use emplace_* functions where in-place construction is preferable 2015-02-04 11:39:08 -05:00
FramebufferManagerBase.h Use emplace_* functions where in-place construction is preferable 2015-02-04 11:39:08 -05:00
GeometryShaderGen.cpp GeometryShaderGen: Perspective divide the line coordinates before comparing the angle. 2015-01-31 23:32:23 +01:00
GeometryShaderGen.h VideoCommon: Make IsPassthrough() a function of the ShaderUid. 2014-12-19 14:10:53 +01:00
GeometryShaderManager.cpp Ensure that ZSlopes save/restore state correctly. 2015-01-23 03:32:31 +13:00
GeometryShaderManager.h GeometryShaderManager: Set stereo parameters in a SetConstants() call. 2014-12-20 13:16:26 +01:00
HiresTextures.cpp CustomTexture: fix texture format 2015-01-21 23:33:42 +01:00
HiresTextures.h CustomTexture: also support the legacy format 2015-01-21 21:22:55 +01:00
ImageWrite.cpp
ImageWrite.h
IndexGenerator.cpp
IndexGenerator.h
LightingShaderGen.h Cleaned up whitespace 2015-01-21 22:30:41 -07:00
LookUpTables.h
MainBase.cpp Made the CPU thread wait for the GPU thread to swap, when XFB is enabled. May fix some of the "FIFO is overflowed by GatherPipe ! CPU thread is too fast!" errors. 2015-01-12 19:40:43 +11:00
MainBase.h
NativeVertexFormat.h Stop doing nastly shit to OpenGL stream buffers. 2015-01-24 14:41:51 +13:00
OnScreenDisplay.cpp OnScreenDisplay: Allow for different colored messages 2015-02-07 17:35:21 -05:00
OnScreenDisplay.h OnScreenDisplay: Allow for different colored messages 2015-02-07 17:35:21 -05:00
OpcodeDecoding.cpp VertexLoaderManager: assimilate GetVertexSize() 2015-01-31 09:23:50 +01:00
OpcodeDecoding.h VideoCommon: cleanup OpcodeDecoder 2014-12-09 18:56:27 +01:00
PerfQueryBase.cpp
PerfQueryBase.h
PixelEngine.cpp Clean up usage of ScheduleEvent_Threadsafe. 2015-01-30 14:48:23 -08:00
PixelEngine.h
PixelShaderGen.cpp A few small cleanups based on code review. 2015-01-23 04:38:36 +13:00
PixelShaderGen.h A few small cleanups based on code review. 2015-01-23 04:38:36 +13:00
PixelShaderManager.cpp Ensure that ZSlopes save/restore state correctly. 2015-01-23 03:32:31 +13:00
PixelShaderManager.h Ensure that ZSlopes save/restore state correctly. 2015-01-23 03:32:31 +13:00
PostProcessing.cpp Use emplace_* functions where in-place construction is preferable 2015-02-04 11:39:08 -05:00
PostProcessing.h
RenderBase.cpp Minor consistency changes 2015-01-12 15:18:18 -05:00
RenderBase.h Minor consistency changes 2015-01-12 15:18:18 -05:00
sfont.inc
ShaderGenCommon.h Make zfreeze use screenspace coordinates independant of IR. 2015-01-23 03:32:31 +13:00
Statistics.cpp TexCache: also incude textures within the render target pool 2015-01-18 19:47:48 +01:00
Statistics.h TexCache: also incude textures within the render target pool 2015-01-18 19:47:48 +01:00
TextureCacheBase.cpp Allow multiple texture cache entries for textures at the same address 2015-02-18 23:54:40 +01:00
TextureCacheBase.h Allow multiple texture cache entries for textures at the same address 2015-02-18 23:54:40 +01:00
TextureConversionShader.cpp Fix regression for D3D EFB depth copies. 2015-02-03 11:27:27 -08:00
TextureConversionShader.h
TextureDecoder_Common.cpp TexCache: remove PC_TexFormat 2015-01-18 19:47:48 +01:00
TextureDecoder_Generic.cpp TexCache: remove PC_TexFormat 2015-01-18 19:47:48 +01:00
TextureDecoder_x64.cpp TexCache: remove PC_TexFormat 2015-01-18 19:47:48 +01:00
TextureDecoder.h TexCache: remove PC_TexFormat 2015-01-18 19:47:48 +01:00
VertexLoader_Color.cpp VertexLoader: small clean up 2015-01-26 22:24:06 +01:00
VertexLoader_Color.h VertexLoader: Add a VertexLoader pointer to each function call 2014-12-21 14:13:04 +01:00
VertexLoader_Normal.cpp VertexLoader: remove non-JIT SSE code 2015-01-20 01:51:07 +01:00
VertexLoader_Normal.h
VertexLoader_Position.cpp VertexLoader: remove non-JIT SSE code 2015-01-20 01:51:07 +01:00
VertexLoader_Position.h
VertexLoader_TextCoord.cpp VertexLoader: remove non-JIT SSE code 2015-01-20 01:51:07 +01:00
VertexLoader_TextCoord.h
VertexLoader.cpp Change RunVertices' function arguments. 2015-02-13 12:16:06 -06:00
VertexLoader.h Change RunVertices' function arguments. 2015-02-13 12:16:06 -06:00
VertexLoaderARM64.cpp [AArch64] Change the vertex loader over to using unscaled loadstores. 2015-02-16 22:03:09 -06:00
VertexLoaderARM64.h [AArch64] Change the vertex loader over to using unscaled loadstores. 2015-02-16 22:03:09 -06:00
VertexLoaderBase.cpp [AArch64] Implement vertex loader recompiler. 2015-02-16 16:51:32 -06:00
VertexLoaderBase.h Change RunVertices' function arguments. 2015-02-13 12:16:06 -06:00
VertexLoaderManager.cpp Change RunVertices' function arguments. 2015-02-13 12:16:06 -06:00
VertexLoaderManager.h VertexLoaderManager: assimilate GetVertexSize() 2015-01-31 09:23:50 +01:00
VertexLoaderUtils.h VideoSW: rewrite VertexLoader to use the VideoCommon one 2014-12-13 10:29:08 +01:00
VertexLoaderX64.cpp Change RunVertices' function arguments. 2015-02-13 12:16:06 -06:00
VertexLoaderX64.h Change RunVertices' function arguments. 2015-02-13 12:16:06 -06:00
VertexManagerBase.cpp Fix a buffer underrun in CalculateZSlope. 2015-01-25 20:31:20 +13:00
VertexManagerBase.h Coding style cleanup from the zfreeze merge 2015-01-24 15:16:48 -05:00
VertexShaderGen.cpp ShaderGen: Fix pixel offset correction 2015-02-11 20:54:15 +01:00
VertexShaderGen.h VideoCommon: Assume we always use a geometry shader, not just for stereoscopy. 2014-12-15 22:47:41 +01:00
VertexShaderManager.cpp Coding style cleanup from the zfreeze merge 2015-01-24 15:16:48 -05:00
VertexShaderManager.h Coding style cleanup from the zfreeze merge 2015-01-24 15:16:48 -05:00
VideoBackendBase.cpp Remove an old GLES define that I missed. 2015-01-23 14:30:23 -06:00
VideoBackendBase.h
VideoCommon.h VideoCommon: Rename s_pCurBufferPointer 2014-12-09 18:56:27 +01:00
VideoCommon.vcxproj xxhash: Add cmake + VS files 2015-01-21 07:35:34 +01:00
VideoCommon.vcxproj.filters VertexLoader: add new JIT 2015-01-18 13:29:34 +01:00
VideoConfig.cpp Merge pull request #1948 from magumagu/remove-efb-cache 2015-01-27 09:42:15 +01:00
VideoConfig.h Merge pull request #1948 from magumagu/remove-efb-cache 2015-01-27 09:42:15 +01:00
VideoState.cpp VideoCommon: Add a separate constants buffer for the geometry shader. 2014-12-14 21:23:13 +01:00
VideoState.h
XFMemory.cpp
XFMemory.h Lighting Attenuation Fixes 2015-01-21 15:55:32 -07:00
XFStructs.cpp VideoCommon: Add a separate constants buffer for the geometry shader. 2014-12-14 21:23:13 +01:00
XFStructs.h