diff options
| -rw-r--r-- | src/video_core/renderer_opengl/gl_texture_cache.cpp | 26 | ||||
| -rw-r--r-- | src/video_core/texture_cache/texture_cache.h | 3 | 
2 files changed, 26 insertions, 3 deletions
| diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp index 23948feed..a2c1599f7 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp @@ -341,6 +341,20 @@ void ApplySwizzle(GLuint handle, PixelFormat format, std::array<SwizzleSource, 4  [[nodiscard]] CopyOrigin MakeCopyOrigin(VideoCommon::Offset3D offset,                                          VideoCommon::SubresourceLayers subresource, GLenum target) {      switch (target) { +    case GL_TEXTURE_1D: +        return CopyOrigin{ +            .level = static_cast<GLint>(subresource.base_level), +            .x = static_cast<GLint>(offset.x), +            .y = static_cast<GLint>(0), +            .z = static_cast<GLint>(0), +        }; +    case GL_TEXTURE_1D_ARRAY: +        return CopyOrigin{ +            .level = static_cast<GLint>(subresource.base_level), +            .x = static_cast<GLint>(offset.x), +            .y = static_cast<GLint>(0), +            .z = static_cast<GLint>(subresource.base_layer), +        };      case GL_TEXTURE_2D_ARRAY:      case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:          return CopyOrigin{ @@ -366,6 +380,18 @@ void ApplySwizzle(GLuint handle, PixelFormat format, std::array<SwizzleSource, 4                                          VideoCommon::SubresourceLayers dst_subresource,                                          GLenum target) {      switch (target) { +    case GL_TEXTURE_1D: +        return CopyRegion{ +            .width = static_cast<GLsizei>(extent.width), +            .height = static_cast<GLsizei>(1), +            .depth = static_cast<GLsizei>(1), +        }; +    case GL_TEXTURE_1D_ARRAY: +        return CopyRegion{ +            .width = static_cast<GLsizei>(extent.width), +            .height = static_cast<GLsizei>(1), +            .depth = static_cast<GLsizei>(dst_subresource.num_layers), +        };      case GL_TEXTURE_2D_ARRAY:      case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:          return CopyRegion{ diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index c7cfd02b6..d8dbd3824 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -1057,9 +1057,6 @@ ImageId TextureCache<P>::JoinImages(const ImageInfo& info, GPUVAddr gpu_addr, VA      std::vector<ImageId> right_aliased_ids;      std::vector<ImageId> bad_overlap_ids;      ForEachImageInRegion(cpu_addr, size_bytes, [&](ImageId overlap_id, ImageBase& overlap) { -        if (info.type != overlap.info.type) { -            return; -        }          if (info.type == ImageType::Linear) {              if (info.pitch == overlap.info.pitch && gpu_addr == overlap.gpu_addr) {                  // Alias linear images with the same pitch | 
