ameerj
82906e26a5
configure_graphics: Add GPU nvdec decoding as an option
Some system configurations may see visual regressions or lower performance using GPU decoding compared to CPU decoding. This setting provides the option for users to specify their decoding preference.
Co-Authored-By: yzct12345 <87620833+yzct12345@users.noreply.github.com>
5 years ago
ameerj
7cd52be8c4
codec: Improve libav memory alloc and cleanup
5 years ago
ameerj
5fd82a4ec1
codec: Fallback to CPU decoding if no compatible GPU format is found
5 years ago
lat9nq
3714fd580f
cmake: Add VDPAU and NVDEC support to FFmpeg
Adds {h264_,vp9_}{nvdec,vdpau} hwaccels.
5 years ago
ameerj
899cf73819
vk_blit_screen: Fix non-accelerated texture size calculation
Addresses the potential OOB access in UnswizzleTexture.
5 years ago
Merry
891e19ef4c
xbyak: Update include path
5 years ago
ameerj
f885866fba
codec: Replace deprecated av_init_packet usage
5 years ago
ameerj
561fd5f7a4
nvdec: Implement GPU accelerated decoding for all platforms
Supplements the VAAPI intel gpu decoder by implementing the D3D11VA decoder for Windows, and CUVID/VDPAU for Nvidia and AMD on drivers linux respectively.
5 years ago
yzct12345
4f7ee3d7c6
decoders: Templates allow memcpy optimizations
5 years ago
ameerj
8236b4f4d7
vic: Specify sws_scale height stride.
Silences a sws_scale runtime warning about unaligned strides.
5 years ago
ameerj
4cd45cf374
vp9: Ensure the first frame is complete
Silences a runtime error due to the first frame missing the frame data, and being set to hidden despite being a key-frame.
5 years ago
yzct12345
3c7d3363c1
texture_cache: Address ameerj's review
5 years ago
Robin Kertels
f8f27b6caf
vulkan_memory_allocator: Respect bufferImageGranularity
5 years ago
ameerj
f52a3de990
nvdec: Better logging for unimplemented codecs
5 years ago
yzct12345
0cef80ec92
texture_cache: Address ameerj's review
5 years ago
ameerj
b34ded024c
vp9: Cleanup unused variables
With reference frames refreshes fix, we no longer need to buffer two frames in advance.
We can also remove other unused or otherwise unneeded variables.
5 years ago
ameerj
27969c5943
vp9: Fix reference frame refreshes
This resolves the artifacting when decoding VP9 streams.
5 years ago
yzct12345
e99a125e19
texture_cache: Don't change copyright year
5 years ago
yzct12345
4436e63616
texture_cache: Address ameerj's review
5 years ago
yzct12345
e85149c507
texture_cache: Split templates out
5 years ago
yzct12345
e13e98d99d
nvdec: Implement VA-API hardware video acceleration ( #6713 )
* nvdec: VA-API
* Verify formatting
* Forgot a semicolon for Windows
* Clarify comment about AV_PIX_FMT_NV12
* Fix assert log spam from missing negation
* vic: Remove forgotten debug code
* Address lioncash's review
* Mention VA-API is Intel/AMD
* Address v1993's review
* Hopefully fix CMakeLists style this time
* vic: Improve cache locality
* vic: Fix off-by-one error
* codec: Async
* codec: Forgot the GetValue()
* nvdec: Address ameerj's review
* codec: Fallback to CPU without VA-API support
* cmake: Address lat9nq's review
* cmake: Make VA-API optional
* vaapi: Multiple GPU
* Apply suggestions from code review
Co-authored-by: Ameer J <52414509+ameerj@users.noreply.github.com>
* nvdec: Address ameerj's review
* codec: Use anonymous instead of static
* nvdec: Remove enum and fix memory leak
* nvdec: Address ameerj's review
* codec: Remove preparation for threading
Co-authored-by: Ameer J <52414509+ameerj@users.noreply.github.com>
5 years ago
yzct12345
46e4e6707f
decoders: Optimize swizzle copy performance ( #6790 )
This makes UnswizzleTexture up to two times faster. It is the main bottleneck in NVDEC video decoding.
5 years ago
ameerj
bfb2325618
astc_decoder: Reduce workgroup size
This reduces the amount of over dispatching when there are odd dimensions (i.e. ASTC 8x5), which rarely evenly divide into 32x32.
5 years ago
ameerj
2ff4eb5def
astc_decoder: Compute offset swizzles in-shader
Alleviates the dependency on the swizzle table and a uniform which is constant for all ASTC texture sizes.
5 years ago
ameerj
59ff9e51f2
astc_decoder: Make use of uvec4 for payload data
5 years ago
ameerj
8f9c7a4ba2
astc_decoder: Simplify Select2DPartition
5 years ago
ameerj
958ede1ed9
astc_decoder: Optimize the use EncodingData
This buffer was a list of EncodingData structures sorted by their bit length, with some duplication from the cpu decoder implementation.
We can take advantage of its sorted property to optimize its usage in the shader.
Thanks to wwylele for the optimization idea.
5 years ago
ameerj
f4409c9db9
astc.h: Move data to cpp implementation
Moves leftover values that are no longer used by the gpu decoder back to the cpp implementation.
5 years ago
ReinUsesLisp
2eaec1b7ee
vk_rasterizer: Flip viewport on Y_NEGATE
Matches OpenGL's behavior. I don't believe this register flips geometry,
but we have to try to match behavior on both backends.
5 years ago
ameerj
9629e74364
renderers: Add explicit invert_y bool to screenshot callback
OpenGL and Vulkan images render in different coordinate systems. This allows us to specify the coordinate system of the screenshot within each renderer
5 years ago
ameerj
6733ae9aab
renderer_vulkan: Implement screenshots
5 years ago
ameerj
317f238e1d
vk_blit_screen: Add public CreateFramebuffer method
5 years ago
ameerj
870a92bd78
vk_blit_screen: Make Draw method more generic
Allows specifying the framebuffer and render area dimensions, rather than being hard coded for the render window.
5 years ago
ReinUsesLisp
482c1ec8e5
renderer_vulkan: Add setting to log pipeline statistics
Use VK_KHR_pipeline_executable_properties when enabled and available to
log statistics about the pipeline cache in a game.
For example, this is on Turing GPUs when generating a pipeline cache
from Super Smash Bros. Ultimate:
Average pipeline statistics
==========================================
Code size: 6433.167
Register count: 32.939
More advanced results could be presented, at the moment it's just an
average of all 3D and compute pipelines.
5 years ago
Lioncash
2fa5f631c3
render_target: Add missing initializer for size extent
Everything else has a default constructor that does the straightforward
thing of initializing most members to a default value, except for the
size.
We explicitly initialize the size (and others, for consistency), to
prevent potential uninitialized reads from occurring. Particularly given
the largeish surface area that this struct is used in.
5 years ago
Lioncash
23ec5faf24
video_core/engine: Consistently initialize rasterizer pointers
Ensures all of the engines have consistent and deterministic
initialization of the rasterizer pointers.
5 years ago
Lioncash
be66e2a272
vulkan_wrapper: Fix SetObjectName() always indicating objects as images
We should be using the passed in object type instead.
5 years ago
Lioncash
dd25abba68
buffer_cache: Remove unused small_vector in CommitAsyncFlushesHigh()
Given this is non-trivial, the constructor is required to execute, so
this removes a bit of redundant codegen.
5 years ago
Lioncash
ac3aa96ebc
gl_shader_cache: Remove unused variable
5 years ago
Lioncash
f902b4b167
vk_compute_pass: Remove unused captures
Resolves two compiler warnings.
5 years ago
Robin Kertels
534c86587b
vk_staging_buffer_pool: Fall back to host memory when allocation fails
5 years ago
ReinUsesLisp
5afcd587e3
vk_stream_buffer: Remove unused stream buffer
Remove unused file.
5 years ago
ReinUsesLisp
8d86e9a9d7
vk_compute_pass: Fix pipeline barrier for indexed quads
Use an index buffer barrier instead of a vertex input read barrier.
5 years ago
ReinUsesLisp
b53503b0fe
vk_buffer_cache: Add transform feedback usage to null buffer
Fixes bad API usages on Vulkan.
5 years ago
ameerj
2fef43b32a
renderer_base: Removed redundant settings
use_framelimiter was not being used internally by the renderers.
set_background_color was always set to true as there is no toggle for the renderer background color, instead users directly choose the color of their choice.
5 years ago
ameerj
aeff61a0cc
general: Rename "Frame Limit" references to "Speed Limit"
This setting is best referred to as a speed limit, as it involves the limits of all timing based aspects of the emulator, not only framerate.
This allows us to differentiate it from the fps unlocker setting.
5 years ago
ReinUsesLisp
7efec6bce4
vulkan/blit_image: Commit descriptor sets within worker thread
Fixes race condition caused. The descriptor pool is not thread safe, so
we have to commit descriptor sets within the same thread.
5 years ago
ReinUsesLisp
6c7f6e1228
vulkan_device: Blacklist Volta and older from VK_KHR_push_descriptor
Causes crashes on Link's Awakening intro. It's hard to debug if it's our
fault due to bugs in validation layers.
5 years ago
ReinUsesLisp
c29f2c9507
Revert "renderers: Disable async shader compilation"
This reverts commit 4a15276728 .
5 years ago
ReinUsesLisp
8a74a2c895
opengl: Fix asynchronous shaders
Wait for shader to build before configuring it, and wait for the shader
to build before sharing it with other contexts.
5 years ago