aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/shader
AgeCommit message (Collapse)Author
2020-11-24Merge pull request #3681 from lioncash/componentRodrigo Locatti
decoder/image: Fix incorrect G24R8 component sizes in GetComponentSize()
2020-11-20async_shaders: emplace threads into the worker thread vectorLioncash
Same behavior, but constructs the threads in place instead of moving them.
2020-11-20async_shaders: Simplify implementation of GetCompletedWork()Lioncash
This is equivalent to moving all the contents and then clearing the vector. This avoids a redundant allocation.
2020-11-20async_shaders: Simplify moving data into the pending queueLioncash
2020-11-20async_shaders: std::move data within QueueVulkanShader()Lioncash
Same behavior, but avoids redundant copies. While we're at it, we can simplify the pushing of the parameters into the pending queue.
2020-11-05Merge pull request #4854 from ReinUsesLisp/cube-array-shadowbunnei
shader: Partially implement texture cube array shadow
2020-11-01Merge pull request #4865 from ameerj/async-threadcountbunnei
async_shaders: Increase Async worker thread count for >8 thread cpus
2020-10-29async_shaders: Increase Async worker thread count for 8+ thread cpusameerj
Adds 1 async worker thread for every 2 available threads above 8
2020-10-28shader: Partially implement texture cube array shadowReinUsesLisp
This implements texture cube arrays with shadow comparisons but doesn't fix the asserts related to it. Fixes out of bounds reads on swizzle constructors and makes them use bounds checked ::at instead of the unsafe operator[].
2020-10-28shader/arithmetic: Implement FCMP immediate + register variantReinUsesLisp
Trivially add the encoding for this.
2020-10-07shader/texture: Implement CUBE texture type for TMML and fix arraysReinUsesLisp
TMML takes an array argument that has no known meaning, this one appears as the first component in gpr8 followed by s, t and r. Skip this component when arrays are being used. Also implement CUBE texture types. - Used by Pikmin 3: Deluxe Demo.
2020-09-26Merge pull request #4703 from lioncash/desig7bunnei
shader/registry: Make use of designated initializers where applicable
2020-09-24Merge pull request #4711 from lioncash/move5bunnei
arithmetic_integer_immediate: Make use of std::move where applicable
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-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-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-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 #4575 from lioncash/asyncbunnei
async_shaders: Mark getters as const member functions
2020-08-27Merge pull request #4524 from lioncash/memory-logbunnei
shader/memory: Amend UNIMPLEMENTED_IF_MSG without a message
2020-08-24async_shaders: Mark getters as const member functionsLioncash
While we're at it, we can also mark them as nodiscard.
2020-08-17Merge pull request #4443 from ameerj/vk-async-shadersDavid
vulkan_renderer: Async shader/graphics pipeline compilation
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
2020-08-16Vk Async pipeline compilationameerj
2020-08-14shader/memory: Amend UNIMPLEMENTED_IF_MSG without a messageLioncash
We need to provide a message for this variant of the macro, so we can simply log out the type being used.
2020-08-14async_shaders: Resolve -Wpessimizing-move warningLioncash
Prevents pessimization of the move constructor (which thankfully didn't actually happen in practice here, given std::thread isn't copyable).
2020-08-13General: Tidy up clang-format warnings part 2Lioncash
2020-07-24Merge pull request #4391 from lioncash/nrvobunnei
video_core: Allow copy elision to take place where applicable
2020-07-21Merge pull request #4361 from ReinUsesLisp/lane-idRodrigo Locatti
decode/other: Implement S2R.LaneId
2020-07-21video_core: Allow copy elision to take place where applicableLioncash
Removes const from some variables that are returned from functions, as this allows the move assignment/constructors to execute for them.
2020-07-21Merge pull request #4324 from ReinUsesLisp/formatsbunnei
video_core: Fix, add and rename pixel formats
2020-07-18Fix style issuesDavid Marcec
2020-07-17Remove duplicate configDavid Marcec
2020-07-17Use conditional varDavid Marcec
2020-07-17async shadersDavid Marcec
2020-07-16decode/other: Implement S2R.LaneIdReinUsesLisp
This maps to host's thread id. - Fixes graphical issues on Paper Mario.