Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | shader/texture: Join separate image and sampler pairs offline | ReinUsesLisp | 2020-06-05 | 1 | -0/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | ||||
* | shader/registry: Store graphics and compute metadata | ReinUsesLisp | 2020-03-09 | 1 | -1/+3 |
| | | | | | Store information GLSL forces us to provide but it's dynamic state in hardware (workgroup sizes, primitive topology, shared memory size). | ||||
* | video_core: Rename "const buffer locker" to "registry" | ReinUsesLisp | 2020-03-09 | 1 | -1/+1 |
| | |||||
* | gl_shader_cache: Rework shader cache and remove post-specializations | ReinUsesLisp | 2020-03-09 | 1 | -128/+21 |
| | | | | | Instead of pre-specializing shaders and then post-specializing them, drop the later and only "specialize" the shader while decoding it. | ||||
* | Shader_IR: Store Bound buffer on Shader Usage | Fernando Sahmkow | 2020-01-24 | 1 | -0/+1 |
| | |||||
* | gl_shader_cache: Remove dynamic BaseBinding specialization | ReinUsesLisp | 2019-11-23 | 1 | -37/+7 |
| | |||||
* | video_core: Unify ProgramType and ShaderStage into ShaderType | ReinUsesLisp | 2019-11-23 | 1 | -13/+13 |
| | |||||
* | gl_shader_cache: Specialize local memory size for compute shaders | ReinUsesLisp | 2019-11-23 | 1 | -7/+9 |
| | | | | | Local memory size in compute shaders was stubbed with an arbitary size. This commit specializes local memory size from guest GPU parameters. | ||||
* | gl_shader_cache: Specialize shared memory size | ReinUsesLisp | 2019-11-23 | 1 | -7/+11 |
| | | | | | Shared memory was being declared with an undefined size. Specialize from guest GPU parameters the compute shader's shared memory size. | ||||
* | gl_shader_cache: Specialize shader workgroup | ReinUsesLisp | 2019-11-23 | 1 | -13/+33 |
| | | | | | | Drop the usage of ARB_compute_variable_group_size and specialize compute shaders instead. This permits compute to run on AMD and Intel proprietary drivers. | ||||
* | shader/texture: Deduce texture buffers from locker | ReinUsesLisp | 2019-11-23 | 1 | -6/+2 |
| | | | | | Instead of specializing shaders to separate texture buffers from 1D textures, use the locker to deduce them while they are being decoded. | ||||
* | gl_shader_disk_cache: Store and load fast BRX | ReinUsesLisp | 2019-10-25 | 1 | -1/+11 |
| | |||||
* | gl_shader_decompiler: Move entries to a separate function | ReinUsesLisp | 2019-10-25 | 1 | -28/+4 |
| | |||||
* | gl_shader_disk_cache: Properly ignore existing cache | ReinUsesLisp | 2019-10-06 | 1 | -4/+1 |
| | | | | | Previously old entries where appended to the file even if the shader cache was ignored at boot. Address that issue. | ||||
* | gl_rasterizer: Implement compute shaders | ReinUsesLisp | 2019-07-15 | 1 | -27/+6 |
| | |||||
* | gl_shader_disk_cache: Address feedback | ReinUsesLisp | 2019-06-24 | 1 | -2/+3 |
| | |||||
* | gl_shader_decompiler: Implement image binding settings | ReinUsesLisp | 2019-06-21 | 1 | -15/+9 |
| | |||||
* | gl_rasterizer: Track texture buffer usage | ReinUsesLisp | 2019-06-21 | 1 | -13/+40 |
| | |||||
* | gl_shader_cache: Fix clang strict standard build issues | ReinUsesLisp | 2019-05-21 | 1 | -1/+6 |
| | |||||
* | gl_shader_disk_cache: in-class initialize virtual file offset of ShaderDiskCacheOpenGL | Lioncash | 2019-05-19 | 1 | -3/+2 |
| | | | | | | Given the offset is assigned a fixed value in the constructor, we can just assign it directly and get rid of the need to write the name of the variable again in the constructor initializer list. | ||||
* | gl_shader_disk_cache: Default ShaderDiskCacheOpenGL's destructor in the cpp file | Lioncash | 2019-05-19 | 1 | -0/+1 |
| | | | | | | Given the disk shader cache contains non-trivial types, we should default it in the cpp file in order to prevent inlining of the complex destruction logic. | ||||
* | gl_shader_disk_cache: Make hash specializations noexcept | Lioncash | 2019-05-19 | 1 | -2/+2 |
| | | | | | | The standard library expects hash specializations that don't throw exceptions. Make this explicit in the type to allow selection of better code paths if possible in implementations. | ||||
* | gl_shader_disk_cache: Special-case boolean handling | Lioncash | 2019-05-19 | 1 | -1/+17 |
| | | | | | | | | | | | | | Booleans don't have a guaranteed size, but we still want to have them integrate into the disk cache system without needing to actually use a different type. We can do this by supplying non-template overloads for the bool type. Non-template overloads always have precedence during function resolution, so this is safe to provide. This gets rid of the need to smatter ternary conditionals, as well as the need to use u8 types to store the value in. | ||||
* | gl_shader_disk_cache: Use VectorVfsFile for the virtual precompiled shader cache file | unknown | 2019-04-23 | 1 | -8/+45 |
| | |||||
* | gl_shader_disk_cache: Remove per shader compression | unknown | 2019-04-23 | 1 | -1/+0 |
| | |||||
* | gl_shader_disk_cache: Use unordered containers | ReinUsesLisp | 2019-02-07 | 1 | -37/+45 |
| | |||||
* | gl_shader_disk_cache: Pass core system as argument and guard against games without title ids | ReinUsesLisp | 2019-02-07 | 1 | -1/+12 |
| | |||||
* | gl_shader_disk_cache: Guard reads and writes against failure | ReinUsesLisp | 2019-02-07 | 1 | -6/+24 |
| | |||||
* | gl_shader_disk_cache: Address miscellaneous feedback | ReinUsesLisp | 2019-02-07 | 1 | -25/+29 |
| | |||||
* | gl_shader_disk_cache: Pass return values returning instead of by parameters | ReinUsesLisp | 2019-02-07 | 1 | -7/+10 |
| | |||||
* | gl_shader_disk_cache: Save GLSL and entries into the precompiled file | ReinUsesLisp | 2019-02-07 | 1 | -7/+14 |
| | |||||
* | gl_shader_disk_cache: Add transferable cache invalidation | ReinUsesLisp | 2019-02-07 | 1 | -0/+3 |
| | |||||
* | gl_shader_disk_cache: Add precompiled load | ReinUsesLisp | 2019-02-07 | 1 | -0/+6 |
| | |||||
* | gl_shader_disk_cache: Add precompiled save | ReinUsesLisp | 2019-02-07 | 1 | -0/+14 |
| | |||||
* | gl_shader_disk_cache: Add transferable load | ReinUsesLisp | 2019-02-07 | 1 | -0/+4 |
| | |||||
* | gl_shader_disk_cache: Add transferable stores | ReinUsesLisp | 2019-02-07 | 1 | -0/+102 |
| | |||||
* | gl_shader_disk_cache: Add ShaderDiskCacheOpenGL class and helpers | ReinUsesLisp | 2019-02-07 | 1 | -0/+24 |
| | |||||
* | gl_shader_disk_cache: Add file and move BaseBindings declaration | ReinUsesLisp | 2019-02-07 | 1 | -0/+41 |