diff options
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer_cache.cpp | 19 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer_cache.h | 20 | 
2 files changed, 13 insertions, 26 deletions
| diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp index d54ddf643..10e9dc5c2 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp @@ -47,26 +47,20 @@ struct FormatTuple {      u32 compression_factor;  }; -static constexpr std::array<FormatTuple, 1> fb_format_tuples = {{ -    {GL_RGBA8, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, false, 1}, // RGBA8 -}}; -  static constexpr std::array<FormatTuple, 2> tex_format_tuples = {{      {GL_RGBA8, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, false, 1},                   // ABGR8      {GL_COMPRESSED_RGB_S3TC_DXT1_EXT, GL_RGB, GL_UNSIGNED_INT_8_8_8_8, true, 16}, // DXT1  }};  static const FormatTuple& GetFormatTuple(PixelFormat pixel_format) { +    using Tegra::Texture::ComponentType;      const SurfaceType type = SurfaceParams::GetFormatType(pixel_format); -    if (type == SurfaceType::Color) { -        ASSERT(static_cast<size_t>(pixel_format) < fb_format_tuples.size()); -        return fb_format_tuples[static_cast<unsigned int>(pixel_format)]; +    if (type == SurfaceType::ColorTexture) { +        ASSERT(static_cast<size_t>(pixel_format) < tex_format_tuples.size()); +        return tex_format_tuples[static_cast<unsigned int>(pixel_format)];      } else if (type == SurfaceType::Depth || type == SurfaceType::DepthStencil) {          // TODO(Subv): Implement depth formats          ASSERT_MSG(false, "Unimplemented"); -    } else if (type == SurfaceType::Texture) { -        ASSERT(static_cast<size_t>(pixel_format) < tex_format_tuples.size()); -        return tex_format_tuples[static_cast<unsigned int>(pixel_format)];      }      UNREACHABLE(); @@ -180,7 +174,7 @@ static bool BlitTextures(GLuint src_tex, const MathUtil::Rectangle<u32>& src_rec      u32 buffers = 0; -    if (type == SurfaceType::Color || type == SurfaceType::Texture) { +    if (type == SurfaceType::ColorTexture) {          glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, src_tex,                                 0);          glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, 0, @@ -658,7 +652,7 @@ void CachedSurface::DownloadGLTexture(const MathUtil::Rectangle<u32>& rect, GLui          state.draw.read_framebuffer = read_fb_handle;          state.Apply(); -        if (type == SurfaceType::Color || type == SurfaceType::Texture) { +        if (type == SurfaceType::ColorTexture) {              glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,                                     texture.handle, 0);              glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, @@ -1300,7 +1294,6 @@ void RasterizerCacheOpenGL::InvalidateRegion(VAddr addr, u64 size, const Surface      const SurfaceInterval invalid_interval(addr, addr + size);      if (region_owner != nullptr) { -        ASSERT(region_owner->type != SurfaceType::Texture);          ASSERT(addr >= region_owner->addr && addr + size <= region_owner->end);          // Surfaces can't have a gap          ASSERT(region_owner->width == region_owner->stride); diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.h b/src/video_core/renderer_opengl/gl_rasterizer_cache.h index 0f8f14404..434cd2277 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.h +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.h @@ -58,12 +58,11 @@ struct SurfaceParams {      };      enum class SurfaceType { -        Color = 0, -        Texture = 1, -        Depth = 2, -        DepthStencil = 3, -        Fill = 4, -        Invalid = 5 +        ColorTexture = 0, +        Depth = 1, +        DepthStencil = 2, +        Fill = 3, +        Invalid = 4,      };      static constexpr unsigned int GetFormatBpp(PixelFormat format) { @@ -131,8 +130,7 @@ struct SurfaceParams {          SurfaceType a_type = GetFormatType(pixel_format_a);          SurfaceType b_type = GetFormatType(pixel_format_b); -        if ((a_type == SurfaceType::Color || a_type == SurfaceType::Texture) && -            (b_type == SurfaceType::Color || b_type == SurfaceType::Texture)) { +        if (a_type == SurfaceType::ColorTexture && b_type == SurfaceType::ColorTexture) {              return true;          } @@ -148,12 +146,8 @@ struct SurfaceParams {      }      static SurfaceType GetFormatType(PixelFormat pixel_format) { -        if ((unsigned int)pixel_format <= static_cast<unsigned int>(PixelFormat::ABGR8)) { -            return SurfaceType::Color; -        } -          if ((unsigned int)pixel_format <= static_cast<unsigned int>(PixelFormat::DXT1)) { -            return SurfaceType::Texture; +            return SurfaceType::ColorTexture;          }          // TODO(Subv): Implement the other formats | 
