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
BoundingBox.h
BPFunctions.cpp
BPFunctions.h
BPMemory.cpp
BPMemory.h
BPStructs.cpp
BPStructs.h
CMakeLists.txt [AArch64] Implement vertex loader recompiler. 2015-02-16 16:51:32 -06:00
CommandProcessor.cpp
CommandProcessor.h
ConstantManager.h Make zfreeze use screenspace coordinates independant of IR. 2015-01-23 03:32:31 +13:00
CPMemory.cpp
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.h Minor consistency changes 2015-01-12 15:18:18 -05:00
Fifo.cpp
Fifo.h
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
GeometryShaderManager.cpp Ensure that ZSlopes save/restore state correctly. 2015-01-23 03:32:31 +13:00
GeometryShaderManager.h
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
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_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
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
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.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
VideoState.h
XFMemory.cpp
XFMemory.h Lighting Attenuation Fixes 2015-01-21 15:55:32 -07:00
XFStructs.cpp
XFStructs.h