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
Stenzek
cd3481fbc7
Vulkan: Differentiate between descriptor set layouts and bind points
...
This also moves the pipeline and descriptor set layouts used for texture
conversion (texel buffers) to ObjectCache, and shares a binding location
with the SSBO set.
2016-12-04 20:10:13 +10:00
Stenzek
4e9018049d
Vulkan: Support logging debug reports without enabling validation layers
...
There is a caveat, Host GPU must be checked prior to starting the game, as
we can't enable the extension at runtime without recreating the instance.
2016-12-04 19:55:12 +10:00
Stenzek
1cfb0a1185
Vulkan: Fix deadlock in some resize scenarios
...
Only have experienced this on a few occasions when using the anv driver.
2016-12-04 19:12:33 +10:00
Stenzek
2ef884893a
Vulkan: Fix map error when texture dumping is enabled
2016-12-04 00:23:34 +10:00
Stenzek
4c860ddb70
Vulkan: Fix typo in PopulateBackendInfoMultisampleModes
2016-12-04 00:23:30 +10:00
Stenzek
730ec3809a
Vulkan: Remove unused variable
2016-12-04 00:23:25 +10:00
Stenzek
107e8c8ee7
OGL: Fix assertion when minimizing window
...
Also fixes a potential divide by zero in Renderer::RenderText.
2016-12-03 20:35:14 +10:00
Stenzek
7b1966a680
Vulkan: Fix assertion triggering when geometry shaders are unsupported
...
Happened when loading the pipeline UID cache.
2016-12-02 17:37:10 +10:00
Stenzek
ca691a9d95
Vulkan: Allow re-use of uniform buffers when doing per-stage uploads
...
This is safe now because we invalidate the pointers after submitting a
command buffer.
2016-11-30 23:34:46 +10:00
Stenzek
6a4eba1153
Vulkan: Replace explicit command buffer submits with wrapper function
...
Should we ever introduce anything else that has to be done when a command
buffer is executed (e.g. invalidating constants from previous commit), we
don't have to update all the callers.
2016-11-30 23:14:36 +10:00
Stenzek
3adeacb78d
Vulkan: Fix case where uniforms could be overwritten
...
If a draw caused a command buffer submission, the current uniform storage
should not be used for the new command buffer.
2016-11-30 23:14:35 +10:00
Stenzek
4c11735bd5
Vulkan: Fix case where a draw's vertices could be overwritten
...
This could happen because the vertex memory was already committed, if a
uniform buffer allocation failed and caused a command buffer to be
executed, it would be associated with the previous command buffer rather
than the buffer containing the draw that consumed these vertices.
2016-11-30 22:45:00 +10:00
Stenzek
37550501cc
Vulkan: Fix incorrect handling of buffer wrap-around in StreamBuffer
...
This was happening when a fence wait happened mid-frame. The data written
between the fence being queued and the allocation occuring was incorrectly
assumed to be consumed by the GPU.
2016-11-30 22:44:52 +10:00
Stenzek
7353cae707
GLInterface: Implement core and shared context creation for WGL
2016-11-29 20:04:32 +10:00
Stenzek
b81dee8b9a
OGL: Support full-resolution frame dumping
2016-11-28 21:54:56 +10:00
Stenzek
93221e7f48
OGL: Move frame rendering procedures to seperate methods
2016-11-28 21:54:56 +10:00
Stenzek
1c1a686f63
Vulkan: Support full resolution frame dumping
2016-11-28 21:54:55 +10:00
Stenzek
adc22a5e20
VideoCommon: Add method for calculating full-scale framedump rectangles
2016-11-28 21:54:54 +10:00
Stenzek
8d48319414
Vulkan: Validate the pipeline cache before using it
...
This ensures that if a user changes adapters or vendors we're not passing
invalid data to the driver.
2016-11-28 21:21:55 +10:00
Stenzek
9604b336c8
Vulkan: Don't destroy the device's pipeline cache on MSAA mode change
...
The user could switch back again, and this would mean this data would be
lost. Disk space is cheap, and it's not going to be much.
2016-11-28 21:21:54 +10:00
Stenzek
aac66a1b61
Vulkan: Implement a pipeline UID cache
...
This stores enough information to recreate the pipeline, including the
shader UIDs, blend/depth/rasterization state, primitive and vertex format.
2016-11-28 21:21:53 +10:00
Stenzek
6db0ee9561
VideoCommon: Remove backbuffer size parameters from methods
...
We have the s_backbuffer_{width,height} fields to represent this, so
there's no point in passing them as parameters every time.
2016-11-28 20:14:59 +10:00
Stenzek
a83ca587c6
VideoCommon: Make FramebufferManagerBase::GetTargetSize public
2016-11-28 20:14:59 +10:00
Stenzek
a0a62c0f46
VideoConfig: Add option for full-resolution frame dumping
2016-11-28 20:14:59 +10:00
Stenzek
6d0b9b816f
VideoCommon: Support dumping frames to images
...
This is mainly for potential Android fifoci usage, and thus is not
exposed anywhere in the UI. To enable, set DumpFramesAsImages under
Settings in GFX.ini.
2016-11-23 12:07:49 +10:00
Stenzek
1aecf90765
DolphinNoGUI: Receive resize events and notify backend when this occurs
...
Solves the viewport sizing issue for backends that cannot tell when the
window is resized (Vulkan on NV at least).
2016-11-19 23:03:20 +10:00
Stenzek
d6d3341183
D3D: Fix strided XFB copies
2016-11-19 20:29:51 +10:00
Stenzek
6b88a854a7
Vulkan: Handle strided XFB copies
...
Where src_rect.width * 2 != dst_stride.
2016-11-19 20:29:47 +10:00