Stenzek
8e2c063d62
TextureCache: Implement deferred/batched EFB copies
2018-11-07 16:25:01 +10:00
Stenzek
134d967be2
Refactoring and cleanup of GLInterface (now GLContext)
2018-10-20 21:11:34 +10:00
spycrab
392df8a11d
GL/TextureCache: Clean up inline shader code
2018-08-30 16:05:39 +02:00
Stenzek
f74dbc794c
EFB2RAM: Apply copy filter as a float coefficient after sampling
...
Using 8-bit integer math here lead to precision loss for depth copies,
which broke various effects in games, e.g. lens flare in MK:DD.
It's unlikely the console implements this as a floating-point multiply
(fixed-point perhaps), but since we have the float round trip in our
EFB2RAM shaders anyway, it's not going to make things any worse. If we
do rewrite our shaders to use integer math completely, then it might be
worth switching this conversion back to integers.
However, the range of the values (format) should be known, or we should
expand all values out to 24-bits first.
2018-05-22 12:24:08 +10:00
Markus Wick
c485efdfe1
Merge pull request #6743 from stenzek/faster-disabled-copy-filter
...
TextureConversionShader: Don't sample from adjacent rows when not needed
2018-05-17 10:45:50 +02:00
Stenzek
286d594f32
OGL: Fix incorrect clamping in EFB copies
2018-05-05 17:45:54 +10:00
Stenzek
4faac3a627
TextureConversionShader: Don't sample from adjacent rows when not needed
2018-05-03 14:09:32 +10:00
Stenzek
9e798eec94
Implement EFB copy filter and gamma in hardware backends
...
Also makes y_scale a dynamic parameter for EFB copies, as it doesn't
make sense to keep it as part of the uid, otherwise we're generating
redundant shaders.
2018-04-29 19:05:20 +10:00
Lioncash
50a476c371
Assert: Uppercase assertion macros
...
Macros should be all upper-cased. This is also kind of a wart that's
been sticking out for quite a while now (we avoid prefixing
underscores).
2018-03-14 22:03:12 -04:00
Stenzek
887e3830ba
VideoBackends: Restore the framebuffer as part of the API state
...
It's not often we switch out to draw to the EFB anyway.
2018-03-01 17:31:24 +10:00
Stenzek
3fd4142f36
OGL: Track state of last bound vertex array object
...
This reduces the overhead of calling glBindVertexArray() every time
RestoreAPIState() is called, even when it is redundant.
2018-02-22 19:08:52 +10:00
Stenzek
38e0b6e2ab
AbstractTexture: Move Bind() method to Renderer
...
This makes state tracking simpler, and enables easier porting to command
lists later on.
2018-01-22 13:22:09 +10:00
degasus
02dd062518
VideoCommon: Drop now unused efb2tex matrix generation.
2017-12-06 09:30:03 +01:00
degasus
e2a9ee384f
VideoCommon: Rename TextureConversionShader namespace.
2017-12-02 15:17:39 +01:00
degasus
e8febd0cef
VideoCommon: Create a namespace for TextureConversionShaderGen.
2017-12-02 15:17:39 +01:00
Markus Wick
491c10ec96
VideoBackends: Use VideoCommon shader generators for efb2tex copies.
...
This will generate one shader per copy format. For now, it is the same
shader with the colmat hard coded. So it should already improve the GPU
performance a bit, but a rewrite of the shader generator is suggested.
Half of the patch is done by linkmauve1:
VideoCommon: Reorganise the shader writes.
2017-12-02 15:17:39 +01:00
Stenzek
49a9c33bd7
VideoCommon: Move abstract texture creation function to Renderer
2017-11-22 18:47:04 +10:00
Lioncash
5337e58284
VideoConfig: Make StereoMode an enum class
...
Makes for more strongly-typed identifiers (and doesn't pollute
surrounding namespaces)
2017-11-18 23:19:53 -05:00
iwubcode
53684701fa
HybridXFB: Fix lint errors
2017-11-17 22:11:31 -06:00
iwubcode
76b775d5be
Video Common: Add XFB decoding via the GPU
2017-11-17 22:11:30 -06:00
Michael M
82129d30c9
TextureCache: don't create texture decoding resources if not enabled
2017-10-21 23:06:44 -07:00
Lioncash
6d9ed9dc32
OGL/TextureCache: Move file statics to the TextureCache class
...
These rely on instance state, or are used within instance-based class
member functions, so they should belong to the instance itself instead
of being file statics.
2017-09-17 02:33:56 -04:00
N.E.C
c3a57bbad5
Video: Clearly separate Texture and EFB Copy formats
...
Improve bookkeeping around formats. Hopefully make code less confusing.
- Rename TlutFormat -> TLUTFormat to follow conventions.
- Use enum classes to prevent using a Texture format where an EFB Copy format
is expected or vice-versa.
- Use common EFBCopyFormat names regardless of depth and YUV configurations.
2017-08-03 18:35:29 -07:00
iwubcode
2cdc93f4ab
Video Backends: Split texture cache code out into separate files, introduce 'AbstractTexture'
2017-06-13 00:41:51 -05:00
Shawn Hoffman
e1a3e41bf3
fix various instances of -1 being assigned to unsigned types
2017-06-07 19:52:07 -07:00
Stenzek
cc851c41c1
TextureCache: Move host texture utility functions to VideoCommon
...
The appropriate place for these would be AbstractTexture, once it is
finished.
2017-04-29 13:46:43 +10:00
Stenzek
f5d95dcc86
OGL: Use native compressed textures on supported drivers
2017-04-29 00:44:34 +10:00
Stenzek
f4b848949c
TextureCache: Support compressed textures and pass pitch/size to upload
...
This also removes an extra copy of the image for custom textures.
2017-04-29 00:14:23 +10:00
Stenzek
e9850aa0f2
VideoBackends: Support updated texture encoding shader generators
2017-04-12 00:11:22 +10:00
Stenzek
2492f196a7
TextureCache: Fix incomplete GPU texture decoding of non-square mips
2017-04-07 23:03:14 +10:00
Stenzek
02f887ede0
OGL: Add GPUTimer class for measuring execution time of a draw/dispatch
2017-04-01 12:32:57 +10:00
Stenzek
b01bcb80f4
OGL: Implement GPU texture decoding backend
2017-04-01 12:32:56 +10:00
Stenzek
a8876a29fe
OGL: Use ARB_texture_storage to allocate TextureCache entries
...
This ensures that they are complete textures by decoding time, as when
using compute shaders we write directly to the destination texture.
2017-04-01 12:31:41 +10:00
Stenzek
f8059eae43
OGL: Fix render-target texture mipmap allocation
...
The loop was allocating one-too-many levels, as well as incorrect sizes
for each level. Probably not an issue as mipmapped render targets aren't
used, but the logic should be correct anyway.
2017-04-01 12:31:40 +10:00
Lioncash
273ace7bb7
LightingShaderGen: Remove unnecessary includes
2017-02-01 01:06:00 -05:00
degasus
abf9bb170b
TextureCache: Drop unused parameter in backend API.
2016-12-26 22:10:32 +01:00
degasus
04f319066d
TextureCache: Extract BP enum check to VideoCommon.
...
We have TOO many video backends.
2016-12-26 22:10:21 +01:00
Mat M
9160be50db
Merge pull request #4224 from lioncash/tcache
...
TextureCacheBase: Eliminate static state
2016-12-23 04:33:42 -05:00
Stenzek
accce4294a
TextureCache: Use same color coefficients for EFB2Tex as EFB2RAM
2016-12-15 02:20:46 +10:00
Lioncash
58a5395173
TextureCacheBase: Eliminate static state
2016-12-09 16:50:37 -05:00
Stenzek
828aac7890
VideoBackends: Make TextureCache::CompileShaders return a bool
2016-10-01 01:09:12 +10:00
Lioncash
5b3c74a31a
OGL: Remove unnecessary c_str calls
2016-09-09 06:30:34 -04:00
Pierre Bourdon
3570c7f03a
Reformat all the things. Have fun with merge conflicts.
2016-06-24 10:43:46 +02:00
mimimi085181
bb4d636f34
Copy all layers of textures with CopyRectangleFromTexture
2016-02-14 21:17:06 +01:00
Scott Mansell
d8e5d8659e
TextureCache, fix an incorrect assert.
2015-12-29 14:25:31 +13:00
Lioncash
8ce3a4aa70
ShaderGeneration: Get rid of static buffers
2015-12-26 17:01:54 -05:00
Lioncash
d20ba76ab3
StreamBuffer: Make factory function return a std::unique_ptr
2015-12-21 10:21:38 -05:00
Ryan Houdek
21b708106c
Make sure not to use a GL texture buffer past the max size.
...
The spec says that vendors can set the max texture size to be 65KB and we want 1MB.
Check the maximum supported and drop to the max if it is less than 1MB
2015-11-30 01:18:03 -06:00
degasus
087ba5268a
TextureCache: Rewrite EFB Copy control flow
2015-11-15 12:02:41 +01:00
degasus
dcdf8fd3ce
TextureCache: Split efb2ram from efb2tex
2015-11-15 11:59:52 +01:00