aboutsummaryrefslogtreecommitdiff
path: root/src/video_core
AgeCommit message (Collapse)Author
2020-09-25vk_stream_buffer: Fix initializing Vulkan with NVIDIA on Linuxlat9nq
The previous fix only partially solved the issue, as only certain GPUs that needed 9 or less MiB subtracted would work (i.e. GTX 980 Ti, GT 730). This takes from DXVK's example to divide `heap_size` by 2 to determine `allocable_size`. Additionally tested on my Quadro K4200, which previously required setting it to 12 to boot.
2020-09-25vk_command_pool: Move definition of Pool into the cpp fileLioncash
Allows the implementation details to be changed without recompiling any files that include this header.
2020-09-25vk_command_pool: Make use of override on destructorLioncash
2020-09-25vk_command_pool: Add missing header guardLioncash
2020-09-24More forgetting... duhLevi Behunin
2020-09-24Merge pull request #4711 from lioncash/move5bunnei
arithmetic_integer_immediate: Make use of std::move where applicable
2020-09-24Forgot to apply suggestion here as wellLevi Behunin
2020-09-24Address CommentsLevi Behunin
2020-09-24Start of Integer flags implementationLevi Behunin
2020-09-24arithmetic_integer_immediate: Make use of std::move where applicableLioncash
Same behavior, minus any redundant atomic reference count increments and decrements.
2020-09-23video_core: Fix instances where msbuild always regenerated host shadersReinUsesLisp
When HEADER_GENERATOR was included in the DEPENDS section of custom commands, msbuild assumed this was always modified. Changing this file is not common so we can remove it from there.
2020-09-23Merge pull request #4674 from ReinUsesLisp/timeline-semaphoresbunnei
renderer_vulkan: Make unconditional use of VK_KHR_timeline_semaphore
2020-09-23shader/registry: Silence a -Wshadow warningLioncash
2020-09-23shader/registry: Remove unnecessary namespace qualifiersLioncash
Using statements already make these unnecessary.
2020-09-23shader/registry: Make use of designated initializers where applicableLioncash
Same behavior, less repetition.
2020-09-22control_flow: emplace elements in place within TryQuery()Lioncash
Places data structures where they'll eventually be moved to to avoid needing to even move them in the first place.
2020-09-22control_flow: Make use of std::move in InsertBranch()Lioncash
Avoids unnecessary atomic increments and decrements.
2020-09-22General: Make use of std::nullopt where applicableLioncash
Allows some implementations to avoid completely zeroing out the internal buffer of the optional, and instead only set the validity byte within the structure. This also makes it consistent how we return empty optionals.
2020-09-20renderer_opengl: Remove emulated mailbox presentationReinUsesLisp
Emulated mailbox presentation was causing performance issues on Nvidia's OpenGL driver. Remove it.
2020-09-19vk_query_cache: Hack counter destructor to avoid reserving queriesReinUsesLisp
This is a hack to destroy all HostCounter instances before the base class destructor is called. The query cache should be redesigned to have a proper ownership model instead of using shared pointers. For now, destroy the host counter hierarchy from the derived class destructor.
2020-09-19renderer_vulkan: Make unconditional use of VK_KHR_timeline_semaphoreReinUsesLisp
This reworks how host<->device synchronization works on the Vulkan backend. Instead of "protecting" resources with a fence and signalling these as free when the fence is known to be signalled by the host GPU, use timeline semaphores. Vulkan timeline semaphores allow use to work on a subset of D3D12 fences. As far as we are concerned, timeline semaphores are a value set by the host or the device that can be waited by either of them. Taking advantange of this, we can have a monolithically increasing atomic value for each submission to the graphics queue. Instead of protecting resources with a fence, we simply store the current logical tick (the atomic value stored in CPU memory). When we want to know if a resource is free, it can be compared to the current GPU tick. This greatly simplifies resource management code and the free status of resources should have less false negatives. To workaround bugs in validation layers, when these are attached there's a thread waiting for timeline semaphores.
2020-09-18fermi_2d: Make use of designated initializersLioncash
Same behavior, less repetition. We can also ensure all members of Config are initialized.
2020-09-17Merge pull request #4672 from lioncash/narrowingRodrigo Locatti
decoder/texture: Eliminate narrowing conversion in GetTldCode()
2020-09-17decode/image: Eliminate switch fallthrough in DecodeImage()Lioncash
Fortunately this didn't result in any issues, given the block that code was falling through to would immediately break.
2020-09-17decoder/texture: Eliminate narrowing conversion in GetTldCode()Lioncash
The assignment was previously truncating a u64 value to a bool.
2020-09-16video_core: Enforce -Werror=switchReinUsesLisp
This forces us to fix all -Wswitch warnings in video_core.
2020-09-06video_core: Remove all Core::System references in rendererReinUsesLisp
Now that the GPU is initialized when video backends are initialized, it's no longer needed to query components once the game is running: it can be done when yuzu is booting. This allows us to pass components between constructors and in the process remove all Core::System references in the video backend.
2020-09-03Merge pull request #4611 from lioncash/xbyak2bunnei
externals: Update Xbyak to 5.96
2020-09-03Merge pull request #4575 from lioncash/asyncbunnei
async_shaders: Mark getters as const member functions
2020-08-30vk_device: Fix driver id check on AMD for VK_EXT_extended_dynamic_stateReinUsesLisp
'driver_id' can only be known on Vulkan 1.1 after creating a logical device. Move the driver id check to disable VK_EXT_extended_dynamic_state after the logical device is successfully initialized. The Vulkan device will have the extension enabled but it will not be used.
2020-08-30externals: Update Xbyak to 5.96Lioncash
I made a request on the Xbyak issue tracker to allow some constructors to be constexpr in order to avoid static constructors from needing to execute for some of our register constants. This request was implemented, so this updates Xbyak so that we can make use of it.
2020-08-28vk_device: Blacklist AMD proprietary from VK_EXT_extended_dynamic_stateReinUsesLisp
Vertex binding's <stride> is bugged on AMD's proprietary drivers when using VK_EXT_extended_dynamic_state. Blacklist it for now while we investigate how to report this issue to AMD.
2020-08-27Merge pull request #4524 from lioncash/memory-logbunnei
shader/memory: Amend UNIMPLEMENTED_IF_MSG without a message
2020-08-26Merge pull request #4569 from ReinUsesLisp/glsl-cmakebunnei
video_core/host_shaders: Add CMake integration for string shaders
2020-08-26Merge pull request #4555 from ReinUsesLisp/fix-primitive-topologybunnei
vk_state_tracker: Fix primitive topology
2020-08-26memory_manager: Make use of [[nodiscard]] in the interfaceLioncash
2020-08-26memory_manager: Make operator+ const qualifiedLioncash
This doesn't modify member state, so it can be marked as const.
2020-08-25Merge pull request #4574 from lioncash/const-fnbunnei
memory_manager: Mark IsGranularRange() as a const member function
2020-08-24Merge pull request #4542 from ReinUsesLisp/gpu-init-basebunnei
video_core: Initialize renderer with a GPU
2020-08-24async_shaders: Mark getters as const member functionsLioncash
While we're at it, we can also mark them as nodiscard.
2020-08-24memory_manager: Mark IsGranularRange() as a const member functionLioncash
This doesn't modify internal member state, so it can be marked as const.
2020-08-23gl_texture_cache: Take std::string by reference in DecorateViewName()Lioncash
LabelGLObject takes a string_view, so we don't need to make copies of the std::string.
2020-08-23video_core/fence_manager: Remove unnecessary includesLioncash
Avoids pulling in unnecessary things that can cause rebuilds when they aren't required.
2020-08-23video_core/host_shaders: Add CMake integration for string shadersReinUsesLisp
Add the necessary CMake code to copy the contents in a string source shader (GLSL or GLASM) to a header file then consumed by video_core files. This allows editting GLSL in its own files without having to maintain them in source files. For now, only OpenGL presentation shaders are moved, but we can add GLASM presentation shaders and static SPIR-V generation through glslangValidator in the future.
2020-08-23gl_shader_util: Use std::string_view instead of star pointerReinUsesLisp
This allows us passing any type of string and hinting the length of the string to the OpenGL driver.
2020-08-22video_core: Initialize renderer with a GPUReinUsesLisp
Add an extra step in GPU initialization to be able to initialize render backends with a valid GPU instance.
2020-08-21Merge pull request #4521 from lioncash/optionalcachebunnei
gl_shader_disk_cache: Make use of std::nullopt where applicable
2020-08-21Merge pull request #4523 from lioncash/self-assignbunnei
macro-interpreter: Resolve -Wself-assign-field warning
2020-08-20vk_state_tracker: Fix primitive topologyReinUsesLisp
State track the current primitive topology with a regular comparison instead of using dirty flags. This fixes a bug in dirty flags for this particular state and it also avoids unnecessary state changes as this property is stored in a frequently changed bit field.
2020-08-20vk_device: Use Vulkan 1.0 properlyReinUsesLisp
Enable the required capabilities to use Vulkan 1.0 without validation errors and disable those that are not compatible with it.