Stenzek
ca55ba6c1d
Vulkan: Transition texture cache entries before usage
2017-06-10 23:52:39 +10:00
Stenzek
8bb6abacf8
Vulkan: Transition EFB/XFB buffers before beginning swap render pass
...
Image layouts shouldn't be changed within a render pass.
2017-06-10 23:52:32 +10: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
de348fc952
HiresTextures: Support loading uncompressed .DDS files
...
Will load files with formats RGBA8, RGBX8, BGRA8, BGRX8, RGB8.
2017-04-29 13:46:43 +10:00
Stenzek
20cbef8e9f
HiresTextures: Move the maximum mip level check from DDS to main loader
...
This way that the mip count check occurs on .png and uncombined DDS
textures as well.
2017-04-29 13:46:43 +10:00
Stenzek
a6a13f51c1
HiresTextures: Support DXT10 extended header in DDS loader
2017-04-29 13:46:43 +10:00
Stenzek
8761c8244d
HiresTextures: Load full mipmap chain from DDS files
...
This removes the need for multiple texture files to store the mipmap
chain for a texture. As many mipmaps will be loaded as are present in
the DDS file, and any remaining mipmaps will fall back to the old
behavior.
2017-04-29 13:46:43 +10:00
Stenzek
c53a60f3c3
Vulkan: Support native compressed textures
2017-04-29 13:46:42 +10:00
Stenzek
3f18c5e0f1
D3D12: Support native compressed textures
2017-04-29 13:46:42 +10:00
Stenzek
2d75c2ab10
D3D11: Support native compressed textures
2017-04-29 13:46:42 +10:00
Stenzek
f5d95dcc86
OGL: Use native compressed textures on supported drivers
2017-04-29 00:44:34 +10:00
Stenzek
12bde06dc3
GLExtensions: Add GL_EXT_texture_compression_s3tc
2017-04-29 00:14:23 +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
bc8a96d713
HiresTextures: Support parsing DDS files directly
...
This leaves DDS textures using DXT1/3/5 compressed in-memory, which can
be passed directly to the backend.
2017-04-29 00:14:23 +10:00
Stenzek
27ae5b8d34
VideoConfigDiag: Move post-processing shader list to post processor
...
The backends don't use this list at all, and since more than one
backend supports post-processing now, it's duplicate code.
2017-04-25 14:27:05 +10:00
Stenzek
417a4ca206
Vulkan: Implement post-processing backend
...
No new features, just parity with OpenGL.
2017-04-25 14:27:02 +10:00
Stenzek
a10e8b1ef5
VideoCommon: Move the blit methods to the backend class
...
The parameter types will be different for each backend currently,
anyway (e.g. textures/render passes/etc).
2017-04-25 14:25:41 +10:00
Stenzek
fd896bd9e0
OGL: Drop BlendingState.dither
...
How GL_DITHER works is implementation-defined, and we handle the
non-blended case in the pixel shader.
2017-04-18 21:55:23 +10:00
Stenzek
ddc5275071
VideoCommon: Drop SetDitherMode()
...
It was a no-op on all backends apart from GL anyhow.
2017-04-18 21:55:22 +10:00
Stenzek
9dc7358395
Vulkan: Use BlendingState from VideoCommon
...
Remove the internal BlendState union. Also fixes Kirby's Return to
Dreamland shadows.
2017-04-18 21:55:22 +10:00
Stenzek
34ad5b457d
VideoCommon: Add usedualsrc field to BlendingState
...
This is because we re-use BlendingState for our internal drawing (e.g.
RasterFont) and for these shaders, we can't assume the presence of a
second color output.
2017-04-18 21:33:40 +10:00
Stenzek
e370f6a82a
OGL: Use struct for post-processing shader options
...
This removes the need for token pasting, which isn't supported in GLSL
ES. Shouldn't cause any issues unless people are using reserved keywords
as option names.
2017-04-16 14:00:02 +10:00
Stenzek
3fd1e6c2f6
Vulkan: Ensure all frames are written before resizing framedump buffer
...
Prevents destroying a framebuffer that may still be in use by a previous
frame dump.
2017-04-15 20:00:40 +10:00
Stenzek
48da42b49f
Vulkan: Ensure framedump texture is incorrect layout for render/readback
2017-04-15 19:57:25 +10:00
Stenzek
69b0a31938
Vulkan: Clamp framebuffer resolve rectangle to texture size
...
This is invalid and was causing the NVIDIA driver to throw an error.
2017-04-15 19:55:32 +10:00
Stenzek
eef7b6cf7a
Vulkan: Fix invalid resolve at swap time when MSAA is enabled
2017-04-15 18:35:58 +10:00
Stenzek
c8b98dca1a
Vulkan: Raise the number of texel buffer/storage image descriptors
...
Running with GPU texture decoding enabled could cause us to run out of
descriptors within a single frame.
2017-04-14 18:29:53 +10:00
Stenzek
f4bdfe3e0c
Vulkan: Fix incorrect render pass area for out-of-range clears
...
This occured when a game set an out-of-range EFB clear region.
2017-04-14 18:29:48 +10:00
Stenzek
5e7bd03d0b
Vulkan: Linear filter >1xIR EFB copies, matching the other backends
2017-04-12 00:11:22 +10:00
Stenzek
e9850aa0f2
VideoBackends: Support updated texture encoding shader generators
2017-04-12 00:11:22 +10:00
Stenzek
3847e226ab
TextureConversionShader: Consider source format of EFB for EFB2RAM
...
Currently, we use the alpha channel from the EFB even if the current
format does not include an alpha channel. Now, the alpha channel is set
to 1 if the format does not have an alpha channel, as well as truncating
to 5/6 bits per channel. This matches the EFB-to-texture behavior.
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
fdf2efdac6
TextureConversionShader: Add missing swap for index of C14X2 textures
2017-04-06 23:29:40 +10:00
Stenzek
c6075f4c36
TextureConversionShader: Fix compile error in C14X2 decoder
2017-04-06 13:59:06 +10:00
Stenzek
97dc773a3e
D3D: Drop redundant interface TextureEncoder
2017-04-04 22:57:23 +10:00
Stenzek
105be9b514
Android: Add option for enabling GPU texture decoding
2017-04-01 12:32:57 +10:00
Stenzek
739aced97c
Vulkan: Implement compute-shader based GPU texture decoding
2017-04-01 12:32:57 +10:00
Stenzek
5fbc63fbcf
Vulkan: Compute shader support
2017-04-01 12:32:57 +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
79ba946d70
VideoCommon: Changes to TextureCache to support decoding in backend
2017-04-01 12:32:10 +10:00
Stenzek
6ffc16d1b0
VideoCommon: Add texture decoding shader generators
2017-04-01 12:32:10 +10:00
Stenzek
82fd984f3e
VideoBackends: Add configuration field for GPU texture decoding
2017-04-01 12:32:05 +10:00
Stenzek
abc662d69c
OGL: Support compute shaders and emitting GLSL 4.3
...
This also changes bSupportsEarlyFragmentTests to
bSupportsImageLoadStore, as it is used for both.
2017-04-01 12:31:41 +10:00
Stenzek
b987f220e1
VideoBackends: Add support flag for compute shaders
2017-04-01 12:31:41 +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
c8cbbd831d
GLExtensions: Seperate GL_ARB_compute_shader from GL 4.3
...
Allows the usage of glDispatchCompute from GLES (requires GLES 3.1).
2017-04-01 12:31:40 +10:00
Stenzek
4e24bfd0ce
GLExtensions: Seperate GL_ARB_shader_image_load_store from GL 4.2
...
Allows the usage of glBindImageTexture and glMemoryBarrier from GLES
(requires GLES 3.1).
2017-04-01 12:31:40 +10:00
Stenzek
bd15d0352a
GLExtensions: Seperate GL_ARB_texture_storage from GL 4.2
...
This allows us to use glTexStorage on GL3.3 implementations that support
the extension.
2017-04-01 12:31:40 +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
Stenzek
5326a18fdf
OGL: Fix MSAA being forced to 1x
...
This was a regression from the remove-everything-static-from-renderer
PR. As the comment indicates, it would be nice to move all of this logic
out of the Renderer constructor, but this is a much larger change.
2017-03-31 21:55:26 +10:00
Stenzek
724a8437eb
Jit64: Fix crash at startup
...
This was a regression introduced by 4d8d045 . stored_stack_pointer within
PPCSTATE was being accessed before the PPCSTATE (RBP) register was
initialized.
2017-03-26 11:37:55 +10:00
Stenzek
42993eeabc
D3D11: Fix error on startup with >2.5xIR selected
2017-03-10 23:41:20 +10:00
Stenzek
2cd240af0d
VideoBackends: Move max texture size to VideoConfig
...
This stops the virtual method call from within the Renderer constructor.
The initialization here for GL had to be moved to VideoBackend, as the
Renderer constructor will not have been executed before the value is
required.
2017-03-10 00:04:13 +10:00
Stenzek
4012166085
VideoCommon: Fix crash at startup with virtual XFB enabled
2017-03-09 23:39:48 +10:00
Stenzek
725d5bc3a1
D3D11: Drop unused method ReplaceRGBATexture2D
2017-03-04 22:37:10 +10:00
Stenzek
526fa9bc85
D3D11: Use D3D11_USAGE_DEFAULT for all TextureCache textures
2017-03-04 22:36:33 +10:00
Stenzek
4cea9a2f99
Vulkan: Fix underflow in StreamBuffer::WaitForClearSpace
...
This could cause the assertion on line 212 to fail when uploading large
amounts of data in between command buffer executions.
2017-03-04 18:07:04 +10:00
Stenzek
459a5ab554
Android: Move screenshot waiting logic to Renderer
2017-03-04 16:53:16 +10:00
Stenzek
811eafda57
VideoCommon: Store last window request width/height
...
This avoids the need to send a window resize event every frame.
2017-03-04 16:53:12 +10:00
Stenzek
00a0a91513
VideoCommon: Move last EFB scale handling to CalculateTargetSize
2017-03-04 16:53:07 +10:00
Stenzek
afc25fdca0
VideoCommon: Rename Renderer s_ prefixes to m_
2017-03-04 16:42:21 +10:00
Stenzek
238a70b006
VideoCommon: Move some common initialization logic to RenderBase
2017-03-04 16:42:16 +10:00
Stenzek
277829d842
VideoCommon: Eliminate static state in Renderer
2017-03-04 16:39:50 +10:00
Stenzek
2fd77895a2
Vulkan: Fix issue where target rectangle changes weren't detected
...
This was causing issues when toggling the crop setting, as well as some
widescreen hacks.
2017-03-02 21:53:42 +10:00
Stenzek
e2ddb3853e
DriverDetails: Set BUG_PRIMITIVE_RESTART for AMD drivers
2017-02-18 15:07:35 +10:00
Stenzek
50fa135594
Vulkan: Handle BUG_PRIMITIVE_RESTART
2017-02-18 15:07:34 +10:00
Stenzek
4094268009
Vulkan: Use TRIANGLE_LIST when primitive restart is not supported
2017-02-18 15:07:33 +10:00
Stenzek
6965dc0481
Vulkan: Don't enable primitive restart on list topologies
2017-02-18 15:07:32 +10:00
Stenzek
3b218c64b1
Vulkan: Refactor initialization to only use a single instance
...
Hopefully will fix the crash in vkDestroyInstance on the NV Shield TV,
and likely reduce boot times slightly for drivers that take a while
to create instances.
2017-01-29 22:18:53 +10:00
Stenzek
214aea1aea
DSPHWInterface: Use SSSE3 function targeting
2017-01-24 20:04:55 +10:00
Stenzek
d315052552
AudioCommon: Remove unused _M_SSE test
2017-01-24 20:04:55 +10:00
Stenzek
0f978227f5
Common: Use function-level targeting for CRC32 (SSE4.2)
2017-01-24 20:04:55 +10:00
Stenzek
b74029ec57
TextureDecoder: Use target attributes on SSSE3 decoders
2017-01-24 20:04:55 +10:00
Stenzek
0f1b5a05ea
Common: Support for function-specific instruction set target on x64
2017-01-24 20:04:55 +10:00
Stenzek
2f223e24dc
TextureDecoder: Seperate each format into its own function
2017-01-10 20:41:00 +10:00
Stenzek
176177af49
GeometryShaderGen: Use lower-left origin for point texture coordinates
...
From what I can tell, the emulated GPU places (0,0) at the lower left of
the image, and we were generating texture coordinates so that (0,0) was
at the upper-left in the expansion geometry shader, causing textures
used by point sprites to be flipped vertically.
Fixes the upside-down A button in Mario Golf.
2017-01-04 20:23:07 +10:00
Stenzek
18792b2328
FifoPlayer: Don't set BPMEM_PRELOAD_MODE on load
...
Since in this case we're setting it based on the state at record start
time, not when a register is loaded, UseMemory would not be called, so
this could potentially wipe out texture memory that was valid.
2017-01-03 21:16:05 +10:00
Stenzek
5f3c878ba2
FifoPlayer: Save/restore texture memory state for fifo logs
2017-01-03 21:16:05 +10:00
Stenzek
438989668e
FifoDataFile: Add support for storing texture memory state
...
This bumps the file version to 4.
2017-01-03 21:16:04 +10:00
Stenzek
5b315b7bb4
FifoPlayer: Reload initial state when looping back to first frame
...
This should ensure that when playing with loop enabled, the first frame is
in the same state each time. There is potentially still issues when the
start frame is set to something other than zero, but I'm not sure how we
could work around this without capturing the entire state on each frame.
2017-01-03 17:32:45 +10:00
Stenzek
e6249619a0
Vulkan/GL: Set the alpha channel to 0 when creating the EFB framebuffer
2016-12-27 13:06:08 +10:00
Stenzek
d1dd910f17
Vulkan: Clear alpha channel to 0 when pixel format has no alpha channel
2016-12-27 12:59:52 +10:00
Stenzek
9290bf5844
Vulkan: Fix crash where a potentially deleted buffer is referenced
...
This happened when the geometry shader was disabled, and the uniform
buffer was grown to a larger size. The update would be skipped, leaving
the old buffer to be included in the descriptor set.
2016-12-19 22:00:42 +10:00
Stenzek
344f2e57f6
VideoCommon: Use avg(color1, color2) for color3 in CMPR textures
2016-12-19 20:17:44 +10:00
Stenzek
accce4294a
TextureCache: Use same color coefficients for EFB2Tex as EFB2RAM
2016-12-15 02:20:46 +10:00
Stenzek
d6cdf49769
VideoSoftware: Don't drop least significant bit of 5-bit blue channels
2016-12-14 23:56:06 +10:00
Stenzek
5aaa5141ed
PixelShaderGen: Fix incorrect indexing of tevLerpBias
...
Fixes the white box in the fortune street fifolog.
2016-12-13 00:03:25 +10:00
Stenzek
607ce40f0b
OGL: Fix black screen when MSAA is enabled
2016-12-12 17:51:19 +10:00
Stenzek
af706efaef
Vulkan: Fix viewport depth when depth clamp is unsupported
2016-12-09 22:45:10 +10:00
Stenzek
8f97a24904
Vulkan: Enable GS instancing
2016-12-04 20:53:49 +10:00
Stenzek
9736198c3b
Vulkan: Use explicit barriers instead of dependancies
...
At least on NV, some of these don't seem to have the intended effect. One
known instance of this is in texture conversion.
2016-12-04 20:10:13 +10:00
Stenzek
a475792163
Vulkan: Fix incorrect logic in readback preemption
...
This could have been causing a large number of command buffer
submissions per frame, depending on when the readbacks occured.
2016-12-04 20:10:13 +10:00
Stenzek
58978c1440
Vulkan: Faster path for decoding XFB data
...
Using a texel buffer as the copy destination removes the need to copy to
an intermediate texture first.
2016-12-04 20:10:13 +10:00
Stenzek
804cd0ff03
Vulkan: Move XFB encoding/decoding to TextureConverter
2016-12-04 20:10:13 +10:00
Stenzek
d67463e0a7
Vulkan: Simplify palette texture conversion
2016-12-04 20:10:13 +10:00
Stenzek
add638538b
Vulkan: Combine PaletteTextureConverter and TextureEncoder classes
2016-12-04 20:10:13 +10:00
Stenzek
804af42ccc
Vulkan: Support binding texel buffers in UtilityShaderDraw
2016-12-04 20:10:13 +10:00
Stenzek
e241ec6666
Vulkan: Implement StagingTexture2D on top of StagingBuffer
...
Greatly simplifies things, and we weren't using the linear texture
implementation anyway.
2016-12-04 20:10:13 +10:00
Stenzek
4bc0e14995
Vulkan: Use an enumeration to index pipeline layouts
2016-12-04 20:10:13 +10:00