diff options
| author | Rodrigo Locatti <reinuseslisp@airmail.cc> | 2021-03-09 02:47:51 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-09 02:47:51 -0300 |
| commit | daf5c5060b4b2e4aa985fbfe9724eb99c51bbd71 (patch) | |
| tree | aaa1cc96298e6e114cb72dfb517f7a000d2a467d /src/video_core/renderer_opengl/util_shaders.h | |
| parent | d1a7b2eca74ec3895df8cd046a36837ec2d70c64 (diff) | |
| parent | 5213f702307e43520ad5f264e613acdfec597077 (diff) | |
Merge pull request #5891 from ameerj/bgra-ogl
renderer_opengl: Use compute shaders to swizzle BGR textures on copy
Diffstat (limited to 'src/video_core/renderer_opengl/util_shaders.h')
| -rw-r--r-- | src/video_core/renderer_opengl/util_shaders.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/util_shaders.h b/src/video_core/renderer_opengl/util_shaders.h index 7b1d16b09..93b009743 100644 --- a/src/video_core/renderer_opengl/util_shaders.h +++ b/src/video_core/renderer_opengl/util_shaders.h @@ -19,6 +19,22 @@ class ProgramManager; struct ImageBufferMap; +class Bgr565CopyPass { +public: + Bgr565CopyPass() = default; + ~Bgr565CopyPass() = default; + + void Execute(const Image& dst_image, const Image& src_image, + const VideoCommon::ImageCopy& copy); + +private: + [[nodiscard]] bool CopyBufferCreationNeeded(const VideoCommon::ImageCopy& copy); + void CreateNewCopyBuffer(const VideoCommon::ImageCopy& copy, GLenum target, GLuint format); + + OGLBuffer bgr16_pbo; + size_t bgr16_pbo_size{}; +}; + class UtilShaders { public: explicit UtilShaders(ProgramManager& program_manager); @@ -36,6 +52,9 @@ public: void CopyBC4(Image& dst_image, Image& src_image, std::span<const VideoCommon::ImageCopy> copies); + void CopyBGR(Image& dst_image, Image& src_image, + std::span<const VideoCommon::ImageCopy> copies); + private: ProgramManager& program_manager; @@ -44,7 +63,10 @@ private: OGLProgram block_linear_unswizzle_2d_program; OGLProgram block_linear_unswizzle_3d_program; OGLProgram pitch_unswizzle_program; + OGLProgram copy_bgra_program; OGLProgram copy_bc4_program; + + Bgr565CopyPass bgr_copy_pass; }; GLenum StoreFormat(u32 bytes_per_block); |
