aboutsummaryrefslogtreecommitdiff
path: root/src/video_core
AgeCommit message (Collapse)Author
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.
2020-08-20renderer_vulkan: Create a Vulkan 1.0 instance when 1.1 is not availableReinUsesLisp
This commit doesn't make yuzu compatible with Vulkan 1.0 yet, it only creates an 1.0 instance.
2020-08-20Merge pull request #4546 from lioncash/telemetrybunnei
common/telemetry: Migrate namespace into the Common namespace
2020-08-18Merge pull request #4522 from lioncash/vulk-copybunnei
vulkan/wrapper: Avoid unnecessary copy in EnumerateInstanceExtensionProperties()
2020-08-18common/telemetry: Migrate namespace into the Common namespaceLioncash
Migrates the Telemetry namespace into the Common namespace to make the code consistent with the rest of our common code.
2020-08-17Merge pull request #4535 from lioncash/fileutilbunnei
common/fileutil: Convert namespace to Common::FS
2020-08-17Merge pull request #4443 from ameerj/vk-async-shadersDavid
vulkan_renderer: Async shader/graphics pipeline compilation
2020-08-17Merge pull request #4520 from lioncash/pessimizeDavid
async_shaders: Resolve -Wpessimizing-move warning
2020-08-16Remove unneeded newlines, optional Registry in shader paramsameerj
Addressing feedback from Rodrigo
2020-08-16Morph: Update worker allocation commentAmeer J
Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com>
2020-08-16move thread 1/4 count computation into allocate workers methodameerj
2020-08-16Address feedback, add shader compile notifier, update setting textameerj
2020-08-16Vk Async Worker directly emplace in cacheameerj
2020-08-16Address feedback. Bruteforce delete duplicatesameerj