diff --git a/libobs-opengl/gl-texture2d.c b/libobs-opengl/gl-texture2d.c index fc1c64672..d7e154409 100644 --- a/libobs-opengl/gl-texture2d.c +++ b/libobs-opengl/gl-texture2d.c @@ -106,6 +106,26 @@ gs_texture_t *device_texture_create(gs_device_t *device, uint32_t width, goto fail; if (!upload_texture_2d(tex, data)) goto fail; + } else { + if (!gl_bind_texture(GL_TEXTURE_2D, tex->base.texture)) + goto fail; + + uint32_t row_size = + tex->width * gs_get_format_bpp(tex->base.format); + uint32_t tex_size = tex->height * row_size / 8; + bool compressed = gs_is_compressed_format(tex->base.format); + bool did_init = gl_init_face(GL_TEXTURE_2D, tex->base.gl_type, + 1, tex->base.gl_format, + tex->base.gl_internal_format, + compressed, tex->width, + tex->height, tex_size, NULL); + did_init = + gl_tex_param_i(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0); + + bool did_unbind = + gl_bind_texture(GL_TEXTURE_2D, tex->base.texture); + if (!did_init || !did_unbind) + goto fail; } return (gs_texture_t *)tex;