summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_rasterizer.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Accelerate DMA: Use texture cache async downloads to perform the copiesFernando Sahmkow2023-04-291-3/+3
| | | | | | to host. WIP
* TextureCache: refactor DMA downloads to allow multiple buffers.Fernando Sahmkow2023-04-291-1/+1
|
* Merge pull request #9943 from vonchenplus/gentlemanliamwhite2023-03-131-0/+1
|\ | | | | video_core: Fix inline_index and draw_texture error
| * video_core: Fix ogl status error when draw_textureFengChen2023-03-121-0/+1
| |
* | general: fix spelling mistakesLiam2023-03-121-1/+1
| |
* | gl_rasterizer: Implement AccelerateDMA DmaBufferImageCopyameerj2023-03-071-2/+43
|/
* Merge pull request #9556 from vonchenplus/draw_textureliamwhite2023-01-191-1/+43
|\ | | | | video_core: Implement maxwell3d draw texture method
| * video_core: Implement opengl/vulkan draw_textureFeng Chen2023-01-051-1/+43
| |
* | VideoCore: Fix OGL cache invalidation.Fernando Sahmkow2023-01-081-0/+4
|/
* Video_core: Address feedbackFernando Sahmkow2023-01-041-9/+9
|
* Rasterizer: Setup skeleton for Host Conditional renderingFernando Sahmkow2023-01-011-0/+15
|
* RasterizerMemory: Add filtering for flushing/invalidation operations.Fernando Sahmkow2023-01-011-18/+33
|
* MacroHLE: Add OpenGL SupportFernando Sahmkow2023-01-011-37/+87
|
* video_core: The draw manager manages whether Clear is required.FengChen2022-12-081-3/+0
|
* video_core: Implement maxwell3d draw manager and split draw logicFeng Chen2022-12-081-7/+9
|
* Fermi2D: Rework blit engine and add a software blitter.Fernando Sahmkow2022-11-241-2/+1
|
* Merge pull request #9216 from vonchenplus/reimp_inline_index_bufferliamwhite2022-11-201-12/+0
|\ | | | | video_core: Reimplement inline index buffer binding
| * video_core: Reimplement inline index buffer bindingFeng Chen2022-11-151-12/+0
| |
* | maxwell3d: full HLE for multi-layer clearsLiam2022-11-171-1/+1
| |
* | Fix regs regression with OpenGL two-sided stencil, and re-add data invalidation regKelebek12022-11-111-1/+1
| |
* | ir/texture_pass: Use host_info instead of querying Settings::values (#9176)Morph2022-11-111-1/+1
|/
* video_core: Fix SNORM texture buffer emulating error (#9001)Feng Chen2022-11-041-5/+5
|
* Merge pull request #8858 from vonchenplus/mipmapbunnei2022-11-041-0/+10
|\ | | | | video_core: Generate mipmap texture by drawing
| * video_core: Generate mipmap texture by drawingFengChen2022-09-201-0/+10
| |
* | video_core: Implement maxwell inline_index methodFengChen2022-10-221-0/+12
| |
* | video_coare: Reimplementing the maxwell drawing trigger mechanismFengChen2022-10-211-3/+2
| |
* | Fix stencil func registers, make clip control equivalent to how it was before, but surely wrong.Kelebek12022-10-101-6/+11
| |
* | Update 3D regsKelebek12022-10-071-69/+71
| |
* | DMA & InlineToMemory Engines Rework.bunnei2022-10-061-1/+1
| |
* | OpenGL: Fix TickWorkFernando Sahmkow2022-10-061-0/+4
| |
* | VideoCore: Refactor fencing system.Fernando Sahmkow2022-10-061-14/+8
| |
* | NVDRV: Further refactors and eliminate old code.Fernando Sahmkow2022-10-061-4/+0
| |
* | Texture cache: Fix the remaining issues with memory mnagement and unmapping.Fernando Sahmkow2022-10-061-2/+2
| |
* | VideoCore: Fix channels with disk pipeline/shader cache.Fernando Sahmkow2022-10-061-0/+1
| |
* | OpenGl: Implement Channels.Fernando Sahmkow2022-10-061-69/+105
| |
* | VideoCore: implement channels on gpu caches.Fernando Sahmkow2022-10-061-7/+7
|/
* chore: make yuzu REUSE compliantAndrea Pappacoda2022-07-271-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [REUSE] is a specification that aims at making file copyright information consistent, so that it can be both human and machine readable. It basically requires that all files have a header containing copyright and licensing information. When this isn't possible, like when dealing with binary assets, generated files or embedded third-party dependencies, it is permitted to insert copyright information in the `.reuse/dep5` file. Oh, and it also requires that all the licenses used in the project are present in the `LICENSES` folder, that's why the diff is so huge. This can be done automatically with `reuse download --all`. The `reuse` tool also contains a handy subcommand that analyzes the project and tells whether or not the project is (still) compliant, `reuse lint`. Following REUSE has a few advantages over the current approach: - Copyright information is easy to access for users / downstream - Files like `dist/license.md` do not need to exist anymore, as `.reuse/dep5` is used instead - `reuse lint` makes it easy to ensure that copyright information of files like binary assets / images is always accurate and up to date To add copyright information of files that didn't have it I looked up who committed what and when, for each file. As yuzu contributors do not have to sign a CLA or similar I couldn't assume that copyright ownership was of the "yuzu Emulator Project", so I used the name and/or email of the commit author instead. [REUSE]: https://reuse.software Follow-up to 01cf05bc75b1e47beb08937439f3ed9339e7b254
* OpenGL: implement face flips according to NDCLiam2022-05-071-4/+3
|
* Merge pull request #8149 from liamwhite/front-facebunnei2022-04-091-1/+8
|\ | | | | OpenGL: flip front faces if Z scale is inverted
| * OpenGL: propagate face flip conditionLiam2022-04-041-4/+10
| |
| * OpenGL: flip front faces if Z scale is invertedLiam2022-04-041-2/+3
| |
* | OpenGL: fix croppingLiam2022-04-041-0/+2
|/
* gl_rasterizer: Avoid scenario locking already owned mutexameerj2022-03-291-3/+3
| | | | | | gpu.TickWork() may lock the texture_cache and buffer_cache mutexes, which are owned by the thread prior to invoking TickWork(). Defer invoking gpu.TickWork() until the scope ends, where the owned mutexes are released.
* Revert "Memory GPU <-> CPU: reduce infighting in the texture cache by adding CPU Cached memory."bunnei2022-03-261-5/+1
|
* Texture Cache: Add Cached CPU system.Fernando Sahmkow2022-03-251-1/+5
|
* video_core: Reduce unused includesameerj2022-03-191-2/+0
|
* Rasterizer: Refactor inlineToMemory.Fernando Sahmkow2022-02-011-2/+2
|
* Rasterizer: Implement Inline2Memory Acceleration.Fernando Sahmkow2022-01-291-0/+22
|
* Texture Cahe/Shader decompiler: Resize PointSize on rescaling, refactor and make reaper more agressive on 4Gb GPUs.FernandoS272021-11-161-2/+3
|
* OpenGL: Fix viewport/Scissor scaling on downscaling.FernandoS272021-11-161-6/+28
|
* gl_rasterizer: Fix ScissorTest and Clear when scalingameerj2021-11-161-10/+6
|
* video_core: Misc resolution scaling related refactoringameerj2021-11-161-2/+2
|
* gl_rasterizer: Properly scale viewports and scissorsReinUsesLisp2021-11-161-23/+24
|
* gl_rasterizer: Fix rescale dirty state checkingameerj2021-11-161-4/+9
|
* renderer_gl: Resolution scaling fixesameerj2021-11-161-3/+20
|
* gl_rasterizer: Remove unused includesMorph2021-11-011-4/+2
| | | | This removes unused includes, especially the core includes which were causing this file to be recompiled every time files included by those headers are modified.
* texture_cache: Address ameerj's reviewyzct123452021-08-051-1/+1
|
* vk_rasterizer: Workaround bug in VK_EXT_vertex_input_dynamic_stateReinUsesLisp2021-07-231-1/+1
| | | | | Workaround potential bug on Nvidia's driver where only updating high attributes leaves low attributes out dated.
* shader: Unify shader stage typesReinUsesLisp2021-07-231-2/+0
|
* gl_shader_cache: Implement async shadersameerj2021-07-231-1/+1
|
* gl_rasterizer: Add texture fetch barrier for fragmentsameerj2021-07-231-1/+1
| | | | Fixes flicker seen in XC2
* shader: Handle host exceptionsReinUsesLisp2021-07-231-1/+3
|
* glasm: Use storage buffers instead of global memory when possibleReinUsesLisp2021-07-231-6/+7
|
* gl_shader_cache: Add disk shader cacheReinUsesLisp2021-07-231-1/+3
|
* gl_shader_cache: Rename Program abstractions into PipelineReinUsesLisp2021-07-231-5/+5
|
* glasm: Set transform feedback stateReinUsesLisp2021-07-231-92/+6
|
* gl_rasterizer: Flush L2 caches before glFlush on GLASMReinUsesLisp2021-07-231-0/+8
|
* shader: Initial OpenGL implementationReinUsesLisp2021-07-231-9/+14
|
* shader: Accelerate pipeline transitions and use dirty flags for shadersReinUsesLisp2021-07-231-1/+1
|
* shader: Remove old shader managementReinUsesLisp2021-07-231-310/+4
|
* DMAEngine: Accelerate BufferClearFernando Sahmkow2021-07-131-0/+5
|
* accelerateDMA: Accelerate Buffer Copies.Fernando Sahmkow2021-07-111-1/+12
|
* Fence Manager: remove reference fencing.Fernando Sahmkow2021-07-091-5/+2
|
* Fence Manager: Force ordering on WFI.Fernando Sahmkow2021-07-091-0/+4
|
* Fence Manager: Add fences on Reference Count.Fernando Sahmkow2021-07-091-0/+7
|
* Texture Cache: Initial Implementation of Sparse Textures.Fernando Sahmkow2021-07-041-0/+7
|
* bootmanager: Use std::stop_source for stopping emulationReinUsesLisp2021-06-221-1/+1
| | | | | | | Use its std::stop_token to abort shader cache loading. Using std::stop_token instead of std::atomic_bool allows the usage of other utilities like std::stop_callback.
* buffer_cache: Simplify uniform disabling logicameerj2021-06-011-0/+4
|
* hle: kernel: Rename Process to KProcess.bunnei2021-05-061-1/+1
|
* common: Move settings to common from core.bunnei2021-04-151-1/+1
| | | | - Removes a dependency on core and input_common from common.
* Implement glDepthRangeIndexeddNVKelebek12021-02-241-1/+5
|
* Merge pull request #5916 from ameerj/maxwell-gl-unusedLC2021-02-131-0/+1
|\ | | | | maxwell_to_gl: Remove unused code
| * maxwell_to_gl: Remove unused codeameerj2021-02-131-0/+1
| | | | | | | | Removes unused declarations in maxwell_to_gl.h
* | video_core: Fix clang build issuesReinUsesLisp2021-02-131-7/+0
| |
* | renderer_opengl: Remove interopReinUsesLisp2021-02-131-3/+1
| | | | | | | | Remove unused interop code from the OpenGL backend.
* | video_core: Reimplement the buffer cacheReinUsesLisp2021-02-131-452/+122
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reimplement the buffer cache using cached bindings and page level granularity for modification tracking. This also drops the usage of shared pointers and virtual functions from the cache. - Bindings are cached, allowing to skip work when the game changes few bits between draws. - OpenGL Assembly shaders no longer copy when a region has been modified from the GPU to emulate constant buffers, instead GL_EXT_memory_object is used to alias sub-buffers within the same allocation. - OpenGL Assembly shaders stream constant buffer data using glProgramBufferParametersIuivNV, from NV_parameter_buffer_object. In theory this should save one hash table resolve inside the driver compared to glBufferSubData. - A new OpenGL stream buffer is implemented based on fences for drivers that are not Nvidia's proprietary, due to their low performance on partial glBufferSubData calls synchronized with 3D rendering (that some games use a lot). - Most optimizations are shared between APIs now, allowing Vulkan to cache more bindings than before, skipping unnecesarry work. This commit adds the necessary infrastructure to use Vulkan object from OpenGL. Overall, it improves performance and fixes some bugs present on the old cache. There are still some edge cases hit by some games that harm performance on some vendors, this are planned to be fixed in later commits.
* | gl_rasterizer: Remove unused variablesLioncash2021-02-091-3/+0
|/ | | | Resolves warnings on clang 12
* video_core: Rewrite the texture cacheReinUsesLisp2020-12-301-254/+250
| | | | | | | | | | | | | | The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage.The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage. This commit aims to address those issues.
* video_core: Remove unnecessary enum class casting in logging messagesLioncash2020-12-071-1/+1
| | | | | | | fmt now automatically prints the numeric value of an enum class member by default, so we don't need to use casts any more. Reduces the line noise a bit.
* video_core: Resolve more variable shadowing scenarios pt.3Lioncash2020-12-051-6/+6
| | | | | Cleans out the rest of the occurrences of variable shadowing and makes any further occurrences of shadowing compiler errors.
* Merge pull request #4954 from lioncash/compareMorph2020-11-221-1/+1
|\ | | | | gl_rasterizer: Make floating-point literal a float
| * gl_rasterizer: Make floating-point literal a floatLioncash2020-11-201-1/+1
| | | | | | | | Gets rid of an unnecessary expansion from float to double.
* | gl_rasterizer: Remove warning of untested alpha testReinUsesLisp2020-11-211-4/+0
|/ | | | Alpha test has been proven to only affect the first render target.
* gl_arb_decompiler: Implement robust buffer operationsReinUsesLisp2020-10-201-24/+23
| | | | | | | | | This emulates the behavior we get on GLSL with regular SSBOs with a pointer + length pair. It aims to be consistent with the crashes we might get. Out of bounds stores are ignored. Atomics are ignored and return zero. Reads return zero.
* video_core: Remove all Core::System references in rendererReinUsesLisp2020-09-061-151/+110
| | | | | | | | | 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.
* move thread 1/4 count computation into allocate workers methodameerj2020-08-161-9/+1
|
* renderer_opengl: Use 1/4 of all threads for async shader compilationMorph2020-07-281-9/+4
|
* gl_arb_decompiler: Use NV_shader_buffer_{load,store} on assembly shadersReinUsesLisp2020-07-181-37/+66
| | | | | | | | | | | | | | | | NV_shader_buffer_{load,store} is a 2010 extension that allows GL applications to use what in Vulkan is known as physical pointers, this is basically C pointers. On GLASM these is exposed through the LOAD/STORE/ATOM instructions. Up until now, assembly shaders were using NV_shader_storage_buffer_object. These work fine, but have a (probably unintended) limitation that forces us to have the limit of a single stage for all shader stages. In contrast, with NV_shader_buffer_{load,store} we can pass GPU addresses to the shader through local parameters (GLASM equivalent uniform constants, or push constants on Vulkan). Local parameters have the advantage of being per stage, allowing us to generate code without worrying about binding overlaps.
* Drop max workers from 8->2 for testingDavid Marcec2020-07-171-1/+1
|
* async shadersDavid Marcec2020-07-171-3/+21
|
* maxwell_to_gl: Rename VertexType() to VertexFormat()Morph2020-06-291-2/+3
|
* gl_rasterizer: Use NV_vertex_buffer_unified_memory for vertex buffer robustnessReinUsesLisp2020-06-241-8/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* gl_buffer_cache: Mark buffers as residentReinUsesLisp2020-06-241-22/+22
| | | | | | Make stream buffer and cached buffers as resident and query their address. This allows us to use GPU addresses for several proprietary Nvidia extensions.
* Merge pull request #4064 from ReinUsesLisp/invalidate-buffersbunnei2020-06-141-1/+10
|\ | | | | gl_rasterizer: Mark vertex buffers as dirty after buffer cache invalidation
| * gl_rasterizer: Mark vertex buffers as dirty after buffer cache invalidationReinUsesLisp2020-06-091-1/+10
| | | | | | | | | | | | | | | | Vertex buffers bindings become invalid after the stream buffer is invalidated. We were originally doing this, but it got lost at some point. - Fixes Animal Crossing: New Horizons, but it affects everything.
* | Merge pull request #4049 from ReinUsesLisp/separate-samplersbunnei2020-06-131-2/+14
|\ \ | | | | | | shader/texture: Join separate image and sampler pairs offline
| * | shader/texture: Join separate image and sampler pairs offlineReinUsesLisp2020-06-051-2/+14
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Games using D3D idioms can join images and samplers when a shader executes, instead of baking them into a combined sampler image. This is also possible on Vulkan. One approach to this solution would be to use separate samplers on Vulkan and leave this unimplemented on OpenGL, but we can't do this because there's no consistent way of determining which constant buffer holds a sampler and which one an image. We could in theory find the first bit and if it's in the TIC area, it's an image; but this falls apart when an image or sampler handle use an index of zero. The used approach is to track for a LOP.OR operation (this is done at an IR level, not at an ISA level), track again the constant buffers used as source and store this pair. Then, outside of shader execution, join the sample and image pair with a bitwise or operation. This approach won't work on games that truly use separate samplers in a meaningful way. For example, pooling textures in a 2D array and determining at runtime what sampler to use. This invalidates OpenGL's disk shader cache :) - Used mostly by D3D ports to Switch
* | Merge pull request #3986 from ReinUsesLisp/shader-cachebunnei2020-06-131-9/+10
|\ \ | | | | | | shader_cache: Implement a generic runtime shader cache
| * | gl_shader_cache: Use generic shader cacheReinUsesLisp2020-06-071-9/+10
| |/ | | | | | | Trivially port the generic shader cache to OpenGL.
* / gl_rasterizer: Use NV_transform_feedback for XFB on assembly shadersReinUsesLisp2020-06-041-0/+90
|/ | | | | | | | | | | NV_transform_feedback, NV_transform_feedback2 and ARB_transform_feedback3 with NV_transform_feedback interactions allows implementing transform feedbacks as dynamic state. Maxwell implements transform feedbacks as dynamic state, so using these extensions with TransformFeedbackStreamAttribsNV allows us to properly emulate transform feedbacks without having to recompile shaders when the state changes.
* Merge pull request #4006 from ReinUsesLisp/squash-ubosbunnei2020-06-021-19/+59
|\ | | | | glsl: Squash constant buffers into a single SSBO when we hit the limit
| * glsl: Squash constant buffers into a single SSBO when we hit the limitReinUsesLisp2020-06-011-19/+59
| | | | | | | | | | Avoids compilation errors at the cost of shader build times and runtime performance when a game hits the limit of uniform buffers we can use.
* | Merge pull request #3996 from ReinUsesLisp/front-facesbunnei2020-06-011-5/+20
|\ \ | |/ |/| fixed_pipeline_state,gl_rasterizer: Swap negative viewport checks for front faces
| * gl_rasterizer: Port front face flip check from VulkanReinUsesLisp2020-05-261-5/+20
| | | | | | | | | | | | | | | | | | | | | | While Vulkan was assuming we had no negative viewports, OpenGL code was assuming we had them. Port the old code from Vulkan to OpenGL, checking if the first viewport is negative before flipping faces. This is not a complete implementation since we only check for the first viewport to be negative. That said, unless a game is using Vulkan, OpenGL and NVN games should be fine here, and we can always compare with our Vulkan backend to see if there's a difference.
* | gl_device: Enable compute shaders for Intel proprietary driversMorph2020-05-311-4/+0
| | | | | | | | Previously we were disabling compute shaders on Intel's proprietary driver due to broken compute. This has been fixed in the latest Intel drivers. Re-enable compute for Intel proprietary drivers and remove the check for broken compute.
* | gl_texture_cache: Implement small texture view cache for swizzlesReinUsesLisp2020-05-261-14/+7
|/ | | | | This fixes cases where the texture swizzle was applied twice on the same draw to a texture bound to two different slots.
* Merge pull request #3905 from FernandoS27/vulkan-fixbunnei2020-05-241-2/+2
|\ | | | | Correct a series of crashes and intructions on Async GPU and Vulkan Pipeline
| * VideoCore: Use SyncGuestMemory mechanism for Shader/Pipeline Cache invalidation.Fernando Sahmkow2020-05-101-2/+2
| |
* | renderer_opengl: Add assembly program code pathsReinUsesLisp2020-05-191-24/+72
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add code required to use OpenGL assembly programs based on NV_gpu_program5. Decompilation for ARB programs is intended to be added in a follow up commit. This does **not** include ARB decompilation and it's not in an usable state. The intention behind assembly programs is to reduce shader stutter significantly on drivers supporting NV_gpu_program5 (and other required extensions). Currently only Nvidia's proprietary driver supports these extensions. Add a UI option hidden for now to avoid people enabling this option accidentally. This code path has some limitations that OpenGL compatibility doesn't have: - NV_shader_storage_buffer_object is limited to 16 entries for a single OpenGL context state (I don't know if this is an intended limitation, an specification issue or I am missing something). Currently causes issues on The Legend of Zelda: Link's Awakening. - NV_parameter_buffer_object can't bind buffers using an offset different to zero. The used workaround is to copy to a temporary buffer (this doesn't happen often so it's not an issue). On the other hand, it has the following advantages: - Shaders build a lot faster. - We have control over how floating point rounding is done over individual instructions (SPIR-V on Vulkan can't do this). - Operations on shared memory can be unsigned and signed. - Transform feedbacks are dynamic state (not yet implemented). - Parameter buffers (uniform buffers) are per stage, matching NVN and hardware's behavior. - The API to bind and create assembly programs makes sense, unlike ARB_separate_shader_objects.
* gl_rasterizer: Implement viewport swizzles with NV_viewport_swizzleReinUsesLisp2020-05-041-0/+8
|
* Merge pull request #3808 from ReinUsesLisp/wait-for-idlebunnei2020-05-031-0/+11
|\ | | | | {maxwell_3d,buffer_cache}: Implement memory barriers using 3D registers
| * {maxwell_3d,buffer_cache}: Implement memory barriers using 3D registersReinUsesLisp2020-04-281-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | Drop MemoryBarrier from the buffer cache and use Maxwell3D's register WaitForIdle. To implement this on OpenGL we just call glMemoryBarrier with the necessary bits. Vulkan lacks this synchronization primitive, so we set an event and immediately wait for it. This is not a pretty solution, but it's what Vulkan can do without submitting the current command buffer to the queue (which ends up being more expensive on the CPU).
* | Merge pull request #3693 from ReinUsesLisp/clean-samplersbunnei2020-05-021-13/+11
|\ \ | | | | | | shader/texture: Support multiple unknown sampler properties
| * | shader_ir: Turn classes into data structuresReinUsesLisp2020-04-231-13/+11
| | |
* | | Merge pull request #3807 from ReinUsesLisp/fix-depth-clampbunnei2020-04-301-5/+1
|\ \ \ | | | | | | | | maxwell_3d: Fix depth clamping register
| * | | maxwell_3d: Fix depth clamping registerReinUsesLisp2020-04-281-5/+1
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using deko3d as reference: https://github.com/devkitPro/deko3d/blob/4e47ba0013552e592a86ab7a2510d1e7dadf236a/source/maxwell/gpu_3d_state.cpp#L42 We were using bits 3 and 4 to determine depth clamping, but these are the same both enabled and disabled: state->depthClampEnable ? 0x101A : 0x181D The same happens on Nvidia's OpenGL driver, where they do something like this (default capabilities, GL 4.5 compatibility): (state & DEPTH_CLAMP) != 0 ? 0x201a : 0x281c There's always a difference between the first bits in this register, but bit 11 is consistently disabled on both deko3d/NVN and OpenGL. This commit changes yuzu's behaviour to use bit 11 to determine depth clamping. - Fixes depth issues on Super Mario Odyssey's intro.
* / | texture_cache: Reintroduce preserve_contents accuratelyReinUsesLisp2020-04-271-13/+36
|/ / | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 94b0e2e5dae4e0bd0021ac2d8fe1ff904a93ee69. preserve_contents proved to be a meaningful optimization. This commit reintroduces it but properly implemented on OpenGL. We have to make sure the clear removes all the previous contents of the image. It's not currently implemented on Vulkan because we can do smart things there that's preferred to be introduced in a separate commit.
* | Merge pull request #3753 from ReinUsesLisp/ac-vulkanRodrigo Locatti2020-04-261-4/+8
|\ \ | |/ |/| {gl,vk}_rasterizer: Add lazy default buffer maker and use it for empty buffers
| * gl_rasterizer: Fix buffers without sizeReinUsesLisp2020-04-221-4/+8
| | | | | | | | | | | | | | | | | | | | | | On NVN buffers can be enabled but have no size. According to deko3d and the behavior we see in Animal Crossing: New Horizons these buffers get the special address of 0x1000 and limit themselves to 0xfff. Implement buffers without a size by binding a null buffer to OpenGL without a side. https://github.com/devkitPro/deko3d/blob/1d1930beea093b5a663419e93b0649719a3ca5da/source/maxwell/gpu_3d_vbo.cpp#L62-L63
* | Async GPU: Correct flushing behavior to be similar to old async GPU behavior.Fernando Sahmkow2020-04-221-0/+3
| |
* | Address Feedback.Fernando Sahmkow2020-04-221-4/+1
| |
* | Fix GCC error.Fernando Sahmkow2020-04-221-5/+4
| |
* | QueryCache: Implement Async Flushes.Fernando Sahmkow2020-04-221-3/+3
| |
* | OpenGL: Guarantee writes to Buffers.Fernando Sahmkow2020-04-221-1/+0
| |
* | GPU: Implement Flush Requests for Async mode.Fernando Sahmkow2020-04-221-0/+6
| |
* | FenceManager: Manage syncpoints and rename fences to semaphores.Fernando Sahmkow2020-04-221-2/+11
| |
* | FenceManager: Implement async buffer cache flushes on High settingsFernando Sahmkow2020-04-221-1/+2
| |
* | GPU: Fix rebase errors.Fernando Sahmkow2020-04-221-0/+1
| |
* | Rasterizer: Disable fence managing in synchronous gpu.Fernando Sahmkow2020-04-221-0/+10
| |
* | ThreadManager: Sync async reads on accurate gpu.Fernando Sahmkow2020-04-221-0/+4
| |
* | GPU: Implement a Fence Manager.Fernando Sahmkow2020-04-221-23/+4
| |
* | OpenGL: Implement Fencing backend.Fernando Sahmkow2020-04-221-0/+28
| |
* | BufferCache: Implement OnCPUWrite and SyncGuestHostFernando Sahmkow2020-04-221-2/+2
| |
* | GPU: Refactor synchronization on Async GPUFernando Sahmkow2020-04-221-0/+16
| |
* | UI: Replasce accurate GPU option for GPU Accuracy LevelFernando Sahmkow2020-04-221-1/+1
|/
* Merge pull request #3600 from ReinUsesLisp/no-pointer-buf-cacheFernando Sahmkow2020-04-171-28/+11
|\ | | | | buffer_cache: Return handles instead of pointer to handles
| * buffer_cache: Return handles instead of pointer to handlesReinUsesLisp2020-04-161-28/+11
| | | | | | | | | | | | | | | | | | | | | | The original idea of returning pointers is that handles can be moved. The problem is that the implementation didn't take that in mind and made everything harder to work with. This commit drops pointer to handles and returns the handles themselves. While it is still true that handles can be invalidated, this way we get an old handle instead of a dangling pointer. This problem can be solved in the future with sparse buffers.
* | gl_rasterizer: Implement constant vertex attributesReinUsesLisp2020-04-141-2/+2
|/ | | | | Credits go to gdkchan from Ryujinx for finding constant attributes are used in retail games.
* Merge pull request #3651 from ReinUsesLisp/line-widthsMat M2020-04-131-0/+14
|\ | | | | gl_rasterizer: Implement line widths and smooth lines
| * gl_rasterizer: Implement line widths and smooth linesReinUsesLisp2020-04-131-0/+14
| | | | | | | | | | Implements "legacy" features from OpenGL present on hardware such as smooth lines and line width.
* | texture_cache: Remove preserve_contentsReinUsesLisp2020-04-111-4/+4
|/ | | | | | | preserve_contents was always true. We can't assume we don't have to preserve clears because scissored and color masked clears exist. This removes preserve_contents and assumes it as true at all times.
* Memory: Address Feedback.Fernando Sahmkow2020-04-081-2/+2
|
* Shader/Pipeline Cache: Use VAddr instead of physical memory for addressing.Fernando Sahmkow2020-04-061-2/+1
|
* Query Cache: Use VAddr instead of physical memory for adressing.Fernando Sahmkow2020-04-061-3/+2
|
* Buffer Cache: Use vAddr instead of physical memory.Fernando Sahmkow2020-04-061-2/+2
|
* Texture Cache: Use vAddr instead of physical memory for caching.Fernando Sahmkow2020-04-061-4/+3
|
* GPU: Setup Flush/Invalidate to use VAddr instead of CacheAddrFernando Sahmkow2020-04-061-10/+12
|
* gl_rasterizer: Mark cleared textures as dirtyReinUsesLisp2020-03-311-2/+5
| | | | | Fixes a potential edge case where cleared textures read from the CPU were not flushed.
* gl_rasterizer: Update stencil test regardless of it being disabledReinUsesLisp2020-03-261-5/+1
|
* gl_rasterizer: Synchronize stencil testing on clearsReinUsesLisp2020-03-261-0/+1
|
* gl_rasterizer: Use transformed viewport for depth rangesReinUsesLisp2020-03-221-4/+6
| | | | | | Implement depth ranges using the transformed viewport instead of the generic one. This matches the current Vulkan implementation but doesn't support negative depth ranges. An update to glad is required for this.
* gl_rasterizer: Silence misc warningsReinUsesLisp2020-03-191-7/+2
|
* gl_rasterizer: Implement transform feedback bindingsReinUsesLisp2020-03-131-7/+63
|
* Merge branch 'master' into shader-purgeRodrigo Locatti2020-03-131-2/+42
|\
| * Merge pull request #3491 from ReinUsesLisp/polygon-modesbunnei2020-03-131-0/+40
| |\ | | | | | | gl_rasterizer: Implement polygon modes and fill rectangles
| | * gl_rasterizer: Implement polygon modes and fill rectanglesReinUsesLisp2020-03-101-0/+40
| | |
| * | gl_shader_manager: Fix interaction between graphics and computeReinUsesLisp2020-03-111-3/+2
| |/ | | | | | | | | | | | | After a compute shader was set to the pipeline, no graphics shader was invoked again. To address this use glUseProgram to bind compute shaders (without state tracking) and call glUseProgram(0) when transitioning out of it back to the graphics pipeline.
* / gl_shader_cache: Rework shader cache and remove post-specializationsReinUsesLisp2020-03-091-25/+17
|/ | | | | Instead of pre-specializing shaders and then post-specializing them, drop the later and only "specialize" the shader while decoding it.
* Merge pull request #3301 from ReinUsesLisp/state-trackerRodrigo Locatti2020-03-091-407/+462
|\ | | | | video_core: Remove gl_state and use a state tracker based on dirty flags
| * gl_rasterizer: Don't disable blending on clearsReinUsesLisp2020-02-281-4/+0
| | | | | | | | Blending doesn't affect clears.
| * gl_rasterizer: Remove num vertex buffers magic numberReinUsesLisp2020-02-281-2/+4
| |
| * gl_rasterizer: Only apply polygon offset clamp if enabledReinUsesLisp2020-02-281-3/+6
| |
| * gl_state_tracker: Implement dirty flags for depth clamp enablingReinUsesLisp2020-02-281-3/+9
| |
| * gl_rasterizer: Disable scissor 0 when scissor is not used on clearReinUsesLisp2020-02-281-0/+3
| |
| * gl_rasterizer: Notify depth mask changes on clearReinUsesLisp2020-02-281-1/+1
| |
| * gl_rasterizer: Minor sort changes to clearingReinUsesLisp2020-02-281-11/+9
| |
| * gl_state_tracker: Implement dirty flags for clip controlReinUsesLisp2020-02-281-13/+17
| |
| * gl_state_tracker: Implement dirty flags for point sizesReinUsesLisp2020-02-281-4/+17
| |
| * gl_state_tracker: Implement dirty flags for fragment color clampReinUsesLisp2020-02-281-2/+8
| |
| * gl_state_tracker: Implement dirty flags for logic opReinUsesLisp2020-02-281-2/+10
| |
| * gl_state_tracker: Implement dirty flags for sRGBReinUsesLisp2020-02-281-2/+8
| |
| * gl_state_tracker: Implement dirty flags for rasterize enableReinUsesLisp2020-02-281-2/+8
| |
| * gl_state_tracker: Implement dirty flags for multisampleReinUsesLisp2020-02-281-0/+7
| |
| * gl_state_tracker: Implement dirty flags for alpha testingReinUsesLisp2020-02-281-4/+14
| |
| * gl_state_tracker: Implement dirty flags for polygon offsetsReinUsesLisp2020-02-281-2/+7
| |
| * gl_state_tracker: Implement dirty flags for primitive restartReinUsesLisp2020-02-281-3/+12
| |
| * gl_state_tracker: Implement dirty flags for stencil testingReinUsesLisp2020-02-281-3/+9
| |
| * gl_state_tracker: Implement depth dirty flagsReinUsesLisp2020-02-281-5/+15
| |
| * gl_state_tracker: Implement dirty flags for front face and cullingReinUsesLisp2020-02-281-4/+17
| |
| * gl_state_tracker: Implement dirty flags for blendingReinUsesLisp2020-02-281-13/+36
| |
| * gl_state_tracker: Implement dirty flags for clip distances and shadersReinUsesLisp2020-02-281-10/+18
| |
| * gl_state_tracker: Add dirty flags for buffers and divisorsReinUsesLisp2020-02-281-22/+29
| |
| * gl_state_tracker: Implement dirty flags for vertex formatsReinUsesLisp2020-02-281-9/+19
| |
| * gl_state_tracker: Implement dirty flags for color masksReinUsesLisp2020-02-281-9/+30
| |
| * gl_state_tracker: Implement dirty flags for scissorsReinUsesLisp2020-02-281-4/+20
| |
| * gl_state_tracker: Implement dirty flags for viewportsReinUsesLisp2020-02-281-7/+24
| |
| * renderer_opengl: Reintroduce dirty flags for render targetsReinUsesLisp2020-02-281-6/+14
| |
| * maxwell_3d: Flatten cull and front face registersReinUsesLisp2020-02-281-3/+3
| |
| * gl_state: Remove completelyReinUsesLisp2020-02-281-10/+3
| |
| * gl_state: Remove program trackingReinUsesLisp2020-02-281-17/+11
| |
| * gl_state: Remove framebuffer trackingReinUsesLisp2020-02-281-3/+2
| |
| * gl_state: Remove image trackingReinUsesLisp2020-02-281-3/+3
| |
| * gl_state: Remove texture and sampler trackingReinUsesLisp2020-02-281-6/+5
| |
| * gl_state: Remove blend state trackingReinUsesLisp2020-02-281-25/+24
| |
| * gl_state: Remove stencil test trackingReinUsesLisp2020-02-281-48/+17
| |
| * gl_state: Remove clip control trackingReinUsesLisp2020-02-281-5/+6
| |
| * gl_state: Remove clip distances trackingReinUsesLisp2020-02-281-8/+2
| |
| * gl_state: Remove rasterizer disable trackingReinUsesLisp2020-02-281-4/+4
| |
| * gl_state: Remove viewport and depth range trackingReinUsesLisp2020-02-281-17/+7
| |
| * gl_state: Remove scissor test trackingReinUsesLisp2020-02-281-23/+9
| |
| * gl_state: Remove color mask trackingReinUsesLisp2020-02-281-14/+11
| |
| * gl_state: Remove clamp framebuffer color trackingReinUsesLisp2020-02-281-4/+6
| | | | | | | | | | This commit doesn't reset it for screen draws because clamping doesn't change anything there.
| * gl_state: Remove multisample trackingReinUsesLisp2020-02-281-2/+2
| |
| * gl_state: Remove framebuffer sRGB trackingReinUsesLisp2020-02-281-1/+9
| |
| * gl_state: Remove VAO cache and trackingReinUsesLisp2020-02-281-63/+37
| |
| * gl_state: Remove depth clamp trackingReinUsesLisp2020-02-281-2/+10
| |
| * gl_state: Remove depth trackingReinUsesLisp2020-02-281-12/+6
| |
| * gl_state: Remove primitive restart trackingReinUsesLisp2020-02-281-2/+2
| |
| * gl_state: Remove logic op trackerReinUsesLisp2020-02-281-9/+4
| |
| * gl_state: Remove blend color trackingReinUsesLisp2020-02-281-4/+1
| |
| * gl_state: Remove polygon offset trackingReinUsesLisp2020-02-281-6/+5
| |
| * gl_state: Remove alpha test trackingReinUsesLisp2020-02-281-5/+3
| |
| * gl_state: Remove cull mode trackingReinUsesLisp2020-02-281-4/+2
| |
| * gl_state: Remove front face trackingReinUsesLisp2020-02-281-1/+1
| |
| * gl_state: Remove point size trackingReinUsesLisp2020-02-281-6/+4
| |
| * gl_rasterizer: Add oglEnablei helperReinUsesLisp2020-02-281-0/+4
| |
| * gl_rasterizer: Add OpenGL enable/disable helperReinUsesLisp2020-02-281-0/+4
| |
| * gl_rasterizer: Remove dirty flagsReinUsesLisp2020-02-281-68/+2
| |
* | shader: Simplify indexed sampler usagesReinUsesLisp2020-02-241-19/+7
|/
* Merge pull request #3414 from ReinUsesLisp/maxwell-3d-drawbunnei2020-02-191-10/+0
|\ | | | | maxwell_3d: Unify draw methods
| * maxwell_3d: Unify draw methodsReinUsesLisp2020-02-141-10/+0
| | | | | | | | | | Pass instanced state of a draw invocation as an argument instead of having two separate virtual methods.
* | Merge pull request #3411 from ReinUsesLisp/specific-funcsbunnei2020-02-191-8/+28
|\ \ | | | | | | gl_rasterizer: Use the least generic OpenGL draw function possible
| * | gl_rasterizer: Use the least generic OpenGL draw function possibleReinUsesLisp2020-02-141-8/+28
| |/ | | | | | | This may help some implementations.
* | gl_query_cache: Optimize query cacheReinUsesLisp2020-02-141-2/+3
| | | | | | | | Use a custom cache instead of relying on a ranged cache.
* | gl_query_cache: Implement host queries using a deferred cacheReinUsesLisp2020-02-141-20/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of waiting immediately for executed commands, defer the query until the guest CPU reads it. This way we get closer to what the guest program is doing. To archive this we have to build a dependency queue, because host APIs (like OpenGL and Vulkan) use ranged queries instead of counters like NVN. Waiting for queries implicitly uses fences and this requires a command being queued, otherwise the driver will lock waiting until a timeout. To fix this when there are no commands queued, we explicitly call glFlush.
* | gl_rasterizer: Add queued commands counterReinUsesLisp2020-02-141-0/+13
| | | | | | | | | | | | Keep track of the queued OpenGL commands that can signal a fence if waited on. As a side effect, we avoid calls to glFlush when no commands are queued.
* | maxwell_3d: Slow implementation of passed samples (query 21)ReinUsesLisp2020-02-141-0/+24
|/ | | | Implements GL_SAMPLES_PASSED by waiting immediately for queries.
* Merge pull request #3376 from ReinUsesLisp/point-spritebunnei2020-02-111-0/+1
|\ | | | | gl_rasterizer: Implement GL_POINT_SPRITE
| * gl_rasterizer: Implement GL_POINT_SPRITEReinUsesLisp2020-02-041-0/+1
| | | | | | | | | | | | OpenGL core defaults to GL_POINT_SPRITE, meanwhile on OpenGL compatibility we have to explicitly enable it. This fixes gl_PointCoord's behaviour.
* | Merge pull request #3362 from ReinUsesLisp/fix-instancedbunnei2020-02-071-100/+27
|\ \ | |/ |/| gl_rasterizer: Fix instanced draw arrays
| * gl_rasterizer: Fix instanced draw arraysReinUsesLisp2020-01-301-100/+27
| | | | | | | | | | | | glDrawArrays was being used when the draw had a base instance specified. This commit removes the draw parameters abstraction and fixes the mentioned issue.
* | GL Backend: Introduce indexed samplers into the GL backendFernando Sahmkow2020-01-241-7/+27
|/
* gl_state: Use bool instead of GLbooleanReinUsesLisp2020-01-181-1/+1
| | | | | This fixes template resolution considering GLboolean an integer instead of a bool.
* gl_state: Implement PROGRAM_POINT_SIZEReinUsesLisp2020-01-151-0/+1
| | | | | For gl_PointSize to have effect we have to activate GL_PROGRAM_POINT_SIZE.
* gl_rasterizer: Allow rendering without fragment shaderReinUsesLisp2019-12-261-0/+3
| | | | | Rendering without a fragment shader is usually used in depth-only passes.
* gl_rasterizer: Implement RASTERIZE_ENABLEReinUsesLisp2019-12-181-0/+7
| | | | | | | | RASTERIZE_ENABLE is the opposite of GL_RASTERIZER_DISCARD. Implement it naturally using this. NVN games expect rasterize to be enabled by default, reflect that in our initial GPU state.
* Gl_Rasterizer: Skip Tesselation Control and Eval stages as they are un implemented.Fernando Sahmkow2019-12-111-0/+8
| | | | | This commit ensures the OGL backend does not execute tesselation shader stages as they are currently unimplemented.
* Maxwell3D: Implement Depth Mode.Fernando Sahmkow2019-12-111-0/+4
| | | | | This commit finishes adding depth mode that was reverted before due to other unresolved issues.
* gl_framebuffer_cache: Optimize framebuffer keyReinUsesLisp2019-11-291-18/+12
| | | | | | Pack color attachment enumerations into a single u32. To determine the number of buffers, the highest color attachment with a shared pointer that doesn't point to null is used.
* gl_rasterizer: Re-enable framebuffer cache for clear buffersReinUsesLisp2019-11-291-28/+13
|
* core/memory: Migrate over GetPointer()Lioncash2019-11-271-1/+2
| | | | | With all of the interfaces ready for migration, it's trivial to migrate over GetPointer().
* core: Prepare various classes for memory read/write migrationLioncash2019-11-271-2/+3
| | | | | | | | | | Amends a few interfaces to be able to handle the migration over to the new Memory class by passing the class by reference as a function parameter where necessary. Notably, within the filesystem services, this eliminates two ReadBlock() calls by using the helper functions of HLERequestContext to do that for us.
* gl_rasterizer: Disable compute shaders on IntelReinUsesLisp2019-11-231-0/+4
| | | | | Intel's proprietary driver enters in a corrupt state when compute shaders are executed. For now, disable these.
* gl_shader_decompiler: Normalize image bindingsReinUsesLisp2019-11-231-20/+9
|
* gl_shader_decompiler: Normalize cbuf bindingsReinUsesLisp2019-11-231-2/+2
| | | | | Stage and compute shaders were using a different binding counter. Normalize these.
* gl_rasterizer: Add missing cbuf counter reset on computeReinUsesLisp2019-11-231-0/+2
|
* gl_shader_cache: Remove dynamic BaseBinding specializationReinUsesLisp2019-11-231-49/+45
|
* video_core: Unify ProgramType and ShaderStage into ShaderTypeReinUsesLisp2019-11-231-14/+12
|
* gl_rasterizer: Bind graphics images to draw commandsReinUsesLisp2019-11-231-32/+48
| | | | | Images were not being bound to draw invocations because these would require a cache invalidation.
* gl_shader_cache: Specialize local memory size for compute shadersReinUsesLisp2019-11-231-1/+2
| | | | | Local memory size in compute shaders was stubbed with an arbitary size. This commit specializes local memory size from guest GPU parameters.
* gl_shader_cache: Specialize shared memory sizeReinUsesLisp2019-11-231-1/+1
| | | | | Shared memory was being declared with an undefined size. Specialize from guest GPU parameters the compute shader's shared memory size.
* gl_shader_cache: Specialize shader workgroupReinUsesLisp2019-11-231-14/+7
| | | | | | Drop the usage of ARB_compute_variable_group_size and specialize compute shaders instead. This permits compute to run on AMD and Intel proprietary drivers.
* shader/texture: Deduce texture buffers from lockerReinUsesLisp2019-11-231-30/+15
| | | | | Instead of specializing shaders to separate texture buffers from 1D textures, use the locker to deduce them while they are being decoded.
* Merge pull request #3047 from ReinUsesLisp/clip-controlbunnei2019-11-151-24/+18
|\ | | | | gl_rasterizer: Emulate viewport flipping with ARB_clip_control
| * gl_rasterizer: Remove front facing hackReinUsesLisp2019-11-071-12/+0
| |
| * gl_rasterizer: Emulate viewport flipping with ARB_clip_controlReinUsesLisp2019-11-071-22/+28
| | | | | | | | | | | | | | Emulates negative y viewports with ARB_clip_control. This allows us to more easily emulated pipelines with tessellation and/or geometry shader stages. It also avoids corrupting games with transform feedbacks and negative viewports (gl_Position.y was being modified).
* | video_core: Silence implicit conversion warningsReinUsesLisp2019-11-081-1/+1
|/
* Merge pull request #3057 from ReinUsesLisp/buffer-sub-databunnei2019-11-061-2/+5
|\ | | | | gl_rasterizer: Upload constant buffers with glNamedBufferSubData
| * gl_rasterizer: Re-enable stream buffer memory due to global memoryReinUsesLisp2019-11-021-14/+8
| | | | | | | | | | Global memory is still using the stream buffer when it shouldn't. As a temporary fix re-enable the stream buffer on compute.
| * gl_rasterizer: Upload constant buffers with glNamedBufferSubDataReinUsesLisp2019-11-021-10/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Nvidia's OpenGL driver maps gl(Named)BufferSubData with some requirements to a fast. This path has an extra memcpy but updates the buffer without orphaning or waiting for previous calls. It can be seen as a better model for "push constants" that can upload a whole UBO instead of 256 bytes. This path has some requirements established here: http://on-demand.gputechconf.com/gtc/2014/presentations/S4379-opengl-44-scene-rendering-techniques.pdf#page=24 Instead of using the stream buffer, this commits moves constant buffers uploads to calls of glNamedBufferSubData and from my testing it brings a performance improvement. This is disabled when the vendor is not Nvidia since it brings performance regressions.
* | Merge pull request #3039 from ReinUsesLisp/cleanup-samplersRodrigo Locatti2019-11-061-12/+7
|\ \ | |/ |/| shader/node: Unpack bindless texture encoding
| * shader/node: Unpack bindless texture encodingReinUsesLisp2019-10-301-12/+7
| | | | | | | | | | | | | | | | | | Bindless textures were using u64 to pack the buffer and offset from where they come from. Drop this in favor of separated entries in the struct. Remove the usage of std::set in favor of std::list (it's not std::vector to avoid reference invalidations) for samplers and images.
* | Merge pull request #3046 from ReinUsesLisp/clean-gl-statebunnei2019-10-301-2/+0
|\ \ | | | | | | gl_state: Miscellaneous clean up
| * | gl_state: Remove ApplyDefaultStateReinUsesLisp2019-10-301-2/+0
| |/ | | | | | | OpenGL has defaults values we can trust. Remove these.
* | Merge pull request #3035 from ReinUsesLisp/rasterizer-acceleratedbunnei2019-10-301-36/+0
|\ \ | |/ |/| rasterizer_accelerated: Add intermediary for GPU rasterizers
| * rasterizer_accelerated: Add intermediary for GPU rasterizersReinUsesLisp2019-10-271-36/+0
| | | | | | | | | | | | Add an intermediary class that implements common functions across GPU accelerated rasterizers. This avoids code repetition on different backends.
* | maxwell_3d/kepler_compute: Remove unused arguments in GetTextureReinUsesLisp2019-10-281-6/+6
|/
* Shader_Cache: setup connection of ConstBufferLockerFernando Sahmkow2019-10-251-2/+4
|
* VideoCore: Unify const buffer accessing along engines and provide ConstBufferLocker class to shaders.Fernando Sahmkow2019-10-251-3/+4
|
* Merge pull request #2912 from FernandoS27/async-fixesbunnei2019-10-161-0/+1
|\ | | | | General fixes to Async GPU
| * Gl_Rasterizer: Protect CPU Memory mapping from multiple threads.Fernando Sahmkow2019-10-051-0/+1
| |
* | gl_rasterizer: Fix polygon offset unitsReinUsesLisp2019-10-011-1/+3
|/ | | | | | For some reason hardware divides polygon offset units by two. This is visible since drivers multiply the application requested polygon offset by two.
* Merge pull request #2870 from FernandoS27/multi-drawDavid2019-09-221-79/+102
|\ | | | | Implement a MME Draw commands Inliner and correct host instance drawing
| * Maxwell3D: Corrections and refactors to MME instance refactorFernando Sahmkow2019-09-221-10/+2
| |
| * Rasterizer: Correct introduced bug where a conditional render wouldn't stop a draw call from executingFernando Sahmkow2019-09-201-10/+16
| |
| * Rasterizer: Refactor and simplify DrawBatch Interface.Fernando Sahmkow2019-09-191-19/+10
| |
| * Rasterizer: Address Feedback and conscerns.Fernando Sahmkow2019-09-191-11/+11
| |
| * Rasterizer: Refactor draw calls, remove deadcode and clean up.Fernando Sahmkow2019-09-191-103/+66
| |
| * VideoCore: Corrections to the MME Inliner and removal of hacky instance management.Fernando Sahmkow2019-09-191-20/+18
| |
| * Video Core: initial Implementation of InstanceDraw PackagingFernando Sahmkow2019-09-191-8/+81
| |
* | gl_rasterizer: Remove unused code paths from ConfigureFramebuffersReinUsesLisp2019-09-171-68/+20
|/
* gl_rasterizer: Correct sRGB Fix regressionFernando Sahmkow2019-09-111-0/+12
|
* renderer_opengl: Fix sRGB blitsReinUsesLisp2019-09-111-20/+1
| | | | | | | | | Removes the sRGB hack of tracking if a frame used an sRGB rendertarget to apply at least once to blit the final texture as sRGB. Instead of doing this apply sRGB if the presented image has sRGB. Also enable sRGB by default on Maxwell3D registers as some games seem to assume this.
* gl_shader_decompiler: Keep track of written images and mark them as modifiedReinUsesLisp2019-09-061-0/+3
|
* gl_rasterizer: Apply textures and images stateReinUsesLisp2019-09-061-0/+2
|
* gl_rasterizer: Add samplers to compute dispatchesReinUsesLisp2019-09-061-3/+33
|
* gl_rasterizer: Minor code changesReinUsesLisp2019-09-061-18/+25
|
* gl_state: Split textures and samplers into two arraysReinUsesLisp2019-09-061-5/+4
|
* gl_rasterizer: Implement image bindingsReinUsesLisp2019-09-061-2/+7
|
* texture_cache: Pass TIC to texture cacheReinUsesLisp2019-09-061-1/+1
|
* kepler_compute: Implement texture queriesReinUsesLisp2019-09-061-1/+21
|
* gl_rasterizer: Split SetupTexturesReinUsesLisp2019-09-061-20/+30
|
* gl_rasterizer: Fix stencil testingReinUsesLisp2019-09-041-11/+11
| | | | | | * Fix stencil dirty flags tracking when stencil is disabled * Attach stencil on clears (previously it only attached depth) * Attach stencil on drawing regardless of stencil testing being enabled
* video_core: Silent miscellaneous warnings (#2820)Rodrigo Locatti2019-08-301-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | * texture_cache/surface_params: Remove unused local variable * rasterizer_interface: Add missing documentation commentary * maxwell_dma: Remove unused rasterizer reference * video_core/gpu: Sort member declaration order to silent -Wreorder warning * fermi_2d: Remove unused MemoryManager reference * video_core: Silent unused variable warnings * buffer_cache: Silent -Wreorder warnings * kepler_memory: Remove unused MemoryManager reference * gl_texture_cache: Add missing override * buffer_cache: Add missing include * shader/decode: Remove unused variables
* Video_Core: Implement a new Buffer CacheFernando Sahmkow2019-08-211-1/+1
|
* GPU: Flush commands on every dma pusher step.Fernando Sahmkow2019-07-261-0/+4
| | | | | | This commit ensures that the host gpu is constantly fed with commands to work with, while the guest gpu keeps producing the rest of the commands. This reduces syncing time between host and guest gpu.
* Merge pull request #2704 from FernandoS27/conditionalbunnei2019-07-241-1/+12
|\ | | | | maxwell3d: Implement Conditional Rendering
| * maxwell3d: Implement Conditional RenderingFernando Sahmkow2019-07-171-1/+12
| | | | | | | | | | | | Conditional Rendering takes care of conditionaly clearing or drawing depending on a set of queries. This PR implements the query checks to stablish if things can be rendered or not.
* | Merge pull request #2734 from ReinUsesLisp/compute-shadersbunnei2019-07-221-15/+84
|\ \ | | | | | | gl_rasterizer: Implement compute shaders
| * | gl_shader_cache: Address review commentariesReinUsesLisp2019-07-151-0/+2
| | |
| * | gl_rasterizer: Implement compute shadersReinUsesLisp2019-07-151-15/+82
| |/
* | Maxwell3D: Reorganize and address feedbackFernando Sahmkow2019-07-201-18/+27
| |
* | GL_State: Feedback and fixesFernando Sahmkow2019-07-171-5/+5
| |
* | Maxwell3D: Address FeedbackFernando Sahmkow2019-07-171-1/+1
| |
* | GL_Rasterizer: Corrections to Clearing.Fernando Sahmkow2019-07-171-6/+6
| |
* | GL_Rasterizer: Rework RenderTarget/DepthBuffer clearingFernando Sahmkow2019-07-171-6/+58
| |
* | Maxwell3D: Implement State Dirty Flags.Fernando Sahmkow2019-07-171-31/+55
| |
* | Maxwell3D: Rework the dirty system to be more consistant and scaleableFernando Sahmkow2019-07-171-12/+41
|/
* gl_rasterizer: Fix nullptr dereference on disabled buffersReinUsesLisp2019-07-061-1/+1
|
* gl_rasterizer: Minor style changesReinUsesLisp2019-07-061-26/+20
|
* gl_rasterizer: Fix vertex and index data invalidationsReinUsesLisp2019-07-061-7/+7
|
* gl_buffer_cache: Implement with generic buffer cacheReinUsesLisp2019-07-061-15/+25
|
* gl_buffer_cache: Remove global system gettersReinUsesLisp2019-07-061-3/+2
|
* gl_rasterizer: Drop gl_global_cache in favor of gl_buffer_cacheReinUsesLisp2019-07-061-10/+17
|
* gl_buffer_cache: Rework to support internalized buffersReinUsesLisp2019-07-061-1/+1
|
* gl_buffer_cache: Return used buffer from Upload functionReinUsesLisp2019-07-061-15/+15
|
* gl_rasterizer: Add some commentariesReinUsesLisp2019-07-061-0/+5
|
* gl_rasterizer: Make DrawParameters rasterizer instance constReinUsesLisp2019-07-061-1/+1
|
* gl_rasterizer: Move index buffer uploading to its own methodReinUsesLisp2019-07-061-6/+15
|
* texture_cache: Query MemoryManager from the systemFernando Sahmkow2019-06-251-4/+0
|
* texture_cache: Implement texception detection and texture barriers.Fernando Sahmkow2019-06-211-2/+8
|
* texture_cache: Implement Buffer Copy and detect Turing GPUs Image CopiesFernando Sahmkow2019-06-211-1/+1
|
* Fix rebase errorsFernando Sahmkow2019-06-211-2/+8
|
* texture_cache: Fermi2D reform and implement View MirageFernando Sahmkow2019-06-211-3/+2
| | | | | This also does some fixes on compressed textures reinterpret and on the Fermi2D engine in general.
* gl_rasterizer: Track texture buffer usageReinUsesLisp2019-06-211-13/+21
|
* video_core: Make ARB_buffer_storage a required extensionReinUsesLisp2019-06-211-5/+0
|
* texture_cache: Implement Guard mechanismFernando Sahmkow2019-06-211-0/+4
|
* gl_framebuffer_cache: Use a hashed struct to cache framebuffersReinUsesLisp2019-06-211-57/+2
|
* texture_cache return invalid buffer on deactivated color_maskFernando Sahmkow2019-06-211-2/+4
|
* Remove Framebuffer reconfiguration and restrict rendertarget protectionFernando Sahmkow2019-06-211-10/+6
|
* texture_cache: Correct premature texceptionsFernando Sahmkow2019-06-211-5/+10
| | | | | | | | | | | | Due to our current infrastructure, it is possible for a mipmap to be set on as a render target before a texception of that mipmap's superset be set afterwards. This is problematic as we rely on texture views to set up texceptions and protecting render targets targets for 3D texture rendering. One simple solution is to configure framebuffers after texture setup but this brings other problems. This solution, forces a reconfiguration of the framebuffers after such event happens.
* texture_cache: Implement guest flushingFernando Sahmkow2019-06-211-2/+4
|
* Texture Cache: Implement Blitting and Fermi CopiesFernando Sahmkow2019-06-211-3/+1
|
* Change texture_cache chaching from GPUAddr to CacheAddrFernando Sahmkow2019-06-211-16/+0
| | | | | This also reverses the changes to make invalidation and flushing through the GPU address.
* Implement Texture Cache V2Fernando Sahmkow2019-06-211-22/+47
|
* gl_texture_cache: Implement fermi copiesReinUsesLisp2019-06-211-2/+3
|
* gl_texture_cache: Minor changesReinUsesLisp2019-06-211-4/+4
|
* gl_texture_cache: Attach surface textures instead of viewsReinUsesLisp2019-06-211-13/+9
|
* gl_texture_cache: Initial implementationReinUsesLisp2019-06-211-33/+33
|
* gl_rasterizer: Remove unused parameters in descriptor uploadsReinUsesLisp2019-06-081-5/+4
|
* video_core/engines: Move ConstBufferInfo out of Maxwell3DReinUsesLisp2019-06-081-37/+36
|
* gl_rasterizer: Move alpha testing to the OpenGL pipelineReinUsesLisp2019-05-301-5/+9
| | | | Removes the alpha testing code from each fragment shader invocation.
* gl_rasterizer: Use GL_QUADS to emulate quads renderingReinUsesLisp2019-05-301-34/+3
|
* gl_shader_cache: Use shared contexts to build shaders in parallelReinUsesLisp2019-05-211-3/+5
|
* Merge pull request #2480 from ReinUsesLisp/fix-quadsHexagon122019-05-191-2/+2
|\ | | | | gl_rasterizer: Pass the right number of array quad vertices count
| * gl_rasterizer: Pass the right number of array quad vertices countReinUsesLisp2019-05-171-2/+2
| |
* | gl_rasterizer: Limit OpenGL point size to a minimum of 1ReinUsesLisp2019-05-181-1/+3
|/
* gl_rasterizer: Silence unused variable warningLioncash2019-05-041-2/+2
| | | | Makes use of src, so it's not considered unused.
* Merge pull request #2322 from ReinUsesLisp/wswitchbunnei2019-04-291-0/+2
|\ | | | | video_core: Silent -Wswitch warnings
| * video_core: Silent -Wswitch warningsReinUsesLisp2019-04-181-0/+2
| |
* | Merge pull request #2383 from ReinUsesLisp/aoffi-testbunnei2019-04-231-13/+12
|\ \ | | | | | | gl_shader_decompiler: Disable variable AOFFI on unsupported devices
| * | gl_shader_decompiler: Use variable AOFFI on supported hardwareReinUsesLisp2019-04-141-3/+1
| | |
| * | gl_device: Implement interface and add uniform offset alignmentReinUsesLisp2019-04-101-12/+13
| |/
* | Merge pull request #2318 from ReinUsesLisp/sampler-cachebunnei2019-04-181-93/+1
|\ \ | | | | | | gl_sampler_cache: Port sampler cache to OpenGL
| * | gl_sampler_cache: Port sampler cache to OpenGLReinUsesLisp2019-04-021-93/+1
| | |
* | | Merge pull request #2348 from FernandoS27/guest-bindlessbunnei2019-04-181-1/+9
|\ \ \ | | | | | | | | Implement Bindless Textures on Shader Decompiler and GL backend
| * | | Move ConstBufferAccessor to Maxwell3d, correct mistakes and clang format.Fernando Sahmkow2019-04-081-6/+4
| | | |
| * | | Fix bad rebaseFernando Sahmkow2019-04-081-2/+1
| | | |
| * | | Simplify ConstBufferAccessorFernando Sahmkow2019-04-081-2/+4
| | | |
| * | | Fixes to Const Buffer Accessor and FormattingFernando Sahmkow2019-04-081-2/+1
| | | |
| * | | Implement Bindless Handling on SetupTextureFernando Sahmkow2019-04-081-1/+9
| | | |
| * | | Implement Const Buffer AccessorFernando Sahmkow2019-04-081-2/+4
| | | |
* | | | Merge pull request #2384 from ReinUsesLisp/gl-state-clearbunnei2019-04-171-4/+4
|\ \ \ \ | | | | | | | | | | gl_rasterizer: Apply just the needed state on Clear
| * | | | gl_rasterizer: Apply just the needed state on ClearReinUsesLisp2019-04-101-4/+4
| | |_|/ | |/| |
* / | | shader_ir: Implement STG, keep track of global memory usage and flushReinUsesLisp2019-04-141-0/+4
|/ / /
* | | gl_rasterizer: Use ARB_multi_bind to update SSBOsReinUsesLisp2019-04-061-9/+8
| | |
* | | gl_rasterizer: Use ARB_multi_bind to update UBOs across stagesReinUsesLisp2019-04-061-22/+10
|/ /
* | video_core/renderer_opengl: Remove unnecessary includesLioncash2019-04-041-2/+0
| | | | | | | | | | | | | | Quite a few unused includes have built up over time, particularly on core/memory.h. Removing these includes means the source files including those files will no longer need to be rebuilt if they're changed, making compilation slightly faster in this scenario.
* | Merge pull request #2299 from lioncash/maxwellbunnei2019-04-041-1/+1
|\ \ | |/ |/| gl_shader_manager: Remove reliance on a global accessor within MaxwellUniformData::SetFromRegs()
| * gl_shader_manager: Remove reliance on global accessor within MaxwellUniformData::SetFromRegs()Lioncash2019-03-281-1/+1
| | | | | | | | | | | | | | | | | | We can just pass in the Maxwell3D instance instead of going through the system class to get at it. This also lets us simplify the interface a little bit. Since we pass in the Maxwell3D context now, we only really need to pass the shader stage index value in.
* | gl_rasterizer: Remove unused reference member variable from RasterizerOpenGLLioncash2019-03-271-5/+3
|/ | | | | This member variable is no longer being used, so it can be removed, removing a dependency on EmuWindow from the rasterizer's interface"
* gpu: Move GPUVAddr definition to common_types.bunnei2019-03-211-4/+4
|
* gl_rasterizer: Skip zero addr/sized regions on flush/invalidate.bunnei2019-03-171-0/+6
|
* gpu: Use host address for caching instead of guest address.bunnei2019-03-151-5/+5
|
* Merge pull request #2216 from ReinUsesLisp/rasterizer-systembunnei2019-03-141-29/+30
|\ | | | | gl_rasterizer: Use system instance passed from argument
| * gl_rasterizer: Use system instance passed from argumentReinUsesLisp2019-03-111-29/+30
| |
* | Merge pull request #2215 from ReinUsesLisp/samplersbunnei2019-03-121-57/+40
|\ \ | |/ |/| gl_rasterizer: Encapsulate sampler queries into methods
| * gl_rasterizer: Encapsulate sampler queries into methodsReinUsesLisp2019-03-091-57/+40
| |
* | Merge pull request #2143 from ReinUsesLisp/texviewbunnei2019-03-101-3/+2
|\ \ | | | | | | gl_rasterizer_cache: Create texture views for array discrepancies
| * | gl_rasterizer_cache: Create texture views for array discrepanciesReinUsesLisp2019-02-271-3/+2
| | | | | | | | | | | | | | | | | | When a texture is sampled in a shader with a different array mode than the cached state, create a texture view and bind that to the shader instead.
* | | gl_rasterizer: Minor logger changesReinUsesLisp2019-03-091-19/+13
| |/ |/|
* | gpu: Always flush.bunnei2019-03-071-5/+1
| |
* | gl_rasterizer: Remove texture unbinding after dispatching a draw callReinUsesLisp2019-02-281-12/+0
| | | | | | | | | | Unbinding was required when OpenGL delete operations didn't unbind a resource if it was bound. This is no longer needed and can be removed.
* | Merge pull request #2121 from FernandoS27/texception2bunnei2019-02-281-0/+4
|\ \ | | | | | | Improve the Accuracy of the Rasterizer Cache through a Texception Pass
| * | Remove certain optimizations that caused texception to fail in certain scenarios.Fernando Sahmkow2019-02-281-3/+0
| | |
| * | rasterizer_cache_gl: Implement Texception PassFernando Sahmkow2019-02-281-0/+7
| | |
* | | Merge pull request #2172 from lioncash/reorderbunnei2019-02-281-2/+2
|\ \ \ | |/ / |/| | gl_rasterizer/vk_memory_manager: Silence -Wreorder warnings
| * | gl_rasterizer: Reorder constructor initializer list in terms of member declaration orderLioncash2019-02-271-2/+2
| | | | | | | | | | | | | | | Orders the members in the order they would actually be initialized in. Silences a -Wreorder warning.
* | | Merge pull request #2163 from ReinUsesLisp/bitset-dirtybunnei2019-02-281-9/+9
|\ \ \ | |_|/ |/| | maxwell_3d: Use std::bitset to manage dirty flags
| * | maxwell_3d: Use std::bitset to manage dirty flagsReinUsesLisp2019-02-261-9/+9
| |/
* / common/math_util: Move contents into the Common namespaceLioncash2019-02-271-3/+3
|/ | | | | These types are within the common library, so they should be within the Common namespace.
* gl_rasterizer: Implement a more accurate fermi 2D copy.bunnei2019-02-071-8/+4
| | | | - This is a blit, use the blit registers.
* gl_shader_cache: Link loading screen with disk shader cache loadReinUsesLisp2019-02-071-3/+4
|
* gl_shader_disk_cache: Pass core system as argument and guard against games without title idsReinUsesLisp2019-02-071-2/+3
|
* gl_shader_disk_cache: Save GLSL and entries into the precompiled fileReinUsesLisp2019-02-071-5/+3
|
* rasterizer_interface: Add disk cache entry for the rasterizerReinUsesLisp2019-02-071-0/+5
|
* Merge pull request #2042 from ReinUsesLisp/nouveau-texbunnei2019-02-071-4/+0
|\ | | | | maxwell_3d: Allow texture handles with TIC id zero
| * maxwell_3d: Allow texture handles with TIC id zeroReinUsesLisp2019-02-031-4/+0
| | | | | | | | | | Also remove "enabled" field from Tegra::Texture::FullTextureInfo because it would become unused.
* | Merge pull request #2071 from ReinUsesLisp/dsa-texturebunnei2019-02-071-5/+2
|\ \ | |/ |/| gl_rasterizer: Use DSA for textures and move swizzling to texture state
| * gl_state: Remove texture target trackingReinUsesLisp2019-01-301-3/+0
| |
| * gl_rasterizer_cache: Move swizzling to textures instead of stateReinUsesLisp2019-01-301-5/+5
| |
* | Merge pull request #2074 from ReinUsesLisp/shader-ir-unify-offsetbunnei2019-02-011-1/+1
|\ \ | | | | | | shader_ir: Unify constant buffer offset values
| * | shader_ir: Unify constant buffer offset valuesReinUsesLisp2019-01-301-1/+1
| |/ | | | | | | | | | | | | Constant buffer values on the shader IR were using different offsets if the access direct or indirect. cbuf34 has a non-multiplied offset while cbuf36 does. On shader decoding this commit multiplies it by four on cbuf34 queries.
* | Merge pull request #2067 from ReinUsesLisp/workaround-fbbunnei2019-02-011-11/+13
|\ \ | | | | | | gl_rasterizer: Workaround invalid zeta clears
| * | gl_rasterizer: Workaround invalid zeta clearsReinUsesLisp2019-01-301-11/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | Some games (like Xenoblade Chronicles 2) clear both depth and stencil buffers while there's a depth-only texture attached (e.g. D16 Unorm). This commit reads the zeta format of the bound surface on ConfigureFramebuffers and returns if depth and/or stencil attachments were set. This is ignored on DrawArrays but on Clear it's used to just clear those attachments, bypassing an OpenGL error.
* | | rasterizer_interface: Remove unused AccelerateFill operationReinUsesLisp2019-02-011-5/+0
| |/ |/|
* | gl_shader_cache: Use explicit bindingsReinUsesLisp2019-01-301-81/+49
| |
* | gl_rasterizer: Implement global memory managementReinUsesLisp2019-01-301-0/+22
|/
* Merge pull request #1927 from ReinUsesLisp/shader-irbunnei2019-01-261-2/+2
|\ | | | | video_core: Replace gl_shader_decompiler with an IR based decompiler
| * video_core: Replace gl_shader_decompilerReinUsesLisp2019-01-151-2/+2
| |
* | frontend: Refactor ScopeAcquireWindowContext out of renderer_opengl.bunnei2019-01-241-4/+0
| |
* | maxwell_3d: Set rt_separate_frag_data to 1 by defaultReinUsesLisp2019-01-221-4/+1
| | | | | | | | | | | | | | Commercial games assume that this value is 1 but they never set it. On the other hand nouveau manually sets this register. On ConfigureFramebuffers we were asserting for what we are actually implementing (according to envytools).
* | Merge pull request #2008 from ReinUsesLisp/dirty-framebuffersbunnei2019-01-201-1/+13
|\ \ | | | | | | gl_rasterizer_cache: Use dirty flags for framebuffers
| * | gl_rasterizer: Skip framebuffer configuration if rendertargets have not been changedReinUsesLisp2019-01-071-1/+13
| | |
* | | Merge pull request #2002 from ReinUsesLisp/dsa-vao-bufferbunnei2019-01-201-34/+34
|\ \ \ | | | | | | | | gl_rasterizer: Use DSA for VAOs and buffers
| * | | gl_rasterizer: Workaround Intel VAO DSA bugReinUsesLisp2019-01-091-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | There is a bug on Intel's blob driver where it fails to properly build a vertex array object if it's not bound even after creating it with glCreateVertexArrays. This workaround binds it after creating it to bypass the issue.
| * | | gl_rasterizer: Use DSA for vertex array objectsReinUsesLisp2019-01-061-34/+28
| | | |
* | | | gl_rasterizer: Silent unsafe mix warningReinUsesLisp2019-01-181-1/+1
| |_|/ |/| |
* | | gl_global_cache: Add dummy global cache managerReinUsesLisp2019-01-081-1/+2
| |/ |/|
* | gl_shader_cache: Use dirty flags for shadersReinUsesLisp2019-01-071-1/+3
|/
* gl_rasterizer_cache: Texture view if shader samples array but OGL is notReinUsesLisp2018-12-301-2/+5
| | | | | | | When a shader samples a texture array but that texture in OpenGL is created without layers, use a texture view to increase the texture hierarchy. For example, instead of binding a GL_TEXTURE_2D bind a GL_TEXTURE_2D_ARRAY view.
* Merge pull request #1824 from ReinUsesLisp/fbcachebunnei2018-12-061-39/+77
|\ | | | | gl_rasterizer: Implement a framebuffer cache
| * gl_rasterizer: Implement a framebuffer cacheReinUsesLisp2018-11-291-39/+77
| |
* | Merge pull request #1827 from ReinUsesLisp/clip-and-shaderbunnei2018-12-021-11/+24
|\ \ | | | | | | gl_rasterizer: Enable clip distances when set in register and in shader
| * | gl_rasterizer: Enable clip distances when set in register and in shaderReinUsesLisp2018-11-291-11/+24
| |/
* | gl_rasterizer: Signal UNIMPLEMENTED when rt_separate_frag_data is not zeroReinUsesLisp2018-11-291-1/+1
| |
* | gl_rasterizer: Remove extension booleansReinUsesLisp2018-11-291-13/+0
|/
* Merge pull request #1808 from Tinob/masterbunnei2018-11-281-13/+15
|\ | | | | Fix clip distance and viewport
| * remove viewport_transform_enabled as it seems to be inactive when valid transforms are used.Rodolfo Bogado2018-11-271-12/+5
| |
| * Add support for Clip Distance enabled registerRodolfo Bogado2018-11-271-1/+10
| |
* | Merge pull request #1786 from Tinob/DepthClampbunnei2018-11-281-0/+16
|\ \ | | | | | | Add Depth Clamp Support
| * | Implement depth clampRodolfo Bogado2018-11-271-0/+16
| |/
* / gl_rasterizer: Fixup for #1723.Markus Wick2018-11-271-1/+1
|/ | | | | | | | | | | On invalidating the streaming buffer, we need to reupload all vertex buffers. But we don't need to reconfigure the vertex format. This was a (silly) misstake in #1723. Thanks at Rodrigo for discovering the issue. Fun fact, as configuring the vertex format also invalidate the vertex buffer, this misstake had no affect on the behavior.
* Merge pull request #1794 from Tinob/masterbunnei2018-11-271-7/+23
|\ | | | | Add support for viewport_transfom_enable register
| * Limit the amount of viewports tested for state changes only to the usable onesRodolfo Bogado2018-11-251-2/+10
| |
| * Add support for viewport_transfom_enable registerRodolfo Bogado2018-11-241-5/+13
| |
* | Merge pull request #1723 from degasus/dirty_flagsbunnei2018-11-271-4/+20
|\ \ | | | | | | gl_rasterizer: Skip VB upload if the state is clean.
| * | gl_rasterizer: Skip VB upload if the state is clean.Markus Wick2018-11-171-4/+20
| | |
* | | GPU States: Implement Polygon Offset. This is used in SMO all the time. (#1784)Marcos2018-11-271-1/+11
| |/ |/| | | | | | | | | | | | | * GPU States: Implement Polygon Offset. This is used in SMO all the time. * Clang Format fixes. * Initialize polygon_offset in the constructor.
* | Merge pull request #1725 from FernandoS27/gl43bunnei2018-11-241-5/+0
|\ \ | | | | | | Update OpenGL's backend version from 3.3 to 4.3
| * | Removed pre 4.3 ARB extensionsFernandoS272018-11-211-5/+0
| | |
* | | Add support for clear_flags registerRodolfo Bogado2018-11-241-6/+38
|/ /
* | Merge pull request #1693 from Tinob/masterbunnei2018-11-191-65/+94
|\ \ | | | | | | Missing ogl states
| * | drop support for non separate alpha as it seems to cause issues in some gamesRodolfo Bogado2018-11-181-18/+16
| | |
| * | fix sampler configuration, thanks to Marcos for his investigationRodolfo Bogado2018-11-171-17/+38
| | |
| * | small type fixRodolfo Bogado2018-11-171-6/+6
| | |
| * | add AlphaToCoverage and AlphaToOneRodolfo Bogado2018-11-171-0/+7
| | |
| * | add support for fragment_color_clampRodolfo Bogado2018-11-171-0/+6
| | |
| * | set border color not depending on the wrap modeRodolfo Bogado2018-11-171-9/+9
| | | | | | | | | | | | only enable color mask for the first framebuffer id independent blending is disabled
| * | set default value for point size registerRodolfo Bogado2018-11-171-5/+1
| | |
| * | fix viewport and scissor behaviorRodolfo Bogado2018-11-171-16/+17
| |/
* / gl_rasterizer: Remove default clip distanceReinUsesLisp2018-11-191-2/+0
|/
* Merge pull request #1660 from Tinob/masterbunnei2018-11-121-45/+59
|\ | | | | Map more missing opengl states
| * Use core extensions when available to set max anisotropic filtering levelRodolfo Bogado2018-11-111-2/+7
| |
| * Improve state management by splitting some of the states id separated function to avoid a full apply overheadRodolfo Bogado2018-11-111-31/+23
| |
| * Try to fix problems with stencil test in some games, relax translation to opengl enums to avoid crashing and only generate logs of the errors.Rodolfo Bogado2018-11-111-4/+10
| |
| * set sampler max lod, min lod, lod bias and max anisotropyRodolfo Bogado2018-11-111-10/+21
| |
* | Merge pull request #1664 from FreddyFunk/cast2bunnei2018-11-111-2/+2
|\ \ | |/ |/| gl_rasterizer: Fix compiler warnings
| * gl_rasterizer: Fix compiler warningsFrederic Laing2018-11-081-2/+2
| |
* | Merge pull request #1663 from lioncash/rasterbunnei2018-11-111-1/+2
|\ \ | | | | | | rasterizer_cache: Remove reliance on the System singleton
| * | rasterizer_cache: Remove reliance on the System singletonLioncash2018-11-081-1/+2
| |/ | | | | | | | | | | Rather than have a transparent dependency, we can make it explicit in the interface. This also gets rid of the need to put the core include in a header.
* | Merge pull request #1654 from degasus/dirty_flagsbunnei2018-11-111-6/+21
|\ \ | |/ |/| gl_rasterizer: Skip VAO binding if the state is clean.
| * gl_rasterizer: Skip VAO binding if the state is clean.Markus Wick2018-11-061-2/+7
| |
| * gl_rasterizer: Split VAO and VB setup functions.Markus Wick2018-11-061-4/+14
| |
* | Add support to color mask to avoid issues in blending caused by wrong values in the alpha channel in some render targets.Rodolfo Bogado2018-11-051-5/+18
| |
* | Implement multi-target viewports and blendingRodolfo Bogado2018-11-051-39/+56
|/
* Merge pull request #1623 from Tinob/masterbunnei2018-11-011-3/+1
|\ | | | | Improve OpenGL state handling
| * Improve OpenGL state handlingRodolfo Bogado2018-10-311-3/+1
| |
* | video_core: Move surface declarations out of gl_rasterizer_cacheReinUsesLisp2018-10-301-3/+4
|/
* global: Use std::optional instead of boost::optional (#1578)Frederic L2018-10-301-1/+1
| | | | | | | | | | | | | | | | * get rid of boost::optional * Remove optional references * Use std::reference_wrapper for optional references * Fix clang format * Fix clang format part 2 * Adressed feedback * Fix clang format and MacOS build
* Implement Mip FilterFernandoS272018-10-291-3/+7
|
* Implement sRGB Support, including workarounds for nvidia driver issues and QT sRGB supportRodolfo Bogado2018-10-281-1/+12
|
* gl_rasterizer: Implement primitive restart.bunnei2018-10-261-0/+8
|
* gl_rasterizer: Implement depth range.bunnei2018-10-261-5/+5
|
* Assert that multiple render targets are not set while alpha testingFernandoS272018-10-221-0/+12
|
* Use standard UBO and fix/stylize the codeFernandoS272018-10-221-15/+0
|
* Cache uniform locations and restructure the implementationFernandoS272018-10-221-22/+4
|
* Remove SyncAlphaTest and clang formatFernandoS272018-10-221-2/+5
|
* Added Alpha FuncFernandoS272018-10-221-1/+9
|
* Implemented Alpha TestingFernandoS272018-10-221-0/+11
|
* fermi_2d: Add support for more accurate surface copies.bunnei2018-10-191-0/+6
|
* config: Rename use_accurate_framebuffers -> use_accurate_gpu_emulation.bunnei2018-10-161-2/+2
| | | | - This will be used as a catch-all for slow-but-accurate GPU emulation paths.
* rasterizer_cache: Refactor to support in-order flushing.bunnei2018-10-161-6/+3
|
* gl_rasterizer_cache: Only flush when use_accurate_framebuffers is enabled.bunnei2018-10-161-1/+6
|
* gl_rasterizer: Implement flushing.bunnei2018-10-161-1/+25
|
* gl_rasterizer: Silence implicit cast warning in glBindBufferRangeReinUsesLisp2018-10-151-1/+2
|
* Merge pull request #1460 from FernandoS27/scissor_testbunnei2018-10-101-0/+17
|\ | | | | Implemented Scissor Testing
| * Implement Scissor TestFernandoS272018-10-091-4/+9
| |
| * Assert Scissor testsFernandoS272018-10-091-0/+12
| |
* | gl_shader_decompiler: Implement geometry shadersReinUsesLisp2018-10-071-14/+26
|/
* Merge pull request #1446 from bunnei/fast_fermi_copybunnei2018-10-071-7/+3
|\ | | | | gl_rasterizer: Implement accelerated Fermi2D copies.
| * gl_rasterizer: Add rasterizer cache code to handle accerated fermi copies.bunnei2018-10-061-7/+3
| |
* | Merge pull request #1437 from FernandoS27/tex-mode2bunnei2018-10-071-0/+18
|\ \ | | | | | | Implemented Depth Compare, Shadow Samplers and Texture Processing Modes for TEXS and TLDS
| * | Implemented Depth Compare and Shadow SamplersFernandoS272018-10-061-0/+18
| | |
* | | gl_rasterizer: Fixup undefined behaviour in SetupDrawReinUsesLisp2018-10-071-0/+1
| |/ |/|
* | gl_rasterizer: Implement quads topologyReinUsesLisp2018-10-041-43/+103
|/
* gl_rasterizer: Fixup unassigned point sizesReinUsesLisp2018-10-011-1/+4
|
* gl_rasterizer_cache: Workaround for Texture2D -> Texture2DArray scenario.bunnei2018-09-301-1/+1
|
* video_core: Implement point_size and add point state syncReinUsesLisp2018-09-281-0/+7
|
* video_core: Add asserts for CS, TFB and alpha testingReinUsesLisp2018-09-261-0/+22
| | | | | | Add asserts for compute shader dispatching, transform feedback being enabled and alpha testing. These have in common that they'll probably break rendering without logging.
* RasterizerGL: Use the correct framebuffer when clearing via the CLEAR_BUFFERS register.Subv2018-09-211-1/+1
| | | | | | Previously we were clearing the default backbuffer framebuffer. Found thanks to a Piglit test :)
* gl_rasterizer: Fix StartAddress handling with indexed draw calls.Markus Wick2018-09-191-6/+7
| | | | | We uploaded the wrong data before. So the offset on the host GPU pointer may work for the first vertices, the last ones run out bounds. Let's just offset the upload instead.
* Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi2018-09-151-15/+15
|
* Use ARB_multi_bind for uniform buffers (#1287)ReinUsesLisp2018-09-131-3/+22
| | | | | | * gl_rasterizer: use ARB_multi_bind for uniform buffers * address feedback
* Merge pull request #1286 from bunnei/multi-clearbunnei2018-09-111-48/+55
|\ | | | | gl_rasterizer: Implement clear for non-zero render targets.
| * gl_rasterizer: Implement clear for non-zero render targets.bunnei2018-09-101-48/+55
| | | | | | | | - Several misc. changes to ConfigureFramebuffers in support of this.
* | rasterizer: Drop unused handler.Markus Wick2018-09-101-2/+0
|/ | | | | | | | This virtual function is called in a very hot spot, and it does nothing. If this kind of feature is required, please be more specific and add callbacks in the switch statement within Maxwell3D::WriteReg. There is no point in having another switch statement within the rasterizer.
* gl_rasterizer: Implement multiple color attachments.bunnei2018-09-101-69/+45
|
* Merge pull request #1256 from bunnei/tex-target-supportbunnei2018-09-081-5/+11
|\ | | | | Initial support for non-2D textures
| * gl_rasterizer: Implement texture wrap mode p.bunnei2018-09-081-2/+7
| |
| * gl_rasterizer_cache: Keep track of texture type per surface.bunnei2018-09-081-0/+1
| |
| * gl_state: Keep track of texture target.bunnei2018-09-081-3/+3
| |
* | gl_rasterizer: Use baseInstance instead of moving the buffer points.bunnei2018-09-081-21/+25
| | | | | | | | | | | | | | This hopefully helps our cache not to redundant upload the vertex buffer. # Conflicts: # src/video_core/renderer_opengl/gl_rasterizer.cpp
* | video_core: Arithmetic overflow warning fix for gl_rasterizer (#1262)Patrick Elsässer2018-09-081-12/+14
|/ | | | | | | | | | | | | | | * video_core: Arithmetic overflow fix for gl_rasterizer - Fixed warnings, which were indicating incorrect behavior from integral promotion rules and types larger than those in which arithmetic is typically performed. - Added const for variables where possible and meaningful. * Changed the casts from C to C++ style Changed the C-style casts to C++ casts as proposed. Took also care about signed / unsigned behaviour.
* gl_rasterizer: Call state.Apply only once on SetupShaders.bunnei2018-09-061-4/+2
|
* gl_rasterizer: Implement a VAO cache.Markus Wick2018-09-051-48/+48
| | | | | | This patch caches VAO objects instead of re-emiting all pointers per draw call. Configuring this pointers is known as a fast task, but it yields too many GL calls. So for better performance, just bind the VAO instead of 16 pointers.
* renderer_opengl: Implement a buffer cache.Markus Wick2018-09-051-74/+27
| | | | | | | | | The idea of this cache is to avoid redundant uploads. So we are going to cache the uploaded buffers within the stream_buffer and just reuse the old pointers. The next step is to implement a VBO cache on GPU memory, but for now, I want to check the overhead of the cache management. Fetching the buffer over PCI-E should be quite fast.
* gl_shader_cache: Use an u32 for the binding point cache.Markus Wick2018-09-041-2/+2
| | | | | | | The std::string generation with its malloc and free requirement was a noticeable overhead. Also switch to an ordered_map to avoid the std::hash call. As those maps usually have a size of two elements, the lookup time shall not matter.
* Update microprofile scopes.Markus Wick2018-09-041-3/+11
| | | | | | Blame the subsystems which deserve the blame :) The updated list is not complete, just the ones I've spotted on random sampling the stack trace.
* gl_rasterizer_cache: Use accurate framebuffer setting for accurate copies.bunnei2018-08-311-20/+0
|
* gl_renderer: Cache textures, framebuffers, and shaders based on CPU address.bunnei2018-08-311-11/+8
|
* gl_rasterizer: Fix issues with the rasterizer cache.bunnei2018-08-311-0/+38
| | | | | - Use a single cached page map. - Fix calculation of ending page.
* Merge pull request #1193 from lioncash/privbunnei2018-08-281-2/+2
|\ | | | | gpu: Make memory_manager private
| * gpu: Make memory_manager privateLioncash2018-08-281-2/+2
| | | | | | | | | | | | | | | | | | | | Makes the class interface consistent and provides accessors for obtaining a reference to the memory manager instance. Given we also return references, this makes our more flimsy uses of const apparent, given const doesn't propagate through pointers in the way one would typically expect. This makes our mutable state more apparent in some places.
* | gl_rasterizer: Remove unused variablesLioncash2018-08-281-2/+0
|/
* renderer_opengl: Implement a new shader cache.bunnei2018-08-281-59/+25
|
* gl_rasterizer_cache: Update to use RasterizerCache base class.bunnei2018-08-281-4/+1
|
* gl_rasterizer: Correct assertion condition in SyncLogicOpState()Lioncash2018-08-241-1/+2
| | | | | Previously the assert would always be hit, since it was the equivalent of: array == nullptr, which is never true.
* gl_rasterizer: Implement stencil test.bunnei2018-08-231-4/+31
| | | | - Used by Splatoon 2.
* gl_rasterizer: Implement partial color clear and stencil clear.bunnei2018-08-231-12/+42
|
* Merge pull request #1157 from lioncash/vecbunnei2018-08-231-1/+1
|\ | | | | gl_shader_gen: Use a std::vector to represent program code instead of std::array
| * gl_shader_gen: Use a std::vector to represent program code instead of std::arrayLioncash2018-08-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | While convenient as a std::array, it's also quite a large set of data as well (32KB). It being an array also means data cannot be std::moved. Any situation where the code is being set or relocated means that a full copy of that 32KB data must be done. If we use a std::vector we do need to allocate on the heap, however, it does allow us to std::move the data we have within the std::vector into another std::vector instance, eliminating the need to always copy the program data (as std::move in this case would just transfer the pointers and bare necessities over to the new vector instance).
* | renderer_opengl: Namespace OpenGL codeLioncash2018-08-221-0/+4
|/ | | | | | | Namespaces all OpenGL code under the OpenGL namespace. Prevents polluting the global namespace and allows clear distinction between other renderers' code in the future.
* Merge pull request #1124 from Subv/logic_opsbunnei2018-08-221-0/+18
|\ | | | | GPU: Implemented logic ops.
| * GPU: Implemented the logic op functionality of the GPU.Subv2018-08-211-0/+18
| | | | | | | | This will ASSERT if blending is enabled at the same time as logic ops.
* | Merge pull request #1123 from lioncash/screenbunnei2018-08-211-4/+3
|\ \ | | | | | | rasterizer_interface: Remove renderer-specific ScreenInfo type from AccelerateDraw() in RasterizerInterface
| * | rasterizer_interface: Remove ScreenInfo from AccelerateDraw()'s signatureLioncash2018-08-211-4/+3
| |/ | | | | | | | | | | This is an OpenGL renderer-specific data type. Given that, this type shouldn't be used within the base interface for the rasterizer. Instead, we can pass this information to the rasterizer via reference.
* / Rasterizer: Don't attempt to copy over the old texture's data when doing a format reinterpretation if we're only going to clear the framebuffer.Subv2018-08-201-4/+5
|/
* GLRasterizer: Implemented instanced vertex arrays.Subv2018-08-181-3/+16
| | | | Before each draw call, for every enabled vertex array configured as instanced, we take the current instance id and divide it by its configured divisor, then we multiply that by the corresponding stride and increment the start address by the resulting amount. This way we can simulate the vertex array being incremented once per instance without actually using OpenGL's instancing functions.
* Rasterizer: Implemented instanced rendering.Subv2018-08-151-1/+1
| | | | | | We keep track of the current instance and update an uniform in the shaders to let them know which instance they are. Instanced vertex arrays are not yet implemented.
* gl_rasterizer: Fix upload size for constant buffers.bunnei2018-08-151-3/+3
|
* gl_rasterizer: Use a shared helper to upload from CPU memory.Markus Wick2018-08-121-28/+29
|
* gl_state: Don't track constant buffer mappings.Markus Wick2018-08-121-15/+3
|
* gl_rasterizer: Use the stream buffer for constant buffers.Markus Wick2018-08-121-20/+19
|
* gl_rasterizer: Use the streaming buffer itself for the constant buffer.Markus Wick2018-08-121-31/+14
| | | | Don't emut copies, especially not for data, which is used once. They just end in a huge GPU overhead.
* gl_rasterizer: Use a helper for aligning the buffer.Markus Wick2018-08-121-14/+19
|
* Update the stream_buffer helper from Citra.Markus Wick2018-08-121-22/+14
| | | | Please see https://github.com/citra-emu/citra/pull/3666 for more details.
* Merge pull request #1020 from lioncash/namespacebunnei2018-08-121-1/+1
|\ | | | | core: Namespace EmuWindow
| * core: Namespace EmuWindowLioncash2018-08-121-1/+1
| | | | | | | | Gets the class out of the global namespace.
* | Merge pull request #1021 from lioncash/warnbunnei2018-08-121-1/+1
|\ \ | | | | | | gl_rasterizer: Silence implicit truncation warning in SetupShaders()
| * | gl_rasterizer: Silence implicit truncation warning in SetupShaders()Lioncash2018-08-121-1/+1
| |/ | | | | | | | | | | Previously this would warn of truncating a std::size_t to a u32. This is safe because we'll obviously never have more than UINT32_MAX amount of uniform buffers.
* / RasterizerGL: Ignore invalid/unset vertex attributes.Subv2018-08-121-1/+6
|/ | | | This should make the es2gears example not crash anymore.
* Merge pull request #1004 from lioncash/unusedbunnei2018-08-101-4/+3
|\ | | | | gl_rasterizer_cache: Remove unused viewport parameter of GetFramebufferSurfaces()
| * gl_rasterizer_cache: Remove unused viewport parameter of GetFramebufferSurfaces()Lioncash2018-08-101-4/+3
| |
* | Revert "gl_state: Temporarily disable culling and depth test."bunnei2018-08-101-3/+1
|/
* Merge pull request #984 from bunnei/rt-nonebunnei2018-08-091-0/+5
|\ | | | | gl_rasterizer: Do not render when no render target is configured.
| * gl_rasterizer: Do not render when no render target is configured.bunnei2018-08-091-0/+5
| | | | | | | | - Used by Super Mario Odyssey.
* | Merge pull request #981 from bunnei/cbuf-corruptbunnei2018-08-091-1/+4
|\ \ | |/ |/| maxwell_3d: Use correct const buffer size and check bounds.
| * maxwell_3d: Use correct const buffer size and check bounds.bunnei2018-08-081-1/+4
| | | | | | | | - Fixes mem corruption with Super Mario Odyssey and Pokkén Tournament DX.
* | renderer_opengl: Use trace log in a few places.bunnei2018-08-081-1/+1
|/
* added braces for conditionsDavid Marcec2018-08-051-2/+3
|
* fix the attrib format for intsDavid Marcec2018-08-051-2/+7
|
* video_core: Make global EmuWindow instance part of the base renderer classLioncash2018-08-021-4/+3
| | | | | | | | | | | Makes the global a member of the RendererBase class. We also change this to be a reference. Passing any form of null pointer to these functions is incorrect entirely, especially given the code itself assumes that the pointer would always be in a valid state. This also makes it easier to follow the lifecycle of instances being used, as we explicitly interact the renderer with the rasterizer, rather than it just operating on a global pointer.
* gl_rasterizer: Replace magic number with GL_INVALID_INDEX in SetupConstBuffers()Lioncash2018-07-241-3/+5
| | | | | This is just the named constant that OpenGL provides, so we can use that instead of using a literal -1
* gl_rasterizer: Use std::string_view instead of std::string when checking for extensionsLioncash2018-07-241-1/+3
| | | | | We can avoid heap allocations here by just using a std::string_view instead of performing unnecessary copying of the string data.
* gl_rasterizer: Use in-class member initializers where applicableLioncash2018-07-241-7/+0
| | | | We can just assign to the members directly in these cases.
* gl_rasterizer: Implement texture border color.bunnei2018-07-241-3/+6
|
* gl_rasterizer_cache: Use GPUVAddr as cache key, not parameter set.bunnei2018-07-221-10/+14
|
* gl_rasterizer: Use zeta_enable register to enable depth buffer.bunnei2018-07-221-2/+2
|
* gpu: Rename Get3DEngine() to Maxwell3D()Lioncash2018-07-211-5/+5
| | | | This makes it match its const qualified equivalent.
* gl_state: Temporarily disable culling and depth test.bunnei2018-07-191-1/+3
|
* core: Don't construct instance of Core::System, just to access its live instanceLioncash2018-07-191-13/+13
| | | | | | | | | This would result in a lot of allocations and related object construction, just to toss it all away immediately after the call. These are definitely not intentional, and it was intended that all of these should have been accessing the static function GetInstance() through the name itself, not constructed instances.
* Merge pull request #598 from bunnei/makedonecurrentbunnei2018-07-151-0/+6
|\ | | | | OpenGL: Use MakeCurrent/DoneCurrent for multithreaded rendering.
| * OpenGL: Use MakeCurrent/DoneCurrent for multithreaded rendering.bunnei2018-07-141-0/+6
| |
* | GPU: Always enable the depth write when clearing the depth buffer.Subv2018-07-141-3/+8
|/ | | | The GPU ignores that register when clearing, but OpenGL obeys the glDepthMask parameter, so we set the depth mask to GL_TRUE when clearing the depth buffer. It will be restored to the correct value automatically on the next draw call.
* gl_rasterizer: Fix check for if a shader stage is enabled.bunnei2018-07-131-11/+3
|
* gl_shader_gen: Implement dual vertex shader mode.bunnei2018-07-131-10/+33
| | | | - When VertexA shader stage is enabled, we combine with VertexB program to make a single Vertex Shader stage.
* gl_rasterizer: Flip triangles when regs.viewport_transform[0].scale_y is negative.bunnei2018-07-081-1/+4
| | | | - Fixes a regression with Binding of Isaac.
* Merge pull request #622 from Subv/unused_texbunnei2018-07-051-1/+4
|\ | | | | GPU: Ignore unused textures and corrected the TEX shader instruction decoding.
| * GPU: Ignore textures that the GLSL compiler deemed unused when binding textures to the shaders.Subv2018-07-041-1/+4
| |
* | GPU: Flip the triangle front face winding if the GPU is configured to not flip the triangles.Subv2018-07-041-0/+10
|/ | | | | | OpenGL's default behavior is already correct when the GPU is configured to flip the triangles. This fixes 1-2 Switch's splash screen.
* GPU: Only configure the used framebuffers during clear.Subv2018-07-041-7/+13
| | | | Don't try to configure the color buffer if it is not being cleared, it may not be completely valid at this point.
* Merge pull request #609 from Subv/clear_buffersbunnei2018-07-041-14/+57
|\ | | | | GPU: Implemented the CLEAR_BUFFERS register.
| * GPU: Factor out the framebuffer configuration code for both Clear and Draw commands.Subv2018-07-031-72/+34
| |
| * GPU: Support clears that don't clear the color buffer.Subv2018-07-031-4/+14
| |
| * GPU: Bind and clear the render target when the CLEAR_BUFFERS register is written to.Subv2018-07-031-0/+71
| |
* | Merge pull request #607 from jroweboy/loggingbunnei2018-07-031-8/+8
|\ \ | | | | | | Logging - Customizable backends
| * | Update clang formatJames Rowe2018-07-031-5/+5
| | |
| * | Rename logging macro back to LOG_*James Rowe2018-07-031-4/+4
| |/
* | Merge pull request #612 from bunnei/fix-cullbunnei2018-07-031-2/+5
|\ \ | | | | | | gl_rasterizer: Only set cull mode and front face if enabled.
| * | gl_rasterizer: Only set cull mode and front face if enabled.bunnei2018-07-031-2/+5
| |/
* / GPU: Don't try to parse the depth test function if the depth test is disabled.Subv2018-07-031-0/+4
|/
* Merge pull request #608 from Subv/depthbunnei2018-07-031-6/+21
|\ | | | | GPU: Implemented the depth buffer and depth test + culling
| * GPU: Set up the culling configuration on each draw.Subv2018-07-031-6/+8
| |
| * GPU: Set up the depth test state on every draw.Subv2018-07-021-0/+11
| |
| * GPU: Implemented the Z24S8 depth format and load the depth framebuffer.Subv2018-07-021-1/+3
| |
* | Merge pull request #606 from Subv/base_vertexSebastian Valle2018-07-021-7/+9
|\ \ | | | | | | GPU: Fixed the index offset and implement BaseVertex when doing indexed rendering.
| * | GPU: Implement offsetted rendering when using non-indexed drawing.Subv2018-07-021-1/+1
| | |
| * | GPU: Fixed the index offset rendering, and implemented the base vertex functionality.Subv2018-07-021-6/+8
| |/ | | | | | | This fixes Stardew Valley.
* / GPU: Ignore disabled textures and textures with an invalid address.Subv2018-07-021-1/+5
|/
* gl_rasterizer_cache: Implement caching for texture and framebuffer surfaces.bunnei2018-06-271-6/+19
| | | | | | gl_rasterizer_cache: Improved cache management based on Citra's implementation. gl_surface_cache: Add some docstrings.
* gl_rasterizer: Implement AccelerateDisplay to forward textures to framebuffers.bunnei2018-06-271-3/+22
|
* gl_rasterizer_cache: Remove Citra's rasterizer cache, always load/flush surfaces.bunnei2018-06-271-91/+26
|
* gl_rasterizer: Workaround for when exceeding max UBO size.bunnei2018-06-271-0/+6
|
* gl_state: Fix state management for texture swizzle.bunnei2018-06-261-1/+1
|
* Merge pull request #554 from Subv/constbuffer_ubobunnei2018-06-261-11/+17
|\ | | | | Rasterizer: Use UBOs instead of SSBOs for uploading const buffers.
| * Rasterizer: Use UBOs instead of SSBOs for uploading const buffers.Subv2018-06-101-11/+17
| | | | | | | | This should help a bit with GPU performance once we're GPU-bound.
* | Build: Fixed some MSVC warnings in various parts of the code.Subv2018-06-201-2/+2
| |
* | gl_rasterizer: Get loose on independent blending.Jules Blok2018-06-181-1/+1
|/
* GPU: Synchronize the blend state on every draw call.Subv2018-06-091-8/+18
| | | | | | Only independent blending on render target 0 is implemented for now. This fixes the elongated squids in Splatoon 2's boot screen.
* GPU: Added registers for normal and independent blending.Subv2018-06-091-26/+1
|
* Rasterizer: Flush the written region when writing shader uniform data before copying it to the uniform buffers.Subv2018-06-081-0/+3
| | | | This fixes the flip_viewport uniform having invalid values when drawing.
* Merge pull request #543 from Subv/uniformsbunnei2018-06-071-3/+4
|\ | | | | GLRenderer: Write the shader stage configuration UBO data *before* copying it to the GPU.
| * GLRenderer: Write the shader stage configuration UBO data *before* copying it to the GPU.Subv2018-06-071-3/+4
| | | | | | | | This should fix the bug with the vs_config UBO being uninitialized during shader execution.
* | GPU: Support changing the texture swizzles for Maxwell textures.Subv2018-06-071-0/+8
|/
* Merge pull request #534 from Subv/multitexturingbunnei2018-06-071-37/+46
|\ | | | | GPU: Implement sampling multiple textures in the generated glsl shaders.
| * GPU: Implement sampling multiple textures in the generated glsl shaders.Subv2018-06-061-37/+46
| | | | | | | | | | | | All tested games that use a single texture show no regression. Only Texture2D textures are supported right now, each shader gets its own "tex_fs/vs/gs" sampler array to maintain independent textures between shader stages, the textures themselves are reused if possible.
* | gl_shader_gen: Add uniform handling for indirect const buffer access.bunnei2018-06-071-1/+10
|/
* GPU: Calculate the correct viewport dimensions based on the scale and translate registers.Subv2018-06-041-2/+2
| | | | This is how nouveau calculates the viewport width and height. For some reason some games set 0xFFFF in the VIEWPORT_HORIZ and VIEWPORT_VERT registers, maybe those are a misnomer and actually refer to something else?
* GLRenderer: Remove unused hw_vao_enabled_attributes variable.Subv2018-05-191-3/+0
|
* GLRenderer: Remove unused vertex buffer and increase the size of the stream buffer to 128 MB.Subv2018-05-191-4/+1
| | | | The stream buffer is where all the vertex data is copied, some games require this to be much bigger than the 4 MB we used to have.
* general: Make formatting of logged hex values more straightforwardLioncash2018-05-021-1/+1
| | | | | | This makes the formatting expectations more obvious (e.g. any zero padding specified is padding that's entirely dedicated to the value being printed, not any pretty-printing that also gets tacked on).
* video-core: Move logging macros over to new fmt-capable onesLioncash2018-04-251-3/+3
|
* gl_rasterizer_cache: Add a function for finding framebuffer GPU address.bunnei2018-04-251-0/+1
|
* gl_rasterizer_cache: Update to be based on GPU addresses, not CPU addresses.bunnei2018-04-251-7/+6
|
* memory_manager: Make GpuToCpuAddress return an optional.bunnei2018-04-241-7/+7
|
* memory_manager: Use GPUVAdddr, not PAddr, for GPU addresses.bunnei2018-04-241-3/+3
|
* GPU: Support multiple enabled vertex arrays.Subv2018-04-231-40/+81
| | | | | | The vertex arrays will be copied to the stream buffer one after the other, and the attributes will be set using the ARB_vertex_attrib_binding extension. yuzu now thus requires OpenGL 4.3 or the ARB_vertex_attrib_binding extension.
* opengl: Remove unnecessary header inclusionsLioncash2018-04-211-1/+0
|
* math_util: Remove the Clamp() functionLioncash2018-04-201-12/+13
| | | | | C++17 adds clamp() to the standard library, so we can remove ours in favor of it.
* GLCache: Added boilerplate code to make supporting configurable texture component types.Subv2018-04-181-0/+2
| | | | For now only the UNORM type is supported.
* GLCache: Take into account the texture's block height when caching and unswizzling.Subv2018-04-181-1/+2
|
* renderer_opengl: Implement BlendEquation and BlendFunc.bunnei2018-04-181-1/+26
|
* gl_rendering: Use NGLOG* for changed code.bunnei2018-04-171-3/+3
|
* gl_rasterizer: Implement indexed vertex mode.bunnei2018-04-171-19/+31
|
* GPU: Use the same buffer names in the generated GLSL and the buffer uploading code.Subv2018-04-151-10/+7
|
* GPU: Don't use explicit binding points when uploading the constbuffers to opengl.Subv2018-04-151-5/+25
| | | | The bindpoints will now be dynamically calculated based on the number of buffers used by the previous shader stage.
* GPU: Don't use GetPointer when uploading the constbuffer data to the GPU.Subv2018-04-151-3/+4
|
* GPU: Use the buffer hints from the shader decompiler to upload only the necessary const buffers for each shader stage.Subv2018-04-151-29/+38
|
* GPU: Upload the entirety of each constbuffer for each shader stage as SSBOs.Subv2018-04-151-1/+38
| | | | We're going to need the shader generator to give us a mapping of the actual used const buffers to properly bind them to the shader.
* GPU: Allow configuring ssbos in the opengl state manager.Subv2018-04-151-0/+8
|
* GPU: Added a function to determine whether a shader stage is enabled or not.Subv2018-04-151-3/+3
|
* gl_rasterizer: Generate shaders and upload uniforms.bunnei2018-04-141-28/+74
|
* gl_rasterizer: Use shader program manager, remove test shader.bunnei2018-04-141-143/+27
|
* renderer_opengl: Use OGLProgram instead of OGLShader.bunnei2018-04-141-1/+1
|
* GL: Set up the textures used for each draw call.Subv2018-04-071-2/+36
| | | | | Each Maxwell shader stage can have an arbitrary number of textures, but we're limited to a certain number in OpenGL. We try to only use the minimum amount of host textures by not keeping a 1:1 relation between guest texture ids and host texture ids, ie, guest texture id 8 can be host texture id 0 if it's the only texture used in the guest shader program. This mapping will have to be passed to the shader decompiler so it can rewrite the texture accesses.
* GL: Bind the textures to the shaders used for drawing.Subv2018-04-071-2/+11
|
* GL: Create the sampler objects when starting up the GL rasterizer.Subv2018-04-071-0/+6
|
* GL: Ported the SamplerInfo struct from citra.Subv2018-04-071-0/+39
|
* gl_rasterizer: Move code to bind framebuffer surfaces before draw to its own function.bunnei2018-03-271-22/+27
|
* gl_rasterizer: Add a SyncViewport method.bunnei2018-03-271-18/+17
|
* gl_rasterizer: Move PrimitiveTopology check to MaxwellToGL.bunnei2018-03-271-11/+2
|
* gl_rasterizer: Use ReadBlock instead of GetPointer for SetupVertexArray.bunnei2018-03-271-1/+1
|
* gl_rasterizer: Normalize vertex array data as appropriate.bunnei2018-03-271-1/+1
|
* rasterizer: Rename DrawTriangles to DrawArrays.bunnei2018-03-271-2/+2
|
* gl_rasterizer: Use passthrough shader for SetupVertexShader.bunnei2018-03-271-1/+2
|
* renderer_opengl: Logging, etc. cleanup.bunnei2018-03-271-17/+18
|
* gl_rasterizer: Implement SetupVertexArray.bunnei2018-03-271-20/+38
|
* gl_rasterizer: Use 32 texture units instead of 3.bunnei2018-03-271-0/+1
|
* gl_rasterizer: Implement DrawTriangles.bunnei2018-03-271-1/+194
|
* gl_rasterizer: Implement AnalyzeVertexArray.bunnei2018-03-271-1/+21
|
* gl_rasterizer: Fake render in green, because it's cooler.bunnei2018-03-241-1/+1
|
* gl_rasterizer: Log warning instead of sync'ing unimplemented funcs.bunnei2018-03-241-7/+1
|
* rasterizer: Flush and invalidate regions should be 64-bit.bunnei2018-03-231-3/+3
|
* gl_rasterizer: Implement AccelerateDisplay method from Citra.bunnei2018-03-231-1/+33
|
* video_core: Remove usage of PAddr and replace with VAddr.bunnei2018-03-231-4/+4
|
* video_core: Move FramebufferInfo to FramebufferConfig in GPU.bunnei2018-03-231-2/+3
|
* gl_rasterizer: Replace a bunch of UNIMPLEMENTED with ASSERT.bunnei2018-03-231-15/+15
|
* gl_rasterizer: Add a simple passthrough shader in lieu of shader generation.bunnei2018-03-231-3/+56
|
* renderer_gl: Port boilerplate rasterizer code over from Citra.bunnei2018-03-201-0/+269
|
* Remove references to PICA and rasterizers in video_coreJames Rowe2018-01-131-1686/+0
|
* core/video_core: Fix a bunch of u64 -> u32 warnings.bunnei2018-01-011-2/+2
|
* Fixed framebuffer warningHuw Pascoe2017-09-171-7/+18
|
* gl_rasterizer: implement custom clip planewwylele2017-08-251-0/+28
|
* gl_rasterizer: add clipping plane z<=0 defined in PICAwwylele2017-08-211-0/+3
|
* gl_rasterizer: use texture buffer for proctex LUTwwylele2017-07-011-30/+35
|
* gl_rasterizer: use texture buffer for fog LUTwwylele2017-06-221-13/+12
|
* gl_rasterizer: create the texture before applying the statewwylele2017-06-221-2/+2
| | | | this is a rebasing error from #2792. It doesn't affect much though, because the later more Apply() call fixes/hides it
* gl_rasterizer: fix glGetUniformLocation typewwylele2017-06-211-8/+8
|
* gl_rasterizer: manage texture ids in one placewwylele2017-06-211-23/+24
|
* gl_rasterizer/lighting: fix LUT interpolationwwylele2017-06-211-49/+22
|
* Merge pull request #2767 from yuriks/quaternion-flip-commentYuri Kunde Schlesner2017-06-131-8/+11
|\ | | | | OpenGL: Update comment on AreQuaternionsOpposite with new information
| * OpenGL: Update comment on AreQuaternionsOpposite with new informationYuri Kunde Schlesner2017-06-101-8/+11
| | | | | | | | | | | | | | While debugging the software renderer implementation, it was noticed that this is actually exactly what the hardware does, upgrading the status of this "hack" to being a proper implementation. And there was much rejoicing.
* | gl_rasterizer: sync spot light statuswwylele2017-05-301-0/+45
|/
* gl_rasterizer: implement procedural texturewwylele2017-05-201-0/+232
|
* pica: shader_dirty if texture2 coord changedwwylele2017-05-051-0/+4
|
* OpenGL: Pass Pica regs via parameterYuri Kunde Schlesner2017-04-171-1/+1
|
* OpenGL: Move PicaShaderConfig to gl_shader_gen.hYuri Kunde Schlesner2017-04-171-1/+1
| | | | Also move the implementation of CurrentConfig to the cpp file.
* OpenGL: Move Attributes enum to a more appropriate fileYuri Kunde Schlesner2017-04-171-1/+0
|
* OpenGL: Check if uniform block exists before updating it (#2581)Jannik Vogel2017-02-181-29/+30
|
* OpenGL: Remove unused duplicate of IsPassThroughTevStageYuri Kunde Schlesner2017-02-091-12/+0
| | | | | This copy was left behind when the shader generation code was moved to a separate file.
* VideoCore: Split regs.h inclusionsYuri Kunde Schlesner2017-02-091-1/+3
|
* VideoCore: Move Regs to its own fileYuri Kunde Schlesner2017-02-041-1/+1
|
* VideoCore: Split framebuffer regs from Regs structYuri Kunde Schlesner2017-02-041-49/+60
|
* VideoCore: Split texturing regs from Regs structYuri Kunde Schlesner2017-02-041-62/+67
|
* VideoCore: Split rasterizer regs from Regs structYuri Kunde Schlesner2017-02-041-25/+29
|
* Merge pull request #2476 from yuriks/shader-refactor3Yuri Kunde Schlesner2017-02-041-1/+1
|\ | | | | Oh No! More shader changes!
| * VideoCore: Change misleading register namesYuri Kunde Schlesner2017-01-301-1/+1
| | | | | | | | | | | | A few registers had names such as "count" or "number" when they actually contained the maximum (that is, count - 1). This can easily lead to hard to notice off by one errors.
* | video_core: gl_rasterizer.cpp removed unused type aliasKloen2017-01-301-2/+0
|/
* video_core: gl_rasterizer float to int warningKloen2017-01-231-1/+2
|
* Merge pull request #2319 from yuriks/profile-scopesbunnei2016-12-211-0/+12
|\ | | | | VideoCore: Make profiling scope more representative
| * VideoCore: Make profiling scope more representativeYuri Kunde Schlesner2016-12-151-0/+12
| |
* | Use GL_TRUE when setting color_maskAlbin Bernhardsson2016-12-191-4/+4
|/
* OpenGL: Drop framebuffer completeness check.Markus Wick2016-12-071-16/+0
| | | | | | | This OpenGL call synchronize the worker thread of the nvidia blob. It can be verified on linux with the __GL_THREADED_OPTIMIZATIONS=1 environment variable. Those errors should not happen on tested drivers. It was used as a workaround for https://bugs.freedesktop.org/show_bug.cgi?id=94148
* Report shader uniform block size in case of mismatchJannik Vogel2016-12-051-1/+3
|
* OpenGL: Non-zero stride only makes sense for linear buffersYuri Kunde Schlesner2016-12-041-1/+1
|
* OpenGL: Fix DisplayTransfer accel when input width != output widthYuri Kunde Schlesner2016-12-041-1/+10
| | | | Fixes #2246, #2261
* ClangFormat: Fixed the clang-format errorsSubv2016-11-301-4/+8
|
* Build: Fixed a few warnings.Subv2016-11-291-4/+4
|
* RasterizerGL: Use GL_TRUE and 0xFF in the stencil and depth masks instead of simply true and -1Subv2016-11-271-2/+2
|
* Rasterizer/Memfill: Set the correct stencil write mask when clearing the stencil buffer.Subv2016-11-271-1/+1
|
* Merge pull request #2103 from wwylele/gpu-reg-cleanupbunnei2016-10-041-5/+5
|\ | | | | GPU: DisplayTransfer & MemoryFill cleanup and param check
| * rasterizer: separate TextureCopy from DisplayTransferwwylele2016-09-291-5/+5
| |
* | OpenGL: Take cached viewport sub-rect into account for scissorYuri Kunde Schlesner2016-09-301-21/+21
|/ | | | Fixes #1938
* Use negative priorities to avoid special-casing the self-includeYuri Kunde Schlesner2016-09-211-1/+1
|
* Remove empty newlines in #include blocks.Emmanuel Gil Peyrot2016-09-211-5/+1
| | | | | | | This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation.
* Manually tweak source formatting and then re-run clang-formatYuri Kunde Schlesner2016-09-191-5/+5
|
* Sources: Run clang-format on everything.Emmanuel Gil Peyrot2016-09-181-86/+148
|
* OpenGL: Add scaled resolution support to scissorYuri Kunde Schlesner2016-06-281-0/+8
|
* PICA: Scissor fixes and cleanupsYuri Kunde Schlesner2016-06-281-10/+10
|
* PICA: Implement scissor testSubv2016-06-281-0/+26
|
* OpenGL: Implement fogJannik Vogel2016-06-071-0/+68
|
* OpenGL: Set shader_dirty on lighting changesJannik Vogel2016-05-231-0/+23
|
* OpenGL: Use uniforms for dist_atten_bias and dist_atten_scaleJannik Vogel2016-05-231-0/+72
|
* Merge pull request #1786 from JayFoxRox/blend-equationbunnei2016-05-171-0/+2
|\ | | | | OpenGL: Support blend equation
| * OpenGL: Support blend equationJannik Vogel2016-05-121-0/+2
| |
* | OpenGL: Only update depth uniforms if the depth changedJannik Vogel2016-05-141-7/+17
|/
* OpenGL: Implement texture type 3Jannik Vogel2016-05-111-0/+8
|
* OpenGL: Implement W-Buffers and fix depth-mappingJannik Vogel2016-05-101-3/+8
|
* Pica: Implement W-Buffer in SW rasterizerJannik Vogel2016-05-101-2/+2
|
* fixup simple type conversions where possibleAlexander Laties2016-05-071-1/+1
|
* Merge pull request #1741 from linkmauve/iwyu-video_corebunnei2016-05-011-6/+7
|\ | | | | Fix video_core includes (and dependencies) using include-what-you-use
| * VideoCore: Run include-what-you-use and fix most includes.Emmanuel Gil Peyrot2016-04-301-6/+7
| |
* | OpenGL: border_color was never set. Fixed. (#1740)Jannik Vogel2016-04-301-0/+1
|/
* Common: Remove section measurement from profiler (#1731)Yuri Kunde Schlesner2016-04-291-1/+0
| | | | This has been entirely superseded by MicroProfile. The rest of the code can go when a simpler frametime/FPS meter is added to the GUI.
* HWRasterizer: sync specular uniform for new shaderstfarley2016-04-221-0/+2
|
* HWRasterizer: Texture forwardingtfarley2016-04-211-511/+328
|
* OpenGL: Respect buffer-write allow registersJannik Vogel2016-04-081-6/+28
|
* OpenGL: Split buffer-write mask sync into seperate functionsJannik Vogel2016-04-081-8/+30
|
* OpenGL: Keep stencil-test and framebuffer.depth_format in syncJannik Vogel2016-04-081-0/+1
|
* Merge pull request #1639 from linkmauve/fix-double-framebuffer-checkbunnei2016-04-081-4/+6
|\ | | | | OpenGL: Fix a double framebuffer completeness checks.
| * OpenGL: Fix a double framebuffer completeness checks.Emmanuel Gil Peyrot2016-04-031-4/+6
| |
* | Merge pull request #1643 from MerryMage/make_uniqueMathew Maidment2016-04-061-2/+1
|\ \ | |/ |/| Common: Remove Common::make_unique, use std::make_unique
| * Common: Remove Common::make_unique, use std::make_uniqueMerryMage2016-04-051-2/+1
| |
* | OpenGL: Check for framebuffer completenessJannik Vogel2016-04-031-0/+3
| |
* | OpenGL: Don't attempt to draw empty triangle batchesYuri Kunde Schlesner2016-03-241-0/+3
|/ | | | | Our code did not handle this well, causing random crashes in some situations.
* Pica: Write depth value even when depth test is disabledYuri Kunde Schlesner2016-03-061-2/+4
| | | | This has been confirmed on hardware. Fixes Etrian Odyssey IV.
* Add immediate mode vertex submissionDwayne Slater2016-03-031-0/+1
|
* renderer_opengl: Use GLvec3/GLvec4 aliases for commonly used types.bunnei2016-02-051-2/+2
|
* gl_rasterizer: Fix issue with interpolation of opposite quaternions.bunnei2016-02-051-3/+25
|
* pica_types: Replace float24/20/16 with a template class.bunnei2016-02-051-7/+7
|
* renderer_opengl: Use textures for fragment shader LUTs instead of UBOs.bunnei2016-02-051-12/+39
| | | | | - Gets us LUT interpolation for free. - Some older Intel GPU drivers did not support the big UBOs needed to store the LUTs.
* renderer_opengl: Initial implementation of basic specular lighting.bunnei2016-02-051-0/+68
|
* renderer_opengl: Implement HW fragment lighting LUTs within our default UBO.bunnei2016-02-051-13/+52
|
* renderer_opengl: Implement diffuse component of HW fragment lighting.bunnei2016-02-051-0/+141
|
* hwrasterizer: Use proper cached fb addr/sizetfarley2016-02-031-40/+32
|
* hwrasterizer: Use depth offsettfarley2016-01-211-0/+16
|
* Merge pull request #1267 from yuriks/flipped-framebufferYuri Kunde Schlesner2015-12-101-11/+10
|\ | | | | OpenGL: Flip framebuffers during transfer rather than when rendering
| * OpenGL: Flip framebuffers during transfer rather than when renderingYuri Kunde Schlesner2015-12-051-11/+10
| |
* | VideoCore: Unify interface to OpenGL and SW rasterizersYuri Kunde Schlesner2015-12-081-9/+0
| | | | | | | | | | | | This removes explicit checks sprinkled all over the codebase to instead just have the SW rasterizer expose an implementation with no-ops for most operations.
* | VideoCore: Rename HWRasterizer methods to be less confusingYuri Kunde Schlesner2015-12-071-3/+3
| |
* | OpenGL: Rename cache functions to better match what they actually doYuri Kunde Schlesner2015-12-071-4/+4
|/
* renderer_opengl: Fix uniform issues introduced with kemenaran/avoid-explicit-uniform-location.bunnei2015-11-261-4/+6
|
* Use regular uniform locationPierre de La Morinerie2015-11-251-3/+4
| | | | | | The support for GL_ARB_explicit_uniform_location is not that good (53% according to http://feedback.wildfiregames.com/report/opengl/feature/GL_ARB_explicit_uniform_location). This fix the shader compilation on Intel HD 4000 (#1222).
* FragShader: Use an UBO instead of several individual uniformsSubv2015-11-191-4/+29
|
* gl_rasterizer: Define enum types for each vertex texcoord attribute.bunnei2015-10-221-6/+6
|
* gl_rasterizer: Use MMH3 hash for shader cache hey.bunnei2015-10-221-4/+3
| | | | - Includes a check to confirm no hash collisions.
* gl_shader_gen: Require explicit uniform locations.bunnei2015-10-221-19/+8
| | | | - Fixes uniform issue on AMD.
* renderer_opengl: Refactor shader generation/caching to be more organized + various cleanups.bunnei2015-10-221-74/+57
|
* gl_rasterizer: Move logic for creating ShaderCacheKey to a static function.bunnei2015-10-221-17/+2
|
* gl_rasterizer: Fix typo in uploading TEV const color uniforms.bunnei2015-10-221-5/+5
|
* gl_shader_util: Fix precision bug with alpha testing.bunnei2015-10-221-2/+2
| | | | - Alpha testing is not done with float32 precision, this makes the HW renderer match the SW renderer.
* Initial implementation of fragment shader generation with caching.Subv2015-10-221-227/+124
|
* Silence -Wsign-compare warnings.Rohit Nirmal2015-10-071-3/+3
|
* video_core: Reorganize headersLioncash2015-09-111-1/+1
|
* gl_rasterizer: Replace push_back calls with emplace_back in AddTriangleLioncash2015-09-101-3/+3
|
* OpenGL: Use Sampler Objects to decouple sampler config from texturesYuri Kunde Schlesner2015-09-031-0/+46
| | | | Fixes #978
* OpenGL: Remove ugly and endian-unsafe color pointer castsYuri Kunde Schlesner2015-09-031-3/+3
|
* Replace the previous OpenGL loader with a glad-generated 3.3 oneYuri Kunde Schlesner2015-08-301-2/+2
| | | | | | The main advantage of switching to glad from glLoadGen is that, apart from being actively maintained, it supports a customizable entrypoint loader function, which makes it possible to also support OpenGL ES.
* Merge pull request #1049 from Subv/stencilbunnei2015-08-301-4/+20
|\ | | | | Rasterizer: Corrected the stencil implementation.
| * HWRenderer: Added a workaround for the Intel Windows driver bug that causes glTexSubImage2D to not change the stencil buffer.Subv2015-08-241-2/+9
| | | | | | | | Reported here https://communities.intel.com/message/324464
| * GLRasterizer: Implemented stencil testing in the hw renderer.Subv2015-08-201-2/+11
| |
* | gl_rasterizer_cache: Detect and ignore unnecessary texture flushes.bunnei2015-08-281-2/+2
| |
* | Integrate the MicroProfile profiling libraryYuri Kunde Schlesner2015-08-251-0/+10
|/ | | | | This brings goodies such as a configurable user interface and multi-threaded timeline view.
* GPU: Refactor "VertexShader" namespace to "Shader".bunnei2015-08-151-3/+3
| | | | - Also renames "vertex_shader.*" to "shader_interpreter.*"
* OpenGL: Remove redundant texture.enable_2d field from OpenGLStateYuri Kunde Schlesner2015-08-061-10/+1
| | | | | All uses of this field where it's false can just set the texture id to 0 instead.
* OpenGL: Add a profiler category measuring framebuffer readbackYuri Kunde Schlesner2015-07-281-0/+7
|
* GLRasterizer: Don't try to get a pointer to the depth buffer if it doesn't exist.Subv2015-07-191-3/+7
|
* Core: Cleanup hw includes.Emmanuel Gil Peyrot2015-06-281-0/+1
|
* Common: Cleanup key_map includes.Emmanuel Gil Peyrot2015-06-281-3/+5
|
* Renderer formatting editstfarley2015-06-091-12/+12
|
* Render-to-texture flush, interval math fixtfarley2015-06-091-1/+13
|
* Liberal texture unbind (clout menu)tfarley2015-06-091-4/+34
|
* Depth format fix (crush3d intro/black screens)tfarley2015-06-091-46/+46
|
* Implemented glColorMasktfarley2015-06-091-0/+4
|
* Merge pull request #811 from archshift/commonifyarchshift2015-05-311-1/+2
|\ | | | | Commonify video_core utility headers
| * Move video_core/color.h to common/color.harchshift2015-05-301-1/+2
| |
* | Pica: Implement LogicOp function.bunnei2015-05-311-0/+10
|/
* Remove every trailing whitespace from the project (but externals).Emmanuel Gil Peyrot2015-05-291-1/+1
|
* Pica: Create 'State' structure and move state memory there.bunnei2015-05-231-108/+126
|
* OpenGL renderertfarley2015-05-231-0/+879