diff options
| author | bunnei <bunneidev@gmail.com> | 2020-12-29 23:20:09 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-29 23:20:09 -0800 |
| commit | d5fe722a30947c5c808717ad8940077e95a3a81c (patch) | |
| tree | f6f5d6d6379b0404147969e7d1f548ed3d49ca01 /src/video_core/renderer_opengl/util_shaders.h | |
| parent | 85cfd96f62177338de78d5ca6d7fa4eda0a3728b (diff) | |
| parent | 9764c13d6d2977903f407761b27d847c0056e1c4 (diff) | |
Merge pull request #4967 from ReinUsesLisp/new-texcache
video_core/texture_cache: Rewrite the texture cache
Diffstat (limited to 'src/video_core/renderer_opengl/util_shaders.h')
| -rw-r--r-- | src/video_core/renderer_opengl/util_shaders.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/util_shaders.h b/src/video_core/renderer_opengl/util_shaders.h new file mode 100644 index 000000000..359997255 --- /dev/null +++ b/src/video_core/renderer_opengl/util_shaders.h @@ -0,0 +1,51 @@ +// Copyright 2020 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <span> + +#include <glad/glad.h> + +#include "common/common_types.h" +#include "video_core/renderer_opengl/gl_resource_manager.h" +#include "video_core/texture_cache/types.h" + +namespace OpenGL { + +class Image; +class ImageBufferMap; +class ProgramManager; + +class UtilShaders { +public: + explicit UtilShaders(ProgramManager& program_manager); + ~UtilShaders(); + + void BlockLinearUpload2D(Image& image, const ImageBufferMap& map, size_t buffer_offset, + std::span<const VideoCommon::SwizzleParameters> swizzles); + + void BlockLinearUpload3D(Image& image, const ImageBufferMap& map, size_t buffer_offset, + std::span<const VideoCommon::SwizzleParameters> swizzles); + + void PitchUpload(Image& image, const ImageBufferMap& map, size_t buffer_offset, + std::span<const VideoCommon::SwizzleParameters> swizzles); + + void CopyBC4(Image& dst_image, Image& src_image, + std::span<const VideoCommon::ImageCopy> copies); + +private: + ProgramManager& program_manager; + + OGLBuffer swizzle_table_buffer; + + OGLProgram block_linear_unswizzle_2d_program; + OGLProgram block_linear_unswizzle_3d_program; + OGLProgram pitch_unswizzle_program; + OGLProgram copy_bc4_program; +}; + +GLenum StoreFormat(u32 bytes_per_block); + +} // namespace OpenGL |
