From 214f104fda39498fa3fe4f4bbfa87d41f134f9a9 Mon Sep 17 00:00:00 2001 From: BreadFish64 Date: Wed, 18 Mar 2020 22:31:52 -0500 Subject: [PATCH] video_core: move buffer resize before GLES check preventing the assert in FlushGLBuffer --- .../renderer_opengl/gl_rasterizer_cache.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp index 2b35636fc..dfb061e0a 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp @@ -886,6 +886,12 @@ void CachedSurface::DownloadGLTexture(const Common::Rectangle& rect, GLuint return; } + MICROPROFILE_SCOPE(OpenGL_TextureDL); + + if (gl_buffer.empty()) { + gl_buffer.resize(width * height * GetGLBytesPerPixel(pixel_format)); + } + if (GLES) { if (type == SurfaceType::Depth || type == SurfaceType::DepthStencil) { // TODO(bunnei): This is unsupported on GLES right now, fixme @@ -894,12 +900,6 @@ void CachedSurface::DownloadGLTexture(const Common::Rectangle& rect, GLuint } } - MICROPROFILE_SCOPE(OpenGL_TextureDL); - - if (gl_buffer.empty()) { - gl_buffer.resize(width * height * GetGLBytesPerPixel(pixel_format)); - } - OpenGLState state = OpenGLState::GetCurState(); OpenGLState prev_state = state; SCOPE_EXIT({ prev_state.Apply(); }); @@ -1925,7 +1925,6 @@ Surface RasterizerCacheOpenGL::CreateSurface(const SurfaceParams& params) { surface->texture.Create(); - surface->gl_buffer.resize(0); surface->invalid_regions.insert(surface->GetInterval()); AllocateSurfaceTexture(surface->texture.handle, GetFormatTuple(surface->pixel_format), surface->GetScaledWidth(), surface->GetScaledHeight());