diff options
| author | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-02-13 15:50:12 -0500 |
|---|---|---|
| committer | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-03-13 12:16:03 -0500 |
| commit | 2985e5e94c82febcf215feb0023f4184b38bb24a (patch) | |
| tree | 7b7cd8be3605560707a74a74c281577920a24248 /src/video_core/renderer_opengl/util_shaders.h | |
| parent | 3b85ac2ac4d72ca4acf83ef9642b9a42e912993e (diff) | |
renderer_opengl: Accelerate ASTC texture decoding with a compute shader
ASTC texture decoding is currently handled by a CPU decoder for GPU's without native ASTC decoding support (most desktop GPUs). This is the cause for noticeable performance degradation in titles which use the format extensively.
This commit adds support to accelerate ASTC decoding using a compute shader on OpenGL for GPUs without native support.
Diffstat (limited to 'src/video_core/renderer_opengl/util_shaders.h')
| -rw-r--r-- | src/video_core/renderer_opengl/util_shaders.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/util_shaders.h b/src/video_core/renderer_opengl/util_shaders.h index 93b009743..08a1cb9b2 100644 --- a/src/video_core/renderer_opengl/util_shaders.h +++ b/src/video_core/renderer_opengl/util_shaders.h @@ -40,6 +40,11 @@ public: explicit UtilShaders(ProgramManager& program_manager); ~UtilShaders(); + void MakeBuffers(); + + void ASTCDecode(Image& image, const ImageBufferMap& map, + std::span<const VideoCommon::SwizzleParameters> swizzles); + void BlockLinearUpload2D(Image& image, const ImageBufferMap& map, std::span<const VideoCommon::SwizzleParameters> swizzles); @@ -59,7 +64,13 @@ private: ProgramManager& program_manager; OGLBuffer swizzle_table_buffer; + OGLBuffer astc_encodings_buffer; + OGLBuffer replicate_6_to_8_buffer; + OGLBuffer replicate_7_to_8_buffer; + OGLBuffer replicate_8_to_8_buffer; + OGLBuffer replicate_byte_to_16_buffer; + OGLProgram astc_decoder_program; OGLProgram block_linear_unswizzle_2d_program; OGLProgram block_linear_unswizzle_3d_program; OGLProgram pitch_unswizzle_program; |
