From aff68a183a4b33653750acc57a021fd7ed6c555c Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Thu, 12 Aug 2021 16:03:25 +0300 Subject: [PATCH] Use DSA for TextureCube if available --- source/core/texturecube.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/source/core/texturecube.cpp b/source/core/texturecube.cpp index 01820fa8..93faa370 100644 --- a/source/core/texturecube.cpp +++ b/source/core/texturecube.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -83,8 +84,11 @@ void TextureCube::allocate(unsigned level) if(ARB_texture_storage) { - BindRestore _bind(this); - glTexStorage2D(target, levels, storage_fmt, size, size); + Conditional _bind(!ARB_direct_state_access, this); + if(ARB_direct_state_access) + glTextureStorage2D(id, levels, storage_fmt, size, size); + else + glTexStorage2D(target, levels, storage_fmt, size, size); apply_swizzle(); allocated |= (64< _bind(!ARB_direct_state_acess, this); allocate(level); PixelComponents comp = get_components(storage_fmt); GLenum type = get_gl_type(get_component_type(storage_fmt)); - glTexSubImage2D(face, level, x, y, wd, ht, comp, type, data); + if(ARB_direct_state_access) + glTextureSubImage3D(id, level, x, y, get_face_index(face), wd, ht, 1, comp, type, data); + else + glTexSubImage2D(face, level, x, y, wd, ht, comp, type, data); if(auto_gen_mipmap && level==0) generate_mipmap(); -- 2.43.0