aboutsummaryrefslogtreecommitdiff
path: root/src/video_core
AgeCommit message (Collapse)Author
2020-06-30Merge pull request #4176 from ReinUsesLisp/compatible-formatsFernando Sahmkow
texture_cache: Check format compatibility before copying
2020-06-30Merge pull request #4157 from ReinUsesLisp/unified-turingFernando Sahmkow
gl_device: Enable NV_vertex_buffer_unified_memory on Turing devices
2020-06-30Merge pull request #4191 from Morph1984/vertex-formatsRodrigo Locatti
maxwell_to_gl/vk: Reorder vertex formats
2020-06-30macro: Add support for "middle methods" on the code cache (#4112)David
Macro code is just uploaded sequentially from a starting address, however that does not mean the entry point for the macro is at that address. This PR adds preliminary support for executing macros in the middle of our cached code.
2020-06-29maxwell_to_gl: Rename VertexType() to VertexFormat()Morph
2020-06-29Merge pull request #4140 from ReinUsesLisp/validation-layersRodrigo Locatti
renderer_vulkan: Update validation layer name and test before enabling
2020-06-28maxwell_to_vk: Reorder vertex formats and add A2B10G10R10 for all types ↵Morph
except float
2020-06-28maxwell_to_gl: Add 32 bit component sizes to (un)signed scaled formatsMorph
Add 32 bit component sizes to (un)signed scaled formats and group (un)signed normalized, scaled, and integer formats together.
2020-06-27General: Tune the priority of main emulation threads so they have higher ↵Fernando Sahmkow
priority than less important helper threads.
2020-06-27General: Correct rebase, sync gpu and context management.Fernando Sahmkow
2020-06-27General: Setup yuzu threads' microprofile, naming and registry.Fernando Sahmkow
2020-06-27General: Recover Prometheus project from harddrive failure Fernando Sahmkow
This commit: Implements CPU Interrupts, Replaces Cycle Timing for Host Timing, Reworks the Kernel's Scheduler, Introduce Idle State and Suspended State, Recreates the bootmanager, Initializes Multicore system.
2020-06-26Merge pull request #4147 from ReinUsesLisp/hset2-immbunnei
shader/half_set: Implement HSET2_IMM
2020-06-26texture_cache: Test format compatibility before copyingReinUsesLisp
Avoid illegal copies. This intercepts the last step of a copy to avoid generating validation errors or corrupting the driver on some instances. We can create views and emit copies accordingly in future commits and remove this last-step validation.
2020-06-26Merge pull request #4144 from FernandoS27/tt-fixbunnei
TextureCache: Fix case where layer goes off bound.
2020-06-26Merge pull request #4111 from ReinUsesLisp/preserve-contents-vkbunnei
vk_rasterizer: Don't preserve contents on full screen clears
2020-06-26video_core/compatible_formats: Table to test if two formats are legal to ↵ReinUsesLisp
view or copy Add a flat table to test if it's legal to create a texture view between two formats or copy betweem them. This table is based on ARB_copy_image and ARB_texture_view. Copies are more permissive than views.
2020-06-25Merge pull request #4151 from ReinUsesLisp/gl-invalidationsRodrigo Locatti
gl_shader_cache: Avoid use after move for program size
2020-06-25gl_device: Fix IsASTCSupportedDavid Marcec
Other targets were never actually checked
2020-06-25gl_device: Enable NV_vertex_buffer_unified_memory on Turing devicesReinUsesLisp
Once we make sure not to corrupt Nvidia's driver, we can safely use resident buffers on Turing devices. See GitHub pull request #4156
2020-06-24Merge pull request #4105 from ReinUsesLisp/resident-buffersbunnei
gl_rasterizer: Use NV_vertex_buffer_unified_memory for vertex buffer robustness
2020-06-24Merge pull request #4083 from Morph1984/B10G11R11Fbunnei
decode/image: Implement B10G11R11F
2020-06-24Merge pull request #4046 from ogniK5377/macro-hle-prodFernando Sahmkow
Add support for HLEing Macros
2020-06-24buffer_cache: Use buffer methods instead of cache virtual methodsReinUsesLisp
2020-06-24gl_stream_buffer: Use InvalidateBufferData instead unmap and mapReinUsesLisp
Making the stream buffer resident increases GPU usage significantly on some games. This seems to be addressed invalidating the stream buffer with InvalidateBufferData instead of using a Unmap + Map (with invalidation flags).
2020-06-24gl_rasterizer: Use NV_vertex_buffer_unified_memory for vertex buffer robustnessReinUsesLisp
Switch games are allowed to bind less data than what they use in a vertex buffer, the expected behavior here is that these values are read as zero. At the moment of writing this only D3D12, OpenGL and NVN through NV_vertex_buffer_unified_memory support vertex buffer with a size limit. In theory this could be emulated on Vulkan creating a new VkBuffer for each (handle, offset, length) tuple and binding the expected data to it. This is likely going to be slow and memory expensive when used on the vertex buffer and we have to do it on all draws because we can't know without analyzing indices when a game is going to read vertex data out of bounds. This is not a problem on OpenGL's BufferAddressRangeNV because it takes a length parameter, unlike Vulkan's CmdBindVertexBuffers that only takes buffers and offsets (the length is implicit in VkBuffer). It isn't a problem on D3D12 either, because D3D12_VERTEX_BUFFER_VIEW on IASetVertexBuffers takes SizeInBytes as a parameter (although I am not familiar with robustness on D3D12). Currently this only implements buffer ranges for vertex buffers, although indices can also be affected. A KHR_robustness profile is not created, but Nvidia's driver reads out of bound vertex data as zero anyway, this might have to be changed in the future. - Fixes SMO random triangles when capturing an enemy, getting hit, or looking at the environment on certain maps.
2020-06-24gl_buffer_cache: Mark buffers as residentReinUsesLisp
Make stream buffer and cached buffers as resident and query their address. This allows us to use GPU addresses for several proprietary Nvidia extensions.
2020-06-24gl_device: Expose NV_vertex_buffer_unified_memory except on TuringReinUsesLisp
Expose NV_vertex_buffer_unified_memory when the driver supports it. This commit adds a function the determine if a GL_RENDERER is a Turing GPU. This is required because on Turing GPUs Nvidia's driver crashes when the buffer is marked as resident or on DeleteBuffers. Without a synchronous debug output (single threaded driver), it's likely that the driver will crash in the first blocking call.
2020-06-24gl_stream_buffer: Always use a non-coherent bufferReinUsesLisp
2020-06-24gl_stream_buffer: Always use persistent memory mapsReinUsesLisp
yuzu no longer supports platforms without persistent maps.
2020-06-24Merge pull request #4129 from Morph1984/texture-shadow-lod-workaroundRodrigo Locatti
gl_shader_decompiler: Workaround textureLod when GL_EXT_texture_shadow_lod is not available
2020-06-24addressed issuesDavid Marcec
2020-06-24clear mme draw modeDavid Marcec
We already draw, so we can clear it
2020-06-24Addressed issuesDavid Marcec
2020-06-24Fix constbuffer for 0217920100488FF7David Marcec
2020-06-24Macro HLE supportDavid Marcec
2020-06-23gl_shader_cache: Avoid use after move for program sizeReinUsesLisp
All programs had a size of zero due to this bug, skipping invalidations. While we are at it, remove some unused forward declarations.
2020-06-23Merge pull request #4127 from lioncash/dst-typobunnei
texture_cache: Fix incorrect address used in a DeduceSurface() call
2020-06-22shader/half_set: Implement HSET2_IMMReinUsesLisp
Add HSET2_IMM. Due to the complexity of the encoding avoid using BitField unions and read the relevant bits from the code itself. This is less error prone.
2020-06-22TextureCache: Fix case where layer goes off bound.Fernando Sahmkow
The returned layer is expected to be between 0 and the depth of the surface, anything larger is off bounds.
2020-06-22Merge pull request #4110 from ReinUsesLisp/direct-upload-setsRodrigo Locatti
vk_update_descriptor: Upload descriptor sets data directly
2020-06-22renderer_vulkan: Update validation layer name and test before enablingReinUsesLisp
Update validation layer string to VK_LAYER_KHRONOS_validation. While we are at it, properly check for available validation layers before enabling them.
2020-06-21Merge pull request #4122 from lioncash/hidebunnei
video_core: Eliminate some variable shadowing
2020-06-21Merge pull request #4126 from lioncash/noexceptbunnei
vulkan/wrapper: Remove noexcept from GetSurfaceCapabilitiesKHR()
2020-06-20gl_shader_decompiler: Enable GL_EXT_texture_shadow_lod if availableMorph
Enable GL_EXT_texture_shadow_lod if available. If this extension is not available, such as on Intel/AMD proprietary drivers, use textureGrad as a workaround.
2020-06-20gl_device: Check for GL_EXT_texture_shadow_lodMorph
2020-06-20Merge pull request #4120 from lioncash/arbbunnei
gl_arb_decompiler: Avoid several string copies
2020-06-20macro_jit_x64: Use ecx for shift registerMerryMage
shl/shr only accept cl as their second argument
2020-06-20texture_cache: Fix incorrect address used in a DeduceSurface() callLioncash
Previously the source was being deduced twice in a row.
2020-06-20Merge pull request #4125 from lioncash/macro-shiftmerry
macro_jit_x64: Amend readability of Compile_ExtractShiftLeftRegister()