summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_rasterizer.cpp (unfollow)
Commit message (Collapse)AuthorFilesLines
2022-10-10Fix stencil func registers, make clip control equivalent to how it was before, but surely wrong.Kelebek11-6/+11
2022-10-07Update 3D regsKelebek11-69/+71
2022-10-06DMA & InlineToMemory Engines Rework.bunnei1-1/+1
2022-10-06OpenGL: Fix TickWorkFernando Sahmkow1-0/+4
2022-10-06VideoCore: Refactor fencing system.Fernando Sahmkow1-14/+8
2022-10-06NVDRV: Further refactors and eliminate old code.Fernando Sahmkow1-4/+0
2022-10-06Texture cache: Fix the remaining issues with memory mnagement and unmapping.Fernando Sahmkow1-2/+2
2022-10-06VideoCore: Fix channels with disk pipeline/shader cache.Fernando Sahmkow1-0/+1
2022-10-06OpenGl: Implement Channels.Fernando Sahmkow1-69/+105
2022-10-06VideoCore: implement channels on gpu caches.Fernando Sahmkow1-7/+7
2022-07-27chore: make yuzu REUSE compliantAndrea Pappacoda1-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
2022-05-07OpenGL: implement face flips according to NDCLiam1-4/+3
2022-04-04OpenGL: fix croppingLiam1-0/+2
2022-04-04OpenGL: propagate face flip conditionLiam1-4/+10
2022-04-04OpenGL: flip front faces if Z scale is invertedLiam1-2/+3
2022-03-29gl_rasterizer: Avoid scenario locking already owned mutexameerj1-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.
2022-03-26Revert "Memory GPU <-> CPU: reduce infighting in the texture cache by adding CPU Cached memory."bunnei1-5/+1
2022-03-25Texture Cache: Add Cached CPU system.Fernando Sahmkow1-1/+5
2022-03-19video_core: Reduce unused includesameerj1-2/+0
2022-02-01Rasterizer: Refactor inlineToMemory.Fernando Sahmkow1-2/+2
2022-01-29Rasterizer: Implement Inline2Memory Acceleration.Fernando Sahmkow1-0/+22
2021-11-16Texture Cahe/Shader decompiler: Resize PointSize on rescaling, refactor and make reaper more agressive on 4Gb GPUs.FernandoS271-2/+3
2021-11-16OpenGL: Fix viewport/Scissor scaling on downscaling.FernandoS271-6/+28
2021-11-16gl_rasterizer: Fix ScissorTest and Clear when scalingameerj1-10/+6
2021-11-16video_core: Misc resolution scaling related refactoringameerj1-2/+2
2021-11-16gl_rasterizer: Properly scale viewports and scissorsReinUsesLisp1-23/+24
2021-11-16gl_rasterizer: Fix rescale dirty state checkingameerj1-4/+9
2021-11-16renderer_gl: Resolution scaling fixesameerj1-3/+20
2021-11-01gl_rasterizer: Remove unused includesMorph1-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.
2021-08-05texture_cache: Address ameerj's reviewyzct123451-1/+1
2021-07-23vk_rasterizer: Workaround bug in VK_EXT_vertex_input_dynamic_stateReinUsesLisp1-1/+1
Workaround potential bug on Nvidia's driver where only updating high attributes leaves low attributes out dated.
2021-07-23shader: Unify shader stage typesReinUsesLisp1-2/+0
2021-07-23gl_shader_cache: Implement async shadersameerj1-1/+1
2021-07-23gl_rasterizer: Add texture fetch barrier for fragmentsameerj1-1/+1
Fixes flicker seen in XC2
2021-07-23shader: Handle host exceptionsReinUsesLisp1-1/+3
2021-07-23glasm: Use storage buffers instead of global memory when possibleReinUsesLisp1-6/+7
2021-07-23gl_shader_cache: Add disk shader cacheReinUsesLisp1-1/+3
2021-07-23gl_shader_cache: Rename Program abstractions into PipelineReinUsesLisp1-5/+5
2021-07-23glasm: Set transform feedback stateReinUsesLisp1-92/+6
2021-07-23gl_rasterizer: Flush L2 caches before glFlush on GLASMReinUsesLisp1-0/+8
2021-07-23shader: Initial OpenGL implementationReinUsesLisp1-9/+14
2021-07-23shader: Accelerate pipeline transitions and use dirty flags for shadersReinUsesLisp1-1/+1
2021-07-23shader: Remove old shader managementReinUsesLisp1-310/+4
2021-07-13DMAEngine: Accelerate BufferClearFernando Sahmkow1-0/+5
2021-07-11accelerateDMA: Accelerate Buffer Copies.Fernando Sahmkow1-1/+12
2021-07-09Fence Manager: remove reference fencing.Fernando Sahmkow1-5/+2
2021-07-09Fence Manager: Force ordering on WFI.Fernando Sahmkow1-0/+4
2021-07-09Fence Manager: Add fences on Reference Count.Fernando Sahmkow1-0/+7
2021-07-04Texture Cache: Initial Implementation of Sparse Textures.Fernando Sahmkow1-0/+7
2021-06-22bootmanager: Use std::stop_source for stopping emulationReinUsesLisp1-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.
2021-06-01buffer_cache: Simplify uniform disabling logicameerj1-0/+4
2021-05-06hle: kernel: Rename Process to KProcess.bunnei1-1/+1
2021-04-15common: Move settings to common from core.bunnei1-1/+1
- Removes a dependency on core and input_common from common.
2021-02-24Implement glDepthRangeIndexeddNVKelebek11-1/+5
2021-02-13video_core: Fix clang build issuesReinUsesLisp1-7/+0
2021-02-13renderer_opengl: Remove interopReinUsesLisp1-3/+1
Remove unused interop code from the OpenGL backend.
2021-02-13video_core: Reimplement the buffer cacheReinUsesLisp1-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.
2021-02-13maxwell_to_gl: Remove unused codeameerj1-0/+1
Removes unused declarations in maxwell_to_gl.h
2021-02-09gl_rasterizer: Remove unused variablesLioncash1-3/+0
Resolves warnings on clang 12
2020-12-30video_core: Rewrite the texture cacheReinUsesLisp1-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.
2020-12-07video_core: Remove unnecessary enum class casting in logging messagesLioncash1-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.
2020-12-05video_core: Resolve more variable shadowing scenarios pt.3Lioncash1-6/+6
Cleans out the rest of the occurrences of variable shadowing and makes any further occurrences of shadowing compiler errors.
2020-11-21gl_rasterizer: Remove warning of untested alpha testReinUsesLisp1-4/+0
Alpha test has been proven to only affect the first render target.
2020-11-20gl_rasterizer: Make floating-point literal a floatLioncash1-1/+1
Gets rid of an unnecessary expansion from float to double.
2020-10-20gl_arb_decompiler: Implement robust buffer operationsReinUsesLisp1-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.
2020-09-06video_core: Remove all Core::System references in rendererReinUsesLisp1-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.
2020-08-16move thread 1/4 count computation into allocate workers methodameerj1-9/+1
2020-07-28renderer_opengl: Use 1/4 of all threads for async shader compilationMorph1-9/+4
2020-07-18gl_arb_decompiler: Use NV_shader_buffer_{load,store} on assembly shadersReinUsesLisp1-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.
2020-07-17Drop max workers from 8->2 for testingDavid Marcec1-1/+1
2020-07-17async shadersDavid Marcec1-3/+21
2020-06-29maxwell_to_gl: Rename VertexType() to VertexFormat()Morph1-2/+3
2020-06-24gl_rasterizer: Use NV_vertex_buffer_unified_memory for vertex buffer robustnessReinUsesLisp1-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.
2020-06-24gl_buffer_cache: Mark buffers as residentReinUsesLisp1-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.
2020-06-09gl_rasterizer: Mark vertex buffers as dirty after buffer cache invalidationReinUsesLisp1-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.
2020-06-07gl_shader_cache: Use generic shader cacheReinUsesLisp1-9/+10
Trivially port the generic shader cache to OpenGL.
2020-06-05shader/texture: Join separate image and sampler pairs offlineReinUsesLisp1-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
2020-06-04gl_rasterizer: Use NV_transform_feedback for XFB on assembly shadersReinUsesLisp1-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.
2020-06-01glsl: Squash constant buffers into a single SSBO when we hit the limitReinUsesLisp1-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.
2020-05-31gl_device: Enable compute shaders for Intel proprietary driversMorph1-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.
2020-05-26gl_texture_cache: Implement small texture view cache for swizzlesReinUsesLisp1-14/+7
This fixes cases where the texture swizzle was applied twice on the same draw to a texture bound to two different slots.
2020-05-26gl_rasterizer: Port front face flip check from VulkanReinUsesLisp1-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.
2020-05-19renderer_opengl: Add assembly program code pathsReinUsesLisp1-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.
2020-05-10VideoCore: Use SyncGuestMemory mechanism for Shader/Pipeline Cache invalidation.Fernando Sahmkow1-2/+2
2020-05-04gl_rasterizer: Implement viewport swizzles with NV_viewport_swizzleReinUsesLisp1-0/+8
2020-04-28{maxwell_3d,buffer_cache}: Implement memory barriers using 3D registersReinUsesLisp1-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).
2020-04-28maxwell_3d: Fix depth clamping registerReinUsesLisp1-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.
2020-04-27texture_cache: Reintroduce preserve_contents accuratelyReinUsesLisp1-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.
2020-04-23shader_ir: Turn classes into data structuresReinUsesLisp1-13/+11
2020-04-22Async GPU: Correct flushing behavior to be similar to old async GPU behavior.Fernando Sahmkow1-0/+3
2020-04-22Address Feedback.Fernando Sahmkow1-4/+1
2020-04-22Fix GCC error.Fernando Sahmkow1-5/+4
2020-04-22QueryCache: Implement Async Flushes.Fernando Sahmkow1-3/+3
2020-04-22OpenGL: Guarantee writes to Buffers.Fernando Sahmkow1-1/+0
2020-04-22GPU: Implement Flush Requests for Async mode.Fernando Sahmkow1-0/+6
2020-04-22FenceManager: Manage syncpoints and rename fences to semaphores.Fernando Sahmkow1-2/+11
2020-04-22FenceManager: Implement async buffer cache flushes on High settingsFernando Sahmkow1-1/+2
2020-04-22GPU: Fix rebase errors.Fernando Sahmkow1-0/+1
2020-04-22Rasterizer: Disable fence managing in synchronous gpu.Fernando Sahmkow1-0/+10
2020-04-22ThreadManager: Sync async reads on accurate gpu.Fernando Sahmkow1-0/+4
2020-04-22GPU: Implement a Fence Manager.Fernando Sahmkow1-23/+4
2020-04-22OpenGL: Implement Fencing backend.Fernando Sahmkow1-0/+28
2020-04-22BufferCache: Implement OnCPUWrite and SyncGuestHostFernando Sahmkow1-2/+2
2020-04-22GPU: Refactor synchronization on Async GPUFernando Sahmkow1-0/+16
2020-04-22UI: Replasce accurate GPU option for GPU Accuracy LevelFernando Sahmkow1-1/+1
2020-04-22gl_rasterizer: Fix buffers without sizeReinUsesLisp1-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
2020-04-16buffer_cache: Return handles instead of pointer to handlesReinUsesLisp1-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.
2020-04-14gl_rasterizer: Implement constant vertex attributesReinUsesLisp1-2/+2
Credits go to gdkchan from Ryujinx for finding constant attributes are used in retail games.
2020-04-13gl_rasterizer: Implement line widths and smooth linesReinUsesLisp1-0/+14
Implements "legacy" features from OpenGL present on hardware such as smooth lines and line width.
2020-04-11texture_cache: Remove preserve_contentsReinUsesLisp1-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.
2020-04-08Memory: Address Feedback.Fernando Sahmkow1-2/+2
2020-04-06Shader/Pipeline Cache: Use VAddr instead of physical memory for addressing.Fernando Sahmkow1-2/+1
2020-04-06Query Cache: Use VAddr instead of physical memory for adressing.Fernando Sahmkow1-3/+2
2020-04-06Buffer Cache: Use vAddr instead of physical memory.Fernando Sahmkow1-2/+2
2020-04-06Texture Cache: Use vAddr instead of physical memory for caching.Fernando Sahmkow1-4/+3
2020-04-06GPU: Setup Flush/Invalidate to use VAddr instead of CacheAddrFernando Sahmkow1-10/+12
2020-03-31gl_rasterizer: Mark cleared textures as dirtyReinUsesLisp1-2/+5
Fixes a potential edge case where cleared textures read from the CPU were not flushed.
2020-03-26gl_rasterizer: Update stencil test regardless of it being disabledReinUsesLisp1-5/+1
2020-03-26gl_rasterizer: Synchronize stencil testing on clearsReinUsesLisp1-0/+1
2020-03-22gl_rasterizer: Use transformed viewport for depth rangesReinUsesLisp1-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.
2020-03-19gl_rasterizer: Silence misc warningsReinUsesLisp1-7/+2
2020-03-13gl_rasterizer: Implement transform feedback bindingsReinUsesLisp1-7/+63
2020-03-11gl_shader_manager: Fix interaction between graphics and computeReinUsesLisp1-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.
2020-03-10gl_rasterizer: Implement polygon modes and fill rectanglesReinUsesLisp1-0/+40
2020-03-09gl_shader_cache: Rework shader cache and remove post-specializationsReinUsesLisp1-25/+17
Instead of pre-specializing shaders and then post-specializing them, drop the later and only "specialize" the shader while decoding it.
2020-02-28gl_rasterizer: Don't disable blending on clearsReinUsesLisp1-4/+0
Blending doesn't affect clears.
2020-02-28gl_rasterizer: Remove num vertex buffers magic numberReinUsesLisp1-2/+4
2020-02-28gl_rasterizer: Only apply polygon offset clamp if enabledReinUsesLisp1-3/+6
2020-02-28gl_state_tracker: Implement dirty flags for depth clamp enablingReinUsesLisp1-3/+9
2020-02-28gl_rasterizer: Disable scissor 0 when scissor is not used on clearReinUsesLisp1-0/+3
2020-02-28gl_rasterizer: Notify depth mask changes on clearReinUsesLisp1-1/+1
2020-02-28gl_rasterizer: Minor sort changes to clearingReinUsesLisp1-11/+9
2020-02-28gl_state_tracker: Implement dirty flags for clip controlReinUsesLisp1-13/+17
2020-02-28gl_state_tracker: Implement dirty flags for point sizesReinUsesLisp1-4/+17
2020-02-28gl_state_tracker: Implement dirty flags for fragment color clampReinUsesLisp1-2/+8
2020-02-28gl_state_tracker: Implement dirty flags for logic opReinUsesLisp1-2/+10
2020-02-28gl_state_tracker: Implement dirty flags for sRGBReinUsesLisp1-2/+8
2020-02-28gl_state_tracker: Implement dirty flags for rasterize enableReinUsesLisp1-2/+8
2020-02-28gl_state_tracker: Implement dirty flags for multisampleReinUsesLisp1-0/+7
2020-02-28gl_state_tracker: Implement dirty flags for alpha testingReinUsesLisp1-4/+14
2020-02-28gl_state_tracker: Implement dirty flags for polygon offsetsReinUsesLisp1-2/+7
2020-02-28gl_state_tracker: Implement dirty flags for primitive restartReinUsesLisp1-3/+12
2020-02-28gl_state_tracker: Implement dirty flags for stencil testingReinUsesLisp1-3/+9
2020-02-28gl_state_tracker: Implement depth dirty flagsReinUsesLisp1-5/+15
2020-02-28gl_state_tracker: Implement dirty flags for front face and cullingReinUsesLisp1-4/+17
2020-02-28gl_state_tracker: Implement dirty flags for blendingReinUsesLisp1-13/+36
2020-02-28gl_state_tracker: Implement dirty flags for clip distances and shadersReinUsesLisp1-10/+18
2020-02-28gl_state_tracker: Add dirty flags for buffers and divisorsReinUsesLisp1-22/+29
2020-02-28gl_state_tracker: Implement dirty flags for vertex formatsReinUsesLisp1-9/+19
2020-02-28gl_state_tracker: Implement dirty flags for color masksReinUsesLisp1-9/+30
2020-02-28gl_state_tracker: Implement dirty flags for scissorsReinUsesLisp1-4/+20
2020-02-28gl_state_tracker: Implement dirty flags for viewportsReinUsesLisp1-7/+24
2020-02-28renderer_opengl: Reintroduce dirty flags for render targetsReinUsesLisp1-6/+14
2020-02-28maxwell_3d: Flatten cull and front face registersReinUsesLisp1-3/+3
2020-02-28gl_state: Remove completelyReinUsesLisp1-10/+3
2020-02-28gl_state: Remove program trackingReinUsesLisp1-17/+11
2020-02-28gl_state: Remove framebuffer trackingReinUsesLisp1-3/+2
2020-02-28gl_state: Remove image trackingReinUsesLisp1-3/+3
2020-02-28gl_state: Remove texture and sampler trackingReinUsesLisp1-6/+5
2020-02-28gl_state: Remove blend state trackingReinUsesLisp1-25/+24
2020-02-28gl_state: Remove stencil test trackingReinUsesLisp1-48/+17
2020-02-28gl_state: Remove clip control trackingReinUsesLisp1-5/+6
2020-02-28gl_state: Remove clip distances trackingReinUsesLisp1-8/+2
2020-02-28gl_state: Remove rasterizer disable trackingReinUsesLisp1-4/+4
2020-02-28gl_state: Remove viewport and depth range trackingReinUsesLisp1-17/+7
2020-02-28gl_state: Remove scissor test trackingReinUsesLisp1-23/+9
2020-02-28gl_state: Remove color mask trackingReinUsesLisp1-14/+11
2020-02-28gl_state: Remove clamp framebuffer color trackingReinUsesLisp1-4/+6
This commit doesn't reset it for screen draws because clamping doesn't change anything there.
2020-02-28gl_state: Remove multisample trackingReinUsesLisp1-2/+2
2020-02-28gl_state: Remove framebuffer sRGB trackingReinUsesLisp1-1/+9
2020-02-28gl_state: Remove VAO cache and trackingReinUsesLisp1-63/+37
2020-02-28gl_state: Remove depth clamp trackingReinUsesLisp1-2/+10
2020-02-28gl_state: Remove depth trackingReinUsesLisp1-12/+6
2020-02-28gl_state: Remove primitive restart trackingReinUsesLisp1-2/+2
2020-02-28gl_state: Remove logic op trackerReinUsesLisp1-9/+4
2020-02-28gl_state: Remove blend color trackingReinUsesLisp1-4/+1
2020-02-28gl_state: Remove polygon offset trackingReinUsesLisp1-6/+5
2020-02-28gl_state: Remove alpha test trackingReinUsesLisp1-5/+3
2020-02-28gl_state: Remove cull mode trackingReinUsesLisp1-4/+2
2020-02-28gl_state: Remove front face trackingReinUsesLisp1-1/+1
2020-02-28gl_state: Remove point size trackingReinUsesLisp1-6/+4
2020-02-28gl_rasterizer: Add oglEnablei helperReinUsesLisp1-0/+4
2020-02-28gl_rasterizer: Add OpenGL enable/disable helperReinUsesLisp1-0/+4
2020-02-28gl_rasterizer: Remove dirty flagsReinUsesLisp1-68/+2
2020-02-24shader: Simplify indexed sampler usagesReinUsesLisp1-19/+7
2020-02-14maxwell_3d: Unify draw methodsReinUsesLisp1-10/+0
Pass instanced state of a draw invocation as an argument instead of having two separate virtual methods.
2020-02-14gl_query_cache: Optimize query cacheReinUsesLisp1-2/+3
Use a custom cache instead of relying on a ranged cache.
2020-02-14gl_query_cache: Implement host queries using a deferred cacheReinUsesLisp1-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.
2020-02-14gl_rasterizer: Add queued commands counterReinUsesLisp1-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.
2020-02-14maxwell_3d: Slow implementation of passed samples (query 21)ReinUsesLisp1-0/+24
Implements GL_SAMPLES_PASSED by waiting immediately for queries.
2020-02-14gl_rasterizer: Use the least generic OpenGL draw function possibleReinUsesLisp1-8/+28
This may help some implementations.
2020-02-04gl_rasterizer: Implement GL_POINT_SPRITEReinUsesLisp1-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.
2020-01-30gl_rasterizer: Fix instanced draw arraysReinUsesLisp1-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.
2020-01-24GL Backend: Introduce indexed samplers into the GL backendFernando Sahmkow1-7/+27
2020-01-18gl_state: Use bool instead of GLbooleanReinUsesLisp1-1/+1
This fixes template resolution considering GLboolean an integer instead of a bool.
2020-01-15gl_state: Implement PROGRAM_POINT_SIZEReinUsesLisp1-0/+1
For gl_PointSize to have effect we have to activate GL_PROGRAM_POINT_SIZE.
2019-12-26gl_rasterizer: Allow rendering without fragment shaderReinUsesLisp1-0/+3
Rendering without a fragment shader is usually used in depth-only passes.
2019-12-18gl_rasterizer: Implement RASTERIZE_ENABLEReinUsesLisp1-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.
2019-12-11Gl_Rasterizer: Skip Tesselation Control and Eval stages as they are un implemented.Fernando Sahmkow1-0/+8
This commit ensures the OGL backend does not execute tesselation shader stages as they are currently unimplemented.
2019-12-11Maxwell3D: Implement Depth Mode.Fernando Sahmkow1-0/+4
This commit finishes adding depth mode that was reverted before due to other unresolved issues.
2019-11-29gl_framebuffer_cache: Optimize framebuffer keyReinUsesLisp1-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.
2019-11-29gl_rasterizer: Re-enable framebuffer cache for clear buffersReinUsesLisp1-28/+13
2019-11-27core/memory: Migrate over GetPointer()Lioncash1-1/+2
With all of the interfaces ready for migration, it's trivial to migrate over GetPointer().
2019-11-27core: Prepare various classes for memory read/write migrationLioncash1-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.
2019-11-23gl_rasterizer: Disable compute shaders on IntelReinUsesLisp1-0/+4
Intel's proprietary driver enters in a corrupt state when compute shaders are executed. For now, disable these.
2019-11-23gl_shader_decompiler: Normalize image bindingsReinUsesLisp1-20/+9
2019-11-23gl_shader_decompiler: Normalize cbuf bindingsReinUsesLisp1-2/+2
Stage and compute shaders were using a different binding counter. Normalize these.
2019-11-23gl_rasterizer: Add missing cbuf counter reset on computeReinUsesLisp1-0/+2
2019-11-23gl_shader_cache: Remove dynamic BaseBinding specializationReinUsesLisp1-49/+45
2019-11-23video_core: Unify ProgramType and ShaderStage into ShaderTypeReinUsesLisp1-14/+12
2019-11-23gl_rasterizer: Bind graphics images to draw commandsReinUsesLisp1-32/+48
Images were not being bound to draw invocations because these would require a cache invalidation.
2019-11-23gl_shader_cache: Specialize local memory size for compute shadersReinUsesLisp1-1/+2
Local memory size in compute shaders was stubbed with an arbitary size. This commit specializes local memory size from guest GPU parameters.
2019-11-23gl_shader_cache: Specialize shared memory sizeReinUsesLisp1-1/+1
Shared memory was being declared with an undefined size. Specialize from guest GPU parameters the compute shader's shared memory size.
2019-11-23gl_shader_cache: Specialize shader workgroupReinUsesLisp1-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.
2019-11-23shader/texture: Deduce texture buffers from lockerReinUsesLisp1-30/+15
Instead of specializing shaders to separate texture buffers from 1D textures, use the locker to deduce them while they are being decoded.
2019-11-08video_core: Silence implicit conversion warningsReinUsesLisp1-1/+1
2019-11-07gl_rasterizer: Remove front facing hackReinUsesLisp1-12/+0
2019-11-07gl_rasterizer: Emulate viewport flipping with ARB_clip_controlReinUsesLisp1-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).
2019-11-02gl_rasterizer: Re-enable stream buffer memory due to global memoryReinUsesLisp1-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.
2019-11-02gl_rasterizer: Upload constant buffers with glNamedBufferSubDataReinUsesLisp1-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.
2019-10-30gl_state: Remove ApplyDefaultStateReinUsesLisp1-2/+0
OpenGL has defaults values we can trust. Remove these.
2019-10-30shader/node: Unpack bindless texture encodingReinUsesLisp1-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.
2019-10-28maxwell_3d/kepler_compute: Remove unused arguments in GetTextureReinUsesLisp1-6/+6
2019-10-27rasterizer_accelerated: Add intermediary for GPU rasterizersReinUsesLisp1-36/+0
Add an intermediary class that implements common functions across GPU accelerated rasterizers. This avoids code repetition on different backends.
2019-10-25Shader_Cache: setup connection of ConstBufferLockerFernando Sahmkow1-2/+4
2019-10-25VideoCore: Unify const buffer accessing along engines and provide ConstBufferLocker class to shaders.Fernando Sahmkow1-3/+4
2019-10-05Gl_Rasterizer: Protect CPU Memory mapping from multiple threads.Fernando Sahmkow1-0/+1
2019-10-01gl_rasterizer: Fix polygon offset unitsReinUsesLisp1-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.
2019-09-22Maxwell3D: Corrections and refactors to MME instance refactorFernando Sahmkow1-10/+2
2019-09-20Rasterizer: Correct introduced bug where a conditional render wouldn't stop a draw call from executingFernando Sahmkow1-10/+16
2019-09-19Rasterizer: Refactor and simplify DrawBatch Interface.Fernando Sahmkow1-19/+10
2019-09-19Rasterizer: Address Feedback and conscerns.Fernando Sahmkow1-11/+11
2019-09-19Rasterizer: Refactor draw calls, remove deadcode and clean up.Fernando Sahmkow1-103/+66
2019-09-19VideoCore: Corrections to the MME Inliner and removal of hacky instance management.Fernando Sahmkow1-20/+18
2019-09-19Video Core: initial Implementation of InstanceDraw PackagingFernando Sahmkow1-8/+81
2019-09-17gl_rasterizer: Remove unused code paths from ConfigureFramebuffersReinUsesLisp1-68/+20
2019-09-11gl_rasterizer: Correct sRGB Fix regressionFernando Sahmkow1-0/+12
2019-09-11renderer_opengl: Fix sRGB blitsReinUsesLisp1-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.
2019-09-06gl_shader_decompiler: Keep track of written images and mark them as modifiedReinUsesLisp1-0/+3
2019-09-06gl_rasterizer: Apply textures and images stateReinUsesLisp1-0/+2
2019-09-06gl_rasterizer: Add samplers to compute dispatchesReinUsesLisp1-3/+33
2019-09-06gl_rasterizer: Minor code changesReinUsesLisp1-18/+25
2019-09-06gl_state: Split textures and samplers into two arraysReinUsesLisp1-5/+4
2019-09-06gl_rasterizer: Implement image bindingsReinUsesLisp1-2/+7
2019-09-06texture_cache: Pass TIC to texture cacheReinUsesLisp1-1/+1
2019-09-06kepler_compute: Implement texture queriesReinUsesLisp1-1/+21
2019-09-06gl_rasterizer: Split SetupTexturesReinUsesLisp1-20/+30
2019-09-04gl_rasterizer: Fix stencil testingReinUsesLisp1-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
2019-08-30video_core: Silent miscellaneous warnings (#2820)Rodrigo Locatti1-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
2019-08-21Video_Core: Implement a new Buffer CacheFernando Sahmkow1-1/+1
2019-07-26GPU: Flush commands on every dma pusher step.Fernando Sahmkow1-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.
2019-07-20Maxwell3D: Reorganize and address feedbackFernando Sahmkow1-18/+27
2019-07-17GL_State: Feedback and fixesFernando Sahmkow1-5/+5
2019-07-17Maxwell3D: Address FeedbackFernando Sahmkow1-1/+1
2019-07-17GL_Rasterizer: Corrections to Clearing.Fernando Sahmkow1-6/+6
2019-07-17GL_Rasterizer: Rework RenderTarget/DepthBuffer clearingFernando Sahmkow1-6/+58
2019-07-17Maxwell3D: Implement State Dirty Flags.Fernando Sahmkow1-31/+55
2019-07-17Maxwell3D: Rework the dirty system to be more consistant and scaleableFernando Sahmkow1-12/+41
2019-07-17maxwell3d: Implement Conditional RenderingFernando Sahmkow1-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.
2019-07-15gl_shader_cache: Address review commentariesReinUsesLisp1-0/+2
2019-07-15gl_rasterizer: Implement compute shadersReinUsesLisp1-15/+82
2019-07-06gl_rasterizer: Fix nullptr dereference on disabled buffersReinUsesLisp1-1/+1
2019-07-06gl_rasterizer: Minor style changesReinUsesLisp1-26/+20
2019-07-06gl_rasterizer: Fix vertex and index data invalidationsReinUsesLisp1-7/+7
2019-07-06gl_buffer_cache: Implement with generic buffer cacheReinUsesLisp1-15/+25
2019-07-06gl_buffer_cache: Remove global system gettersReinUsesLisp1-3/+2
2019-07-06gl_rasterizer: Drop gl_global_cache in favor of gl_buffer_cacheReinUsesLisp1-10/+17
2019-07-06gl_buffer_cache: Rework to support internalized buffersReinUsesLisp1-1/+1
2019-07-06gl_buffer_cache: Return used buffer from Upload functionReinUsesLisp1-15/+15
2019-07-06gl_rasterizer: Add some commentariesReinUsesLisp1-0/+5
2019-07-06gl_rasterizer: Make DrawParameters rasterizer instance constReinUsesLisp1-1/+1
2019-07-06gl_rasterizer: Move index buffer uploading to its own methodReinUsesLisp1-6/+15
2019-06-25texture_cache: Query MemoryManager from the systemFernando Sahmkow1-4/+0
2019-06-21texture_cache: Implement texception detection and texture barriers.Fernando Sahmkow1-2/+8
2019-06-21texture_cache: Implement Buffer Copy and detect Turing GPUs Image CopiesFernando Sahmkow1-1/+1
2019-06-21Fix rebase errorsFernando Sahmkow1-2/+8
2019-06-21texture_cache: Fermi2D reform and implement View MirageFernando Sahmkow1-3/+2
This also does some fixes on compressed textures reinterpret and on the Fermi2D engine in general.
2019-06-21gl_rasterizer: Track texture buffer usageReinUsesLisp1-13/+21
2019-06-21video_core: Make ARB_buffer_storage a required extensionReinUsesLisp1-5/+0
2019-06-21texture_cache: Implement Guard mechanismFernando Sahmkow1-0/+4
2019-06-21gl_framebuffer_cache: Use a hashed struct to cache framebuffersReinUsesLisp1-57/+2
2019-06-21texture_cache return invalid buffer on deactivated color_maskFernando Sahmkow1-2/+4
2019-06-21Remove Framebuffer reconfiguration and restrict rendertarget protectionFernando Sahmkow1-10/+6
2019-06-21texture_cache: Correct premature texceptionsFernando Sahmkow1-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.
2019-06-21texture_cache: Implement guest flushingFernando Sahmkow1-2/+4
2019-06-21Texture Cache: Implement Blitting and Fermi CopiesFernando Sahmkow1-3/+1
2019-06-21Change texture_cache chaching from GPUAddr to CacheAddrFernando Sahmkow1-16/+0
This also reverses the changes to make invalidation and flushing through the GPU address.
2019-06-21Implement Texture Cache V2Fernando Sahmkow1-22/+47
2019-06-21gl_texture_cache: Implement fermi copiesReinUsesLisp1-2/+3
2019-06-21gl_texture_cache: Minor changesReinUsesLisp1-4/+4
2019-06-21gl_texture_cache: Attach surface textures instead of viewsReinUsesLisp1-13/+9
2019-06-21gl_texture_cache: Initial implementationReinUsesLisp1-33/+33
2019-06-08gl_rasterizer: Remove unused parameters in descriptor uploadsReinUsesLisp1-5/+4
2019-06-08video_core/engines: Move ConstBufferInfo out of Maxwell3DReinUsesLisp1-37/+36
2019-05-30gl_rasterizer: Move alpha testing to the OpenGL pipelineReinUsesLisp1-5/+9
Removes the alpha testing code from each fragment shader invocation.
2019-05-30gl_rasterizer: Use GL_QUADS to emulate quads renderingReinUsesLisp1-34/+3
2019-05-21gl_shader_cache: Use shared contexts to build shaders in parallelReinUsesLisp1-3/+5
2019-05-18gl_rasterizer: Limit OpenGL point size to a minimum of 1ReinUsesLisp1-1/+3
2019-05-17gl_rasterizer: Pass the right number of array quad vertices countReinUsesLisp1-2/+2
2019-05-04gl_rasterizer: Silence unused variable warningLioncash1-2/+2
Makes use of src, so it's not considered unused.
2019-04-18video_core: Silent -Wswitch warningsReinUsesLisp1-0/+2
2019-04-14gl_shader_decompiler: Use variable AOFFI on supported hardwareReinUsesLisp1-3/+1
2019-04-14shader_ir: Implement STG, keep track of global memory usage and flushReinUsesLisp1-0/+4
2019-04-10gl_rasterizer: Apply just the needed state on ClearReinUsesLisp1-4/+4
2019-04-10gl_device: Implement interface and add uniform offset alignmentReinUsesLisp1-12/+13
2019-04-08Move ConstBufferAccessor to Maxwell3d, correct mistakes and clang format.Fernando Sahmkow1-6/+4
2019-04-08Fix bad rebaseFernando Sahmkow1-2/+1
2019-04-08Simplify ConstBufferAccessorFernando Sahmkow1-2/+4
2019-04-08Fixes to Const Buffer Accessor and FormattingFernando Sahmkow1-2/+1
2019-04-08Implement Bindless Handling on SetupTextureFernando Sahmkow1-1/+9
2019-04-08Implement Const Buffer AccessorFernando Sahmkow1-2/+4
2019-04-06gl_rasterizer: Use ARB_multi_bind to update SSBOsReinUsesLisp1-9/+8
2019-04-06gl_rasterizer: Use ARB_multi_bind to update UBOs across stagesReinUsesLisp1-22/+10
2019-04-04video_core/renderer_opengl: Remove unnecessary includesLioncash1-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.
2019-04-02gl_sampler_cache: Port sampler cache to OpenGLReinUsesLisp1-93/+1
2019-03-28gl_shader_manager: Remove reliance on global accessor within MaxwellUniformData::SetFromRegs()Lioncash1-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.
2019-03-27gl_rasterizer: Remove unused reference member variable from RasterizerOpenGLLioncash1-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"
2019-03-21gpu: Move GPUVAddr definition to common_types.bunnei1-4/+4
2019-03-17gl_rasterizer: Skip zero addr/sized regions on flush/invalidate.bunnei1-0/+6
2019-03-15gpu: Use host address for caching instead of guest address.bunnei1-5/+5
2019-03-11gl_rasterizer: Use system instance passed from argumentReinUsesLisp1-29/+30
2019-03-09gl_rasterizer: Encapsulate sampler queries into methodsReinUsesLisp1-57/+40
2019-03-09gl_rasterizer: Minor logger changesReinUsesLisp1-19/+13
2019-03-07gpu: Always flush.bunnei1-5/+1
2019-02-28gl_rasterizer: Remove texture unbinding after dispatching a draw callReinUsesLisp1-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.
2019-02-28Remove certain optimizations that caused texception to fail in certain scenarios.Fernando Sahmkow1-3/+0
2019-02-28rasterizer_cache_gl: Implement Texception PassFernando Sahmkow1-0/+7
2019-02-27gl_rasterizer_cache: Create texture views for array discrepanciesReinUsesLisp1-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.
2019-02-27gl_rasterizer: Reorder constructor initializer list in terms of member declaration orderLioncash1-2/+2
Orders the members in the order they would actually be initialized in. Silences a -Wreorder warning.
2019-02-27common/math_util: Move contents into the Common namespaceLioncash1-3/+3
These types are within the common library, so they should be within the Common namespace.
2019-02-26maxwell_3d: Use std::bitset to manage dirty flagsReinUsesLisp1-9/+9
2019-02-07gl_rasterizer: Implement a more accurate fermi 2D copy.bunnei1-8/+4
- This is a blit, use the blit registers.
2019-02-07gl_shader_cache: Link loading screen with disk shader cache loadReinUsesLisp1-3/+4
2019-02-07gl_shader_disk_cache: Pass core system as argument and guard against games without title idsReinUsesLisp1-2/+3
2019-02-07gl_shader_disk_cache: Save GLSL and entries into the precompiled fileReinUsesLisp1-5/+3
2019-02-07rasterizer_interface: Add disk cache entry for the rasterizerReinUsesLisp1-0/+5
2019-02-03maxwell_3d: Allow texture handles with TIC id zeroReinUsesLisp1-4/+0
Also remove "enabled" field from Tegra::Texture::FullTextureInfo because it would become unused.
2019-02-01rasterizer_interface: Remove unused AccelerateFill operationReinUsesLisp1-5/+0
2019-01-30gl_state: Remove texture target trackingReinUsesLisp1-3/+0
2019-01-30gl_rasterizer_cache: Move swizzling to textures instead of stateReinUsesLisp1-5/+5
2019-01-30shader_ir: Unify constant buffer offset valuesReinUsesLisp1-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.
2019-01-30gl_shader_cache: Use explicit bindingsReinUsesLisp1-81/+49
2019-01-30gl_rasterizer: Implement global memory managementReinUsesLisp1-0/+22
2019-01-30gl_rasterizer: Workaround invalid zeta clearsReinUsesLisp1-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.
2019-01-24frontend: Refactor ScopeAcquireWindowContext out of renderer_opengl.bunnei1-4/+0
2019-01-22maxwell_3d: Set rt_separate_frag_data to 1 by defaultReinUsesLisp1-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).
2019-01-18gl_rasterizer: Silent unsafe mix warningReinUsesLisp1-1/+1
2019-01-15video_core: Replace gl_shader_decompilerReinUsesLisp1-2/+2
2019-01-09gl_rasterizer: Workaround Intel VAO DSA bugReinUsesLisp1-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.
2019-01-08gl_global_cache: Add dummy global cache managerReinUsesLisp1-1/+2
2019-01-07gl_rasterizer: Skip framebuffer configuration if rendertargets have not been changedReinUsesLisp1-1/+13
2019-01-07gl_shader_cache: Use dirty flags for shadersReinUsesLisp1-1/+3
2019-01-06gl_rasterizer: Use DSA for vertex array objectsReinUsesLisp1-34/+28
2018-12-30gl_rasterizer_cache: Texture view if shader samples array but OGL is notReinUsesLisp1-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.
2018-11-29gl_rasterizer: Enable clip distances when set in register and in shaderReinUsesLisp1-11/+24
2018-11-29gl_rasterizer: Implement a framebuffer cacheReinUsesLisp1-39/+77
2018-11-29gl_rasterizer: Signal UNIMPLEMENTED when rt_separate_frag_data is not zeroReinUsesLisp1-1/+1
2018-11-29gl_rasterizer: Remove extension booleansReinUsesLisp1-13/+0
2018-11-27gl_rasterizer: Fixup for #1723.Markus Wick1-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.
2018-11-27remove viewport_transform_enabled as it seems to be inactive when valid transforms are used.Rodolfo Bogado1-12/+5
2018-11-27Implement depth clampRodolfo Bogado1-0/+16
2018-11-27Add support for Clip Distance enabled registerRodolfo Bogado1-1/+10
2018-11-27GPU States: Implement Polygon Offset. This is used in SMO all the time. (#1784)Marcos1-1/+11
* GPU States: Implement Polygon Offset. This is used in SMO all the time. * Clang Format fixes. * Initialize polygon_offset in the constructor.
2018-11-25Limit the amount of viewports tested for state changes only to the usable onesRodolfo Bogado1-2/+10
2018-11-24Add support for viewport_transfom_enable registerRodolfo Bogado1-5/+13
2018-11-24Add support for clear_flags registerRodolfo Bogado1-6/+38
2018-11-21Removed pre 4.3 ARB extensionsFernandoS271-5/+0
2018-11-19gl_rasterizer: Remove default clip distanceReinUsesLisp1-2/+0
2018-11-18drop support for non separate alpha as it seems to cause issues in some gamesRodolfo Bogado1-18/+16
2018-11-17fix sampler configuration, thanks to Marcos for his investigationRodolfo Bogado1-17/+38
2018-11-17small type fixRodolfo Bogado1-6/+6
2018-11-17add AlphaToCoverage and AlphaToOneRodolfo Bogado1-0/+7
2018-11-17add support for fragment_color_clampRodolfo Bogado1-0/+6
2018-11-17set border color not depending on the wrap modeRodolfo Bogado1-9/+9
only enable color mask for the first framebuffer id independent blending is disabled
2018-11-17set default value for point size registerRodolfo Bogado1-5/+1
2018-11-17fix viewport and scissor behaviorRodolfo Bogado1-16/+17
2018-11-17gl_rasterizer: Skip VB upload if the state is clean.Markus Wick1-4/+20
2018-11-11Use core extensions when available to set max anisotropic filtering levelRodolfo Bogado1-2/+7
2018-11-11Improve state management by splitting some of the states id separated function to avoid a full apply overheadRodolfo Bogado1-31/+23
2018-11-11Try 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 Bogado1-4/+10
2018-11-11set sampler max lod, min lod, lod bias and max anisotropyRodolfo Bogado1-10/+21
2018-11-08gl_rasterizer: Fix compiler warningsFrederic Laing1-2/+2
2018-11-08rasterizer_cache: Remove reliance on the System singletonLioncash1-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.
2018-11-06gl_rasterizer: Skip VAO binding if the state is clean.Markus Wick1-2/+7
2018-11-06gl_rasterizer: Split VAO and VB setup functions.Markus Wick1-4/+14
2018-11-05Add support to color mask to avoid issues in blending caused by wrong values in the alpha channel in some render targets.Rodolfo Bogado1-5/+18
2018-11-05Implement multi-target viewports and blendingRodolfo Bogado1-39/+56
2018-10-31Improve OpenGL state handlingRodolfo Bogado1-3/+1
2018-10-30video_core: Move surface declarations out of gl_rasterizer_cacheReinUsesLisp1-3/+4
2018-10-30global: Use std::optional instead of boost::optional (#1578)Frederic L1-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
2018-10-29Implement Mip FilterFernandoS271-3/+7
2018-10-28Implement sRGB Support, including workarounds for nvidia driver issues and QT sRGB supportRodolfo Bogado1-1/+12
2018-10-26gl_rasterizer: Implement primitive restart.bunnei1-0/+8
2018-10-26gl_rasterizer: Implement depth range.bunnei1-5/+5
2018-10-22Assert that multiple render targets are not set while alpha testingFernandoS271-0/+12
2018-10-22Use standard UBO and fix/stylize the codeFernandoS271-15/+0
2018-10-22Cache uniform locations and restructure the implementationFernandoS271-22/+4
2018-10-22Remove SyncAlphaTest and clang formatFernandoS271-2/+5
2018-10-22Added Alpha FuncFernandoS271-1/+9
2018-10-22Implemented Alpha TestingFernandoS271-0/+11
2018-10-19fermi_2d: Add support for more accurate surface copies.bunnei1-0/+6
2018-10-16config: Rename use_accurate_framebuffers -> use_accurate_gpu_emulation.bunnei1-2/+2
- This will be used as a catch-all for slow-but-accurate GPU emulation paths.
2018-10-16rasterizer_cache: Refactor to support in-order flushing.bunnei1-6/+3
2018-10-16gl_rasterizer_cache: Only flush when use_accurate_framebuffers is enabled.bunnei1-1/+6
2018-10-16gl_rasterizer: Implement flushing.bunnei1-1/+25
2018-10-15gl_rasterizer: Silence implicit cast warning in glBindBufferRangeReinUsesLisp1-1/+2
2018-10-09Implement Scissor TestFernandoS271-4/+9
2018-10-09Assert Scissor testsFernandoS271-0/+12
2018-10-07gl_shader_decompiler: Implement geometry shadersReinUsesLisp1-14/+26
2018-10-07gl_rasterizer: Fixup undefined behaviour in SetupDrawReinUsesLisp1-0/+1
2018-10-06Implemented Depth Compare and Shadow SamplersFernandoS271-0/+18
2018-10-06gl_rasterizer: Add rasterizer cache code to handle accerated fermi copies.bunnei1-7/+3
2018-10-04gl_rasterizer: Implement quads topologyReinUsesLisp1-43/+103
2018-10-01gl_rasterizer: Fixup unassigned point sizesReinUsesLisp1-1/+4
2018-09-30gl_rasterizer_cache: Workaround for Texture2D -> Texture2DArray scenario.bunnei1-1/+1
2018-09-28video_core: Implement point_size and add point state syncReinUsesLisp1-0/+7
2018-09-26video_core: Add asserts for CS, TFB and alpha testingReinUsesLisp1-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.
2018-09-21RasterizerGL: Use the correct framebuffer when clearing via the CLEAR_BUFFERS register.Subv1-1/+1
Previously we were clearing the default backbuffer framebuffer. Found thanks to a Piglit test :)
2018-09-19gl_rasterizer: Fix StartAddress handling with indexed draw calls.Markus Wick1-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.
2018-09-15Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi1-15/+15
2018-09-13Use ARB_multi_bind for uniform buffers (#1287)ReinUsesLisp1-3/+22
* gl_rasterizer: use ARB_multi_bind for uniform buffers * address feedback
2018-09-10rasterizer: Drop unused handler.Markus Wick1-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.
2018-09-10gl_rasterizer: Implement clear for non-zero render targets.bunnei1-48/+55
- Several misc. changes to ConfigureFramebuffers in support of this.
2018-09-10gl_rasterizer: Implement multiple color attachments.bunnei1-69/+45
2018-09-08gl_rasterizer: Use baseInstance instead of moving the buffer points.bunnei1-21/+25
This hopefully helps our cache not to redundant upload the vertex buffer. # Conflicts: # src/video_core/renderer_opengl/gl_rasterizer.cpp
2018-09-08video_core: Arithmetic overflow warning fix for gl_rasterizer (#1262)Patrick Elsässer1-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.
2018-09-08gl_rasterizer: Implement texture wrap mode p.bunnei1-2/+7
2018-09-08gl_rasterizer_cache: Keep track of texture type per surface.bunnei1-0/+1
2018-09-08gl_state: Keep track of texture target.bunnei1-3/+3
2018-09-06gl_rasterizer: Call state.Apply only once on SetupShaders.bunnei1-4/+2
2018-09-05gl_rasterizer: Implement a VAO cache.Markus Wick1-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.
2018-09-05renderer_opengl: Implement a buffer cache.Markus Wick1-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.
2018-09-04gl_shader_cache: Use an u32 for the binding point cache.Markus Wick1-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.
2018-09-04Update microprofile scopes.Markus Wick1-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.
2018-08-31gl_rasterizer_cache: Use accurate framebuffer setting for accurate copies.bunnei1-20/+0
2018-08-31gl_renderer: Cache textures, framebuffers, and shaders based on CPU address.bunnei1-11/+8
2018-08-31gl_rasterizer: Fix issues with the rasterizer cache.bunnei1-0/+38
- Use a single cached page map. - Fix calculation of ending page.
2018-08-28gpu: Make memory_manager privateLioncash1-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.
2018-08-28gl_rasterizer: Remove unused variablesLioncash1-2/+0
2018-08-28renderer_opengl: Implement a new shader cache.bunnei1-59/+25
2018-08-28gl_rasterizer_cache: Update to use RasterizerCache base class.bunnei1-4/+1
2018-08-24gl_rasterizer: Correct assertion condition in SyncLogicOpState()Lioncash1-1/+2
Previously the assert would always be hit, since it was the equivalent of: array == nullptr, which is never true.
2018-08-23gl_rasterizer: Implement stencil test.bunnei1-4/+31
- Used by Splatoon 2.
2018-08-23gl_rasterizer: Implement partial color clear and stencil clear.bunnei1-12/+42
2018-08-22gl_shader_gen: Use a std::vector to represent program code instead of std::arrayLioncash1-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).
2018-08-22renderer_opengl: Namespace OpenGL codeLioncash1-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.
2018-08-21GPU: Implemented the logic op functionality of the GPU.Subv1-0/+18
This will ASSERT if blending is enabled at the same time as logic ops.
2018-08-21rasterizer_interface: Remove ScreenInfo from AccelerateDraw()'s signatureLioncash1-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.
2018-08-20Rasterizer: 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.Subv1-4/+5
2018-08-18GLRasterizer: Implemented instanced vertex arrays.Subv1-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.
2018-08-15Rasterizer: Implemented instanced rendering.Subv1-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.
2018-08-15gl_rasterizer: Fix upload size for constant buffers.bunnei1-3/+3
2018-08-12gl_rasterizer: Use a shared helper to upload from CPU memory.Markus Wick1-28/+29
2018-08-12gl_state: Don't track constant buffer mappings.Markus Wick1-15/+3
2018-08-12gl_rasterizer: Use the stream buffer for constant buffers.Markus Wick1-20/+19
2018-08-12gl_rasterizer: Use the streaming buffer itself for the constant buffer.Markus Wick1-31/+14
Don't emut copies, especially not for data, which is used once. They just end in a huge GPU overhead.
2018-08-12gl_rasterizer: Use a helper for aligning the buffer.Markus Wick1-14/+19
2018-08-12Update the stream_buffer helper from Citra.Markus Wick1-22/+14
Please see https://github.com/citra-emu/citra/pull/3666 for more details.
2018-08-12RasterizerGL: Ignore invalid/unset vertex attributes.Subv1-1/+6
This should make the es2gears example not crash anymore.
2018-08-12gl_rasterizer: Silence implicit truncation warning in SetupShaders()Lioncash1-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.
2018-08-12core: Namespace EmuWindowLioncash1-1/+1
Gets the class out of the global namespace.
2018-08-10Revert "gl_state: Temporarily disable culling and depth test."bunnei1-3/+1
2018-08-10gl_rasterizer_cache: Remove unused viewport parameter of GetFramebufferSurfaces()Lioncash1-4/+3
2018-08-09gl_rasterizer: Do not render when no render target is configured.bunnei1-0/+5
- Used by Super Mario Odyssey.
2018-08-08maxwell_3d: Use correct const buffer size and check bounds.bunnei1-1/+4
- Fixes mem corruption with Super Mario Odyssey and Pokkén Tournament DX.
2018-08-08renderer_opengl: Use trace log in a few places.bunnei1-1/+1
2018-08-05added braces for conditionsDavid Marcec1-2/+3
2018-08-05fix the attrib format for intsDavid Marcec1-2/+7
2018-08-02video_core: Make global EmuWindow instance part of the base renderer classLioncash1-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.
2018-07-24gl_rasterizer: Replace magic number with GL_INVALID_INDEX in SetupConstBuffers()Lioncash1-3/+5
This is just the named constant that OpenGL provides, so we can use that instead of using a literal -1
2018-07-24gl_rasterizer: Use std::string_view instead of std::string when checking for extensionsLioncash1-1/+3
We can avoid heap allocations here by just using a std::string_view instead of performing unnecessary copying of the string data.
2018-07-24gl_rasterizer: Use in-class member initializers where applicableLioncash1-7/+0
We can just assign to the members directly in these cases.
2018-07-24gl_rasterizer: Implement texture border color.bunnei1-3/+6
2018-07-22gl_rasterizer_cache: Use GPUVAddr as cache key, not parameter set.bunnei1-10/+14
2018-07-22gl_rasterizer: Use zeta_enable register to enable depth buffer.bunnei1-2/+2
2018-07-21gpu: Rename Get3DEngine() to Maxwell3D()Lioncash1-5/+5
This makes it match its const qualified equivalent.
2018-07-19gl_state: Temporarily disable culling and depth test.bunnei1-1/+3
2018-07-19core: Don't construct instance of Core::System, just to access its live instanceLioncash1-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.
2018-07-14OpenGL: Use MakeCurrent/DoneCurrent for multithreaded rendering.bunnei1-0/+6
2018-07-14GPU: Always enable the depth write when clearing the depth buffer.Subv1-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.
2018-07-13gl_rasterizer: Fix check for if a shader stage is enabled.bunnei1-11/+3
2018-07-13gl_shader_gen: Implement dual vertex shader mode.bunnei1-10/+33
- When VertexA shader stage is enabled, we combine with VertexB program to make a single Vertex Shader stage.
2018-07-08gl_rasterizer: Flip triangles when regs.viewport_transform[0].scale_y is negative.bunnei1-1/+4
- Fixes a regression with Binding of Isaac.
2018-07-04GPU: Ignore textures that the GLSL compiler deemed unused when binding textures to the shaders.Subv1-1/+4
2018-07-04GPU: Flip the triangle front face winding if the GPU is configured to not flip the triangles.Subv1-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.
2018-07-04GPU: Only configure the used framebuffers during clear.Subv1-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.
2018-07-03GPU: Factor out the framebuffer configuration code for both Clear and Draw commands.Subv1-72/+34
2018-07-03GPU: Support clears that don't clear the color buffer.Subv1-4/+14
2018-07-03GPU: Bind and clear the render target when the CLEAR_BUFFERS register is written to.Subv1-0/+71
2018-07-03gl_rasterizer: Only set cull mode and front face if enabled.bunnei1-2/+5
2018-07-03GPU: Don't try to parse the depth test function if the depth test is disabled.Subv1-0/+4
2018-07-03Update clang formatJames Rowe1-5/+5
2018-07-03Rename logging macro back to LOG_*James Rowe1-4/+4
2018-07-03GPU: Set up the culling configuration on each draw.Subv1-6/+8
2018-07-02GPU: Set up the depth test state on every draw.Subv1-0/+11
2018-07-02GPU: Implemented the Z24S8 depth format and load the depth framebuffer.Subv1-1/+3
2018-07-02GPU: Implement offsetted rendering when using non-indexed drawing.Subv1-1/+1
2018-07-02GPU: Fixed the index offset rendering, and implemented the base vertex functionality.Subv1-6/+8
This fixes Stardew Valley.
2018-07-02GPU: Ignore disabled textures and textures with an invalid address.Subv1-1/+5
2018-06-27gl_rasterizer_cache: Implement caching for texture and framebuffer surfaces.bunnei1-6/+19
gl_rasterizer_cache: Improved cache management based on Citra's implementation. gl_surface_cache: Add some docstrings.
2018-06-27gl_rasterizer: Implement AccelerateDisplay to forward textures to framebuffers.bunnei1-3/+22
2018-06-27gl_rasterizer_cache: Remove Citra's rasterizer cache, always load/flush surfaces.bunnei1-91/+26
2018-06-27gl_rasterizer: Workaround for when exceeding max UBO size.bunnei1-0/+6
2018-06-26gl_state: Fix state management for texture swizzle.bunnei1-1/+1
2018-06-20Build: Fixed some MSVC warnings in various parts of the code.Subv1-2/+2
2018-06-18gl_rasterizer: Get loose on independent blending.Jules Blok1-1/+1
2018-06-10Rasterizer: Use UBOs instead of SSBOs for uploading const buffers.Subv1-11/+17
This should help a bit with GPU performance once we're GPU-bound.
2018-06-09GPU: Synchronize the blend state on every draw call.Subv1-8/+18
Only independent blending on render target 0 is implemented for now. This fixes the elongated squids in Splatoon 2's boot screen.
2018-06-09GPU: Added registers for normal and independent blending.Subv1-26/+1
2018-06-08Rasterizer: Flush the written region when writing shader uniform data before copying it to the uniform buffers.Subv1-0/+3
This fixes the flip_viewport uniform having invalid values when drawing.
2018-06-07GLRenderer: Write the shader stage configuration UBO data *before* copying it to the GPU.Subv1-3/+4
This should fix the bug with the vs_config UBO being uninitialized during shader execution.
2018-06-07GPU: Support changing the texture swizzles for Maxwell textures.Subv1-0/+8
2018-06-07gl_shader_gen: Add uniform handling for indirect const buffer access.bunnei1-1/+10
2018-06-06GPU: Implement sampling multiple textures in the generated glsl shaders.Subv1-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.
2018-06-04GPU: Calculate the correct viewport dimensions based on the scale and translate registers.Subv1-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?
2018-05-19GLRenderer: Remove unused hw_vao_enabled_attributes variable.Subv1-3/+0
2018-05-19GLRenderer: Remove unused vertex buffer and increase the size of the stream buffer to 128 MB.Subv1-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.
2018-05-02general: Make formatting of logged hex values more straightforwardLioncash1-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).
2018-04-25video-core: Move logging macros over to new fmt-capable onesLioncash1-3/+3
2018-04-25gl_rasterizer_cache: Add a function for finding framebuffer GPU address.bunnei1-0/+1
2018-04-25gl_rasterizer_cache: Update to be based on GPU addresses, not CPU addresses.bunnei1-7/+6
2018-04-24memory_manager: Make GpuToCpuAddress return an optional.bunnei1-7/+7
2018-04-24memory_manager: Use GPUVAdddr, not PAddr, for GPU addresses.bunnei1-3/+3
2018-04-23GPU: Support multiple enabled vertex arrays.Subv1-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.
2018-04-21opengl: Remove unnecessary header inclusionsLioncash1-1/+0
2018-04-20math_util: Remove the Clamp() functionLioncash1-12/+13
C++17 adds clamp() to the standard library, so we can remove ours in favor of it.
2018-04-18GLCache: Added boilerplate code to make supporting configurable texture component types.Subv1-0/+2
For now only the UNORM type is supported.
2018-04-18GLCache: Take into account the texture's block height when caching and unswizzling.Subv1-1/+2
2018-04-18renderer_opengl: Implement BlendEquation and BlendFunc.bunnei1-1/+26
2018-04-17gl_rendering: Use NGLOG* for changed code.bunnei1-3/+3
2018-04-17gl_rasterizer: Implement indexed vertex mode.bunnei1-19/+31
2018-04-15GPU: Use the same buffer names in the generated GLSL and the buffer uploading code.Subv1-10/+7
2018-04-15GPU: Don't use explicit binding points when uploading the constbuffers to opengl.Subv1-5/+25
The bindpoints will now be dynamically calculated based on the number of buffers used by the previous shader stage.
2018-04-15GPU: Don't use GetPointer when uploading the constbuffer data to the GPU.Subv1-3/+4
2018-04-15GPU: Use the buffer hints from the shader decompiler to upload only the necessary const buffers for each shader stage.Subv1-29/+38
2018-04-15GPU: Upload the entirety of each constbuffer for each shader stage as SSBOs.Subv1-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.
2018-04-15GPU: Allow configuring ssbos in the opengl state manager.Subv1-0/+8
2018-04-15GPU: Added a function to determine whether a shader stage is enabled or not.Subv1-3/+3
2018-04-14gl_rasterizer: Generate shaders and upload uniforms.bunnei1-28/+74
2018-04-14gl_rasterizer: Use shader program manager, remove test shader.bunnei1-143/+27
2018-04-14renderer_opengl: Use OGLProgram instead of OGLShader.bunnei1-1/+1
2018-04-07GL: Set up the textures used for each draw call.Subv1-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.
2018-04-07GL: Bind the textures to the shaders used for drawing.Subv1-2/+11
2018-04-07GL: Create the sampler objects when starting up the GL rasterizer.Subv1-0/+6
2018-04-07GL: Ported the SamplerInfo struct from citra.Subv1-0/+39
2018-03-27gl_rasterizer: Move code to bind framebuffer surfaces before draw to its own function.bunnei1-22/+27
2018-03-27gl_rasterizer: Add a SyncViewport method.bunnei1-18/+17
2018-03-27gl_rasterizer: Move PrimitiveTopology check to MaxwellToGL.bunnei1-11/+2
2018-03-27gl_rasterizer: Use ReadBlock instead of GetPointer for SetupVertexArray.bunnei1-1/+1
2018-03-27gl_rasterizer: Normalize vertex array data as appropriate.bunnei1-1/+1
2018-03-27rasterizer: Rename DrawTriangles to DrawArrays.bunnei1-2/+2
2018-03-27gl_rasterizer: Use passthrough shader for SetupVertexShader.bunnei1-1/+2
2018-03-27renderer_opengl: Logging, etc. cleanup.bunnei1-17/+18
2018-03-27gl_rasterizer: Implement SetupVertexArray.bunnei1-20/+38
2018-03-27gl_rasterizer: Use 32 texture units instead of 3.bunnei1-0/+1
2018-03-27gl_rasterizer: Implement DrawTriangles.bunnei1-1/+194
2018-03-27gl_rasterizer: Implement AnalyzeVertexArray.bunnei1-1/+21
2018-03-24gl_rasterizer: Fake render in green, because it's cooler.bunnei1-1/+1
2018-03-24gl_rasterizer: Log warning instead of sync'ing unimplemented funcs.bunnei1-7/+1
2018-03-23rasterizer: Flush and invalidate regions should be 64-bit.bunnei1-3/+3
2018-03-23gl_rasterizer: Implement AccelerateDisplay method from Citra.bunnei1-1/+33
2018-03-23video_core: Remove usage of PAddr and replace with VAddr.bunnei1-4/+4
2018-03-23video_core: Move FramebufferInfo to FramebufferConfig in GPU.bunnei1-2/+3
2018-03-23gl_rasterizer: Replace a bunch of UNIMPLEMENTED with ASSERT.bunnei1-15/+15
2018-03-23gl_rasterizer: Add a simple passthrough shader in lieu of shader generation.bunnei1-3/+56
2018-03-20renderer_gl: Port boilerplate rasterizer code over from Citra.bunnei1-0/+269
2018-01-13Remove references to PICA and rasterizers in video_coreJames Rowe1-1686/+0
2018-01-01core/video_core: Fix a bunch of u64 -> u32 warnings.bunnei1-2/+2
2017-09-17Fixed framebuffer warningHuw Pascoe1-7/+18
2017-08-25gl_rasterizer: implement custom clip planewwylele1-0/+28
2017-08-21gl_rasterizer: add clipping plane z<=0 defined in PICAwwylele1-0/+3
2017-07-01gl_rasterizer: use texture buffer for proctex LUTwwylele1-30/+35
2017-06-22gl_rasterizer: use texture buffer for fog LUTwwylele1-13/+12
2017-06-22gl_rasterizer: create the texture before applying the statewwylele1-2/+2
this is a rebasing error from #2792. It doesn't affect much though, because the later more Apply() call fixes/hides it
2017-06-21gl_rasterizer: fix glGetUniformLocation typewwylele1-8/+8
2017-06-21gl_rasterizer: manage texture ids in one placewwylele1-23/+24
2017-06-21gl_rasterizer/lighting: fix LUT interpolationwwylele1-49/+22
2017-06-10OpenGL: Update comment on AreQuaternionsOpposite with new informationYuri Kunde Schlesner1-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.
2017-05-30gl_rasterizer: sync spot light statuswwylele1-0/+45
2017-05-20gl_rasterizer: implement procedural texturewwylele1-0/+232
2017-05-05pica: shader_dirty if texture2 coord changedwwylele1-0/+4
2017-04-17OpenGL: Pass Pica regs via parameterYuri Kunde Schlesner1-1/+1
2017-04-17OpenGL: Move PicaShaderConfig to gl_shader_gen.hYuri Kunde Schlesner1-1/+1
Also move the implementation of CurrentConfig to the cpp file.
2017-04-17OpenGL: Move Attributes enum to a more appropriate fileYuri Kunde Schlesner1-1/+0
2017-02-18OpenGL: Check if uniform block exists before updating it (#2581)Jannik Vogel1-29/+30
2017-02-09OpenGL: Remove unused duplicate of IsPassThroughTevStageYuri Kunde Schlesner1-12/+0
This copy was left behind when the shader generation code was moved to a separate file.
2017-02-09VideoCore: Split regs.h inclusionsYuri Kunde Schlesner1-1/+3
2017-02-04VideoCore: Move Regs to its own fileYuri Kunde Schlesner1-1/+1
2017-02-04VideoCore: Split framebuffer regs from Regs structYuri Kunde Schlesner1-49/+60
2017-02-04VideoCore: Split texturing regs from Regs structYuri Kunde Schlesner1-62/+67
2017-02-04VideoCore: Split rasterizer regs from Regs structYuri Kunde Schlesner1-25/+29
2017-01-30VideoCore: Change misleading register namesYuri Kunde Schlesner1-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.
2017-01-30video_core: gl_rasterizer.cpp removed unused type aliasKloen1-2/+0
2017-01-23video_core: gl_rasterizer float to int warningKloen1-1/+2
2016-12-19Use GL_TRUE when setting color_maskAlbin Bernhardsson1-4/+4
2016-12-15VideoCore: Make profiling scope more representativeYuri Kunde Schlesner1-0/+12
2016-12-07OpenGL: Drop framebuffer completeness check.Markus Wick1-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
2016-12-05Report shader uniform block size in case of mismatchJannik Vogel1-1/+3
2016-12-04OpenGL: Non-zero stride only makes sense for linear buffersYuri Kunde Schlesner1-1/+1
2016-12-04OpenGL: Fix DisplayTransfer accel when input width != output widthYuri Kunde Schlesner1-1/+10
Fixes #2246, #2261
2016-11-30ClangFormat: Fixed the clang-format errorsSubv1-4/+8
2016-11-29Build: Fixed a few warnings.Subv1-4/+4
2016-11-27RasterizerGL: Use GL_TRUE and 0xFF in the stencil and depth masks instead of simply true and -1Subv1-2/+2
2016-11-27Rasterizer/Memfill: Set the correct stencil write mask when clearing the stencil buffer.Subv1-1/+1
2016-09-30OpenGL: Take cached viewport sub-rect into account for scissorYuri Kunde Schlesner1-21/+21
Fixes #1938
2016-09-29rasterizer: separate TextureCopy from DisplayTransferwwylele1-5/+5
2016-09-21Use negative priorities to avoid special-casing the self-includeYuri Kunde Schlesner1-1/+1
2016-09-21Remove empty newlines in #include blocks.Emmanuel Gil Peyrot1-5/+1
This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation.
2016-09-19Manually tweak source formatting and then re-run clang-formatYuri Kunde Schlesner1-5/+5
2016-09-18Sources: Run clang-format on everything.Emmanuel Gil Peyrot1-86/+148
2016-06-28OpenGL: Add scaled resolution support to scissorYuri Kunde Schlesner1-0/+8
2016-06-28PICA: Scissor fixes and cleanupsYuri Kunde Schlesner1-10/+10
2016-06-28PICA: Implement scissor testSubv1-0/+26
2016-06-07OpenGL: Implement fogJannik Vogel1-0/+68
2016-05-23OpenGL: Set shader_dirty on lighting changesJannik Vogel1-0/+23
2016-05-23OpenGL: Use uniforms for dist_atten_bias and dist_atten_scaleJannik Vogel1-0/+72
2016-05-14OpenGL: Only update depth uniforms if the depth changedJannik Vogel1-7/+17
2016-05-12OpenGL: Support blend equationJannik Vogel1-0/+2
2016-05-11OpenGL: Implement texture type 3Jannik Vogel1-0/+8
2016-05-10OpenGL: Implement W-Buffers and fix depth-mappingJannik Vogel1-3/+8
2016-05-10Pica: Implement W-Buffer in SW rasterizerJannik Vogel1-2/+2
2016-05-07fixup simple type conversions where possibleAlexander Laties1-1/+1
2016-04-30OpenGL: border_color was never set. Fixed. (#1740)Jannik Vogel1-0/+1
2016-04-30VideoCore: Run include-what-you-use and fix most includes.Emmanuel Gil Peyrot1-6/+7
2016-04-29Common: Remove section measurement from profiler (#1731)Yuri Kunde Schlesner1-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.
2016-04-22HWRasterizer: sync specular uniform for new shaderstfarley1-0/+2
2016-04-21HWRasterizer: Texture forwardingtfarley1-511/+328
2016-04-08OpenGL: Respect buffer-write allow registersJannik Vogel1-6/+28
2016-04-08OpenGL: Split buffer-write mask sync into seperate functionsJannik Vogel1-8/+30
2016-04-08OpenGL: Keep stencil-test and framebuffer.depth_format in syncJannik Vogel1-0/+1
2016-04-05Common: Remove Common::make_unique, use std::make_uniqueMerryMage1-2/+1
2016-04-03OpenGL: Fix a double framebuffer completeness checks.Emmanuel Gil Peyrot1-4/+6
2016-04-03OpenGL: Check for framebuffer completenessJannik Vogel1-0/+3
2016-03-24OpenGL: Don't attempt to draw empty triangle batchesYuri Kunde Schlesner1-0/+3
Our code did not handle this well, causing random crashes in some situations.
2016-03-06Pica: Write depth value even when depth test is disabledYuri Kunde Schlesner1-2/+4
This has been confirmed on hardware. Fixes Etrian Odyssey IV.
2016-03-03Add immediate mode vertex submissionDwayne Slater1-0/+1
2016-02-05renderer_opengl: Use GLvec3/GLvec4 aliases for commonly used types.bunnei1-2/+2
2016-02-05gl_rasterizer: Fix issue with interpolation of opposite quaternions.bunnei1-3/+25
2016-02-05pica_types: Replace float24/20/16 with a template class.bunnei1-7/+7
2016-02-05renderer_opengl: Use textures for fragment shader LUTs instead of UBOs.bunnei1-12/+39
- Gets us LUT interpolation for free. - Some older Intel GPU drivers did not support the big UBOs needed to store the LUTs.
2016-02-05renderer_opengl: Initial implementation of basic specular lighting.bunnei1-0/+68
2016-02-05renderer_opengl: Implement HW fragment lighting LUTs within our default UBO.bunnei1-13/+52
2016-02-05renderer_opengl: Implement diffuse component of HW fragment lighting.bunnei1-0/+141
2016-02-03hwrasterizer: Use proper cached fb addr/sizetfarley1-40/+32
2016-01-21hwrasterizer: Use depth offsettfarley1-0/+16
2015-12-08VideoCore: Unify interface to OpenGL and SW rasterizersYuri Kunde Schlesner1-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.
2015-12-07VideoCore: Rename HWRasterizer methods to be less confusingYuri Kunde Schlesner1-3/+3
2015-12-07OpenGL: Rename cache functions to better match what they actually doYuri Kunde Schlesner1-4/+4
2015-12-05OpenGL: Flip framebuffers during transfer rather than when renderingYuri Kunde Schlesner1-11/+10
2015-11-26renderer_opengl: Fix uniform issues introduced with kemenaran/avoid-explicit-uniform-location.bunnei1-4/+6
2015-11-25Use regular uniform locationPierre de La Morinerie1-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).
2015-11-19FragShader: Use an UBO instead of several individual uniformsSubv1-4/+29
2015-10-22gl_rasterizer: Define enum types for each vertex texcoord attribute.bunnei1-6/+6
2015-10-22gl_rasterizer: Use MMH3 hash for shader cache hey.bunnei1-4/+3
- Includes a check to confirm no hash collisions.
2015-10-22gl_shader_gen: Require explicit uniform locations.bunnei1-19/+8
- Fixes uniform issue on AMD.
2015-10-22renderer_opengl: Refactor shader generation/caching to be more organized + various cleanups.bunnei1-74/+57
2015-10-22gl_rasterizer: Move logic for creating ShaderCacheKey to a static function.bunnei1-17/+2
2015-10-22gl_rasterizer: Fix typo in uploading TEV const color uniforms.bunnei1-5/+5
2015-10-22gl_shader_util: Fix precision bug with alpha testing.bunnei1-2/+2
- Alpha testing is not done with float32 precision, this makes the HW renderer match the SW renderer.
2015-10-22Initial implementation of fragment shader generation with caching.Subv1-227/+124
2015-10-07Silence -Wsign-compare warnings.Rohit Nirmal1-3/+3
2015-09-11video_core: Reorganize headersLioncash1-1/+1
2015-09-10gl_rasterizer: Replace push_back calls with emplace_back in AddTriangleLioncash1-3/+3
2015-09-03OpenGL: Use Sampler Objects to decouple sampler config from texturesYuri Kunde Schlesner1-0/+46
Fixes #978
2015-09-03OpenGL: Remove ugly and endian-unsafe color pointer castsYuri Kunde Schlesner1-3/+3
2015-08-30Replace the previous OpenGL loader with a glad-generated 3.3 oneYuri Kunde Schlesner1-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.
2015-08-28gl_rasterizer_cache: Detect and ignore unnecessary texture flushes.bunnei1-2/+2
2015-08-25Integrate the MicroProfile profiling libraryYuri Kunde Schlesner1-0/+10
This brings goodies such as a configurable user interface and multi-threaded timeline view.
2015-08-24HWRenderer: Added a workaround for the Intel Windows driver bug that causes glTexSubImage2D to not change the stencil buffer.Subv1-2/+9
Reported here https://communities.intel.com/message/324464
2015-08-20GLRasterizer: Implemented stencil testing in the hw renderer.Subv1-2/+11
2015-08-15GPU: Refactor "VertexShader" namespace to "Shader".bunnei1-3/+3
- Also renames "vertex_shader.*" to "shader_interpreter.*"
2015-08-06OpenGL: Remove redundant texture.enable_2d field from OpenGLStateYuri Kunde Schlesner1-10/+1
All uses of this field where it's false can just set the texture id to 0 instead.
2015-07-28OpenGL: Add a profiler category measuring framebuffer readbackYuri Kunde Schlesner1-0/+7
2015-07-19GLRasterizer: Don't try to get a pointer to the depth buffer if it doesn't exist.Subv1-3/+7
2015-06-28Core: Cleanup hw includes.Emmanuel Gil Peyrot1-0/+1
2015-06-28Common: Cleanup key_map includes.Emmanuel Gil Peyrot1-3/+5
2015-06-09Renderer formatting editstfarley1-12/+12
2015-06-09Render-to-texture flush, interval math fixtfarley1-1/+13
2015-06-09Liberal texture unbind (clout menu)tfarley1-4/+34
2015-06-09Depth format fix (crush3d intro/black screens)tfarley1-46/+46
2015-06-09Implemented glColorMasktfarley1-0/+4
2015-05-31Pica: Implement LogicOp function.bunnei1-0/+10
2015-05-30Move video_core/color.h to common/color.harchshift1-1/+2
2015-05-29Remove every trailing whitespace from the project (but externals).Emmanuel Gil Peyrot1-1/+1
2015-05-23Pica: Create 'State' structure and move state memory there.bunnei1-108/+126
2015-05-23OpenGL renderertfarley1-0/+879