summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer_cache.cpp35
1 files changed, 1 insertions, 34 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
index 4d6fd8b8b..df99dd521 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
@@ -532,23 +532,6 @@ static void ConvertFormatAsNeeded_LoadGLBuffer(std::vector<u8>& data, PixelForma
532 } 532 }
533} 533}
534 534
535/**
536 * Helper function to perform software conversion (as needed) when flushing a buffer to Switch
537 * memory. This is for Maxwell pixel formats that cannot be represented as-is in OpenGL or with
538 * typical desktop GPUs.
539 */
540static void ConvertFormatAsNeeded_FlushGLBuffer(std::vector<u8>& /*data*/, PixelFormat pixel_format,
541 u32 /*width*/, u32 /*height*/) {
542 switch (pixel_format) {
543 case PixelFormat::ASTC_2D_4X4:
544 case PixelFormat::S8Z24:
545 LOG_CRITICAL(Render_OpenGL, "Unimplemented pixel_format={}",
546 static_cast<u32>(pixel_format));
547 UNREACHABLE();
548 break;
549 }
550}
551
552MICROPROFILE_DEFINE(OpenGL_SurfaceLoad, "OpenGL", "Surface Load", MP_RGB(128, 64, 192)); 535MICROPROFILE_DEFINE(OpenGL_SurfaceLoad, "OpenGL", "Surface Load", MP_RGB(128, 64, 192));
553void CachedSurface::LoadGLBuffer() { 536void CachedSurface::LoadGLBuffer() {
554 ASSERT(params.type != SurfaceType::Fill); 537 ASSERT(params.type != SurfaceType::Fill);
@@ -578,23 +561,7 @@ void CachedSurface::LoadGLBuffer() {
578 561
579MICROPROFILE_DEFINE(OpenGL_SurfaceFlush, "OpenGL", "Surface Flush", MP_RGB(128, 192, 64)); 562MICROPROFILE_DEFINE(OpenGL_SurfaceFlush, "OpenGL", "Surface Flush", MP_RGB(128, 192, 64));
580void CachedSurface::FlushGLBuffer() { 563void CachedSurface::FlushGLBuffer() {
581 u8* const dst_buffer = Memory::GetPointer(params.addr); 564 ASSERT_MSG(false, "Unimplemented");
582
583 ASSERT(dst_buffer);
584 ASSERT(gl_buffer.size() ==
585 params.width * params.height * GetGLBytesPerPixel(params.pixel_format));
586
587 MICROPROFILE_SCOPE(OpenGL_SurfaceFlush);
588
589 ConvertFormatAsNeeded_FlushGLBuffer(gl_buffer, params.pixel_format, params.width,
590 params.height);
591
592 if (!params.is_tiled) {
593 std::memcpy(dst_buffer, gl_buffer.data(), params.size_in_bytes);
594 } else {
595 gl_to_morton_fns[static_cast<size_t>(params.pixel_format)](
596 params.width, params.block_height, params.height, gl_buffer, params.addr);
597 }
598} 565}
599 566
600MICROPROFILE_DEFINE(OpenGL_TextureUL, "OpenGL", "Texture Upload", MP_RGB(128, 64, 192)); 567MICROPROFILE_DEFINE(OpenGL_TextureUL, "OpenGL", "Texture Upload", MP_RGB(128, 64, 192));