diff options
| author | 2018-09-11 21:59:40 +0200 | |
|---|---|---|
| committer | 2018-09-11 22:18:46 +0200 | |
| commit | 3e973bc4c6c04c61df69518ef428c7cf0d18493d (patch) | |
| tree | 8b4bbb8b3f9b9d5b00d4eddbfe1aed64652e2e5f /src/video_core | |
| parent | Merge pull request #1291 from lioncash/default (diff) | |
| download | yuzu-3e973bc4c6c04c61df69518ef428c7cf0d18493d.tar.gz yuzu-3e973bc4c6c04c61df69518ef428c7cf0d18493d.tar.xz yuzu-3e973bc4c6c04c61df69518ef428c7cf0d18493d.zip | |
gl_rasterizer: Use ARB_texture_storage.
It allows us to use texture views and it reduces the overhead within the GPU driver.
But it disallows us to reallocate the texture, but we don't do so anyways.
In the end, it is the new way to allocate textures, so there is no need to use the old way.
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer_cache.cpp | 19 |
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); |