Commit graph

1095 commits

Author SHA1 Message Date
Subv ffdc9e716d GPU: Use the buffer hints from the shader decompiler to upload only the necessary const buffers for each shader stage. 2018-04-15 11:15:54 -05:00
bunnei 595d37d69a shaders: Expose hints about used const buffers. 2018-04-15 11:50:10 -04:00
Subv 03cbd8f20f GPU: Upload the entirety of each constbuffer for each shader stage as SSBOs.
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-14 23:02:05 -05:00
Subv ea730b69d1 GPU: Allow configuring ssbos in the opengl state manager. 2018-04-14 22:54:23 -05:00
Subv e14e38fe0e GPU: Added a function to determine whether a shader stage is enabled or not. 2018-04-14 22:54:23 -05:00
bunnei 538322ec1f shaders: Add NumTextureSamplers const, remove unused #pragma. 2018-04-14 18:50:06 -04:00
bunnei f48c229f0e shaders: Address PR review feedback. 2018-04-14 16:01:41 -04:00
bunnei 2fcae0000f gl_shader_decompiler: Cleanup log statements. 2018-04-14 16:01:41 -04:00
bunnei 47bf0b0094 shaders: Fix GCC and clang build issues. 2018-04-14 16:01:40 -04:00
bunnei d166a50ded gl_shader_decompiler: Implement negate, abs, etc. and lots of cleanup. 2018-04-14 16:01:40 -04:00
bunnei a859a70da1 shader_bytecode: Add FSETP and KIL to GetInfo. 2018-04-14 16:01:40 -04:00
bunnei 6fe96737a1 shader_bytecode: Add SubOp decoding. 2018-04-14 16:01:40 -04:00
bunnei a5728bdd10 gl_shader_decompiler: Add shader stage hint. 2018-04-14 16:01:39 -04:00
bunnei e3628ec6fd renderer_opengl: Fix Morton copy byteswap, etc. 2018-04-14 16:01:39 -04:00
bunnei 1962aac7a0 gl_shader_manager: Implement SetShaderSamplerBindings. 2018-04-13 23:48:30 -04:00
bunnei 1a3dbd49ef gl_rasterizer: Generate shaders and upload uniforms. 2018-04-13 23:48:29 -04:00
bunnei 8df3222eb3 gl_shader_decompiler: Basic impl. for very simple vertex shaders.
- Tested with Puyo Puyo Tetris and Cave Story+
2018-04-13 23:48:28 -04:00
bunnei f11b2888c9 gl_shader_manager: Cleanup and consolidate uniform handling. 2018-04-13 23:48:28 -04:00
bunnei 7e7f053ea7 maxwell_3d: Make memory_manager public. 2018-04-13 23:48:27 -04:00
bunnei 4e961244a8 maxwell_3d: Fix shader_config decodings. 2018-04-13 23:48:26 -04:00
bunnei 2452d127dc gl_rasterizer: Use shader program manager, remove test shader. 2018-04-13 23:48:26 -04:00
bunnei f9c4e515d8 renderer_opengl: Add gl_shader_manager class. 2018-04-13 23:48:25 -04:00
bunnei 9e32fa6bb2 maxwell_to_gl: Add a few types, etc. 2018-04-13 23:48:24 -04:00
bunnei 7cebff07e4 gl_shader_gen: Add hashable setup/config structs. 2018-04-13 23:48:23 -04:00
bunnei 1aa7a9ae50 gl_shader_util: Add missing includes. 2018-04-13 23:48:23 -04:00
bunnei f1915d909e renderer_opengl: Use OGLProgram instead of OGLShader. 2018-04-13 23:48:21 -04:00
bunnei 56ee41ebe8 gl_shader_util: Grab latest upstream. 2018-04-13 23:48:21 -04:00
bunnei 83007952ea gl_resource_manager: Grab latest upstream. 2018-04-13 23:48:20 -04:00
bunnei f0f3990064 gl_shader_decompiler: Add skeleton code from Citra for shader analysis. 2018-04-13 23:48:20 -04:00
bunnei 0b49a74e19 shader_bytecode: Add initial module for shader decoding. 2018-04-13 23:48:19 -04:00
James Rowe d8502eb24a Fix clang format issues 2018-04-06 22:00:48 -06:00
Subv cb3ca1d4cf GPU: Assert when finding a texture with a format type other than UNORM. 2018-04-06 20:44:46 -06:00
Subv c63f7aa93b GL: Set up the textures used for each draw call.
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-06 20:44:46 -06:00
Subv 4f1665d365 GL: Bind the textures to the shaders used for drawing. 2018-04-06 20:44:46 -06:00
Subv 8bc63e89e4 GLCache: Specialize the MortonCopy function for the DXT1 texture format.
It will now use the UnswizzleTexture function instead of the MortonCopyPixels128, which doesn't seem to work for textures.
2018-04-06 20:44:46 -06:00
Subv 1e6faaf2b3 GLCache: Implemented GetTextureSurface. 2018-04-06 20:44:45 -06:00
Subv 2a5e90745c GLCache: Support uploading compressed textures to the GPU.
Compressed texture formats like DXT1, DXT2, DXT3, etc will use this to ease the load on the CPU.
2018-04-06 20:44:45 -06:00
Subv 34b212c6a8 GL: Remove remaining references to 3DS-specific pixel formats 2018-04-06 20:44:42 -06:00
Subv 6400a3bb35 RasterizerCache: Remove 3DS-specific pixel formats.
We're only left with RGB8 and DXT1 for now. More will be added as they are needed.
2018-04-06 20:40:24 -06:00
Subv ab6d7991f8 GL: Create the sampler objects when starting up the GL rasterizer. 2018-04-06 20:40:24 -06:00
Subv 232ffe85ad GL: Ported the SamplerInfo struct from citra. 2018-04-06 20:40:24 -06:00
Subv dc26ad9aec GL: Rename PicaTexture to MaxwellTexture. 2018-04-06 20:40:24 -06:00
Subv 3c9cbbca68 GL: Added functions to convert Maxwell tex filters and wrap modes to OpenGL. 2018-04-06 20:40:23 -06:00
Subv d9e067fad6 Textures: Added a helper function to know if a texture is blocklinear or pitch. 2018-04-06 20:40:23 -06:00
N00byKing 63b5de9c40 rasterizer_interface.h: Update from citra to yuzu 2018-04-04 23:07:58 +02:00
N00byKing b84397745f gl_rasterizer_cache.cpp: Update from citra to yuzu 2018-04-04 23:05:10 +02:00
N00byKing 3ca8768d3a gl_rasterizer_cache.h: Update from citra to yuzu 2018-04-04 23:04:24 +02:00
N00byKing 2a2af539f3 renderer_opengl.h: Update from citra to yuzu 2018-04-04 23:03:02 +02:00
Subv 84c9824895 GPU: Use the MacroInterpreter class to execute the GPU macros instead of HLEing them. 2018-04-01 12:07:26 -05:00
Subv 7fe4f9491e GPU: Implemented a gpu macro interpreter.
The Ryujinx macro interpreter and envydis were used as reference.

Macros are programs that are uploaded by the games during boot and can later be called by writing to their method id in a GPU command buffer.
2018-04-01 12:07:26 -05:00