summaryrefslogtreecommitdiff
path: root/src/video_core
diff options
context:
space:
mode:
authorGravatar bunnei2018-09-11 23:11:36 -0400
committerGravatar GitHub2018-09-11 23:11:36 -0400
commit4a9acc87f9f84d0be3fabb66ec9e02c9849b3880 (patch)
tree833c776001e3539ca1379ae360dfa0bf0e9bfc77 /src/video_core
parentMerge pull request #1289 from FernandoS27/lea_pset (diff)
parentgl_rasterizer: Use ARB_texture_storage. (diff)
downloadyuzu-4a9acc87f9f84d0be3fabb66ec9e02c9849b3880.tar.gz
yuzu-4a9acc87f9f84d0be3fabb66ec9e02c9849b3880.tar.xz
yuzu-4a9acc87f9f84d0be3fabb66ec9e02c9849b3880.zip
Merge pull request #1294 from degasus/optimizations
gl_rasterizer: Use ARB_texture_storage.
Diffstat (limited to 'src/video_core')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer_cache.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
index 29d61eccd..ab681f227 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
@@ -477,30 +477,27 @@ CachedSurface::CachedSurface(const SurfaceParams& params)
477 // Only pre-create the texture for non-compressed textures. 477 // Only pre-create the texture for non-compressed textures.
478 switch (params.target) { 478 switch (params.target) {
479 case SurfaceParams::SurfaceTarget::Texture1D: 479 case SurfaceParams::SurfaceTarget::Texture1D:
480 glTexImage1D(SurfaceTargetToGL(params.target), 0, format_tuple.internal_format, 480 glTexStorage1D(SurfaceTargetToGL(params.target), 1, format_tuple.internal_format,
481 rect.GetWidth(), 0, format_tuple.format, format_tuple.type, nullptr); 481 rect.GetWidth());
482 break; 482 break;
483 case SurfaceParams::SurfaceTarget::Texture2D: 483 case SurfaceParams::SurfaceTarget::Texture2D:
484 glTexImage2D(SurfaceTargetToGL(params.target), 0, format_tuple.internal_format, 484 glTexStorage2D(SurfaceTargetToGL(params.target), 1, format_tuple.internal_format,
485 rect.GetWidth(), rect.GetHeight(), 0, format_tuple.format, 485 rect.GetWidth(), rect.GetHeight());
486 format_tuple.type, nullptr);
487 break; 486 break;
488 case SurfaceParams::SurfaceTarget::Texture3D: 487 case SurfaceParams::SurfaceTarget::Texture3D:
489 case SurfaceParams::SurfaceTarget::Texture2DArray: 488 case SurfaceParams::SurfaceTarget::Texture2DArray:
490 glTexImage3D(SurfaceTargetToGL(params.target), 0, format_tuple.internal_format, 489 glTexStorage3D(SurfaceTargetToGL(params.target), 1, format_tuple.internal_format,
491 rect.GetWidth(), rect.GetHeight(), params.depth, 0, format_tuple.format, 490 rect.GetWidth(), rect.GetHeight(), params.depth);
492 format_tuple.type, nullptr);
493 break; 491 break;
494 default: 492 default:
495 LOG_CRITICAL(Render_OpenGL, "Unimplemented surface target={}", 493 LOG_CRITICAL(Render_OpenGL, "Unimplemented surface target={}",
496 static_cast<u32>(params.target)); 494 static_cast<u32>(params.target));
497 UNREACHABLE(); 495 UNREACHABLE();
498 glTexImage2D(GL_TEXTURE_2D, 0, format_tuple.internal_format, rect.GetWidth(), 496 glTexStorage2D(GL_TEXTURE_2D, 1, format_tuple.internal_format, rect.GetWidth(),
499 rect.GetHeight(), 0, format_tuple.format, format_tuple.type, nullptr); 497 rect.GetHeight());
500 } 498 }
501 } 499 }
502 500
503 glTexParameteri(SurfaceTargetToGL(params.target), GL_TEXTURE_MAX_LEVEL, 0);
504 glTexParameteri(SurfaceTargetToGL(params.target), GL_TEXTURE_MIN_FILTER, GL_LINEAR); 501 glTexParameteri(SurfaceTargetToGL(params.target), GL_TEXTURE_MIN_FILTER, GL_LINEAR);
505 glTexParameteri(SurfaceTargetToGL(params.target), GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 502 glTexParameteri(SurfaceTargetToGL(params.target), GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
506 glTexParameteri(SurfaceTargetToGL(params.target), GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 503 glTexParameteri(SurfaceTargetToGL(params.target), GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);