kovidgoyal/kitty · warning
WARNING: Your system's OpenGL implementation does not have g
Error message
WARNING: Your system's OpenGL implementation does not have glCopyImageSubData, falling back to a slower implementation
What it means
The OpenGL implementation lacks ARB_copy_image (glCopyImageSubData), so kitty falls back to a slow CPU roundtrip copy when growing sprite (glyph) textures. Warned once per process; rendering is correct, only performance suffers.
Source
Thrown at kitty/shaders.c:162
static void
copy_32bit_texture(GLuint old_texture, GLuint new_texture, GLenum texture_type) {
// requires new texture to be at least as big as old texture. Assumes textures are 32bits per pixel
GLint width, height, layers;
glBindTexture(texture_type, old_texture);
glGetTexLevelParameteriv(texture_type, 0, GL_TEXTURE_WIDTH, &width);
glGetTexLevelParameteriv(texture_type, 0, GL_TEXTURE_HEIGHT, &height);
glGetTexLevelParameteriv(texture_type, 0, GL_TEXTURE_DEPTH, &layers);
if (GLAD_GL_ARB_copy_image) {
glCopyImageSubData(old_texture, texture_type, 0, 0, 0, 0, new_texture, texture_type, 0, 0, 0, 0, width, height, layers);
return;
}
static bool copy_image_warned = false;
// ARB_copy_image not available, do a slow roundtrip copy
if (!copy_image_warned) {
copy_image_warned = true;
log_error("WARNING: Your system's OpenGL implementation does not have glCopyImageSubData, falling back to a slower implementation");
}
GLint internal_format;
glGetTexLevelParameteriv(texture_type, 0, GL_TEXTURE_INTERNAL_FORMAT, &internal_format);
GLenum format, type;
switch (internal_format) {
case GL_R8UI:
case GL_R8I:
case GL_R16UI:
case GL_R16I:
case GL_R32UI:
case GL_R32I:
case GL_RG8UI:
case GL_RG8I:
case GL_RG16UI:
case GL_RG16I:
case GL_RG32UI:
case GL_RG32I:View on GitHub (pinned to 6d5d0c4406)
Solutions
- Safe to ignore - performance warning only
- Update GPU drivers / Mesa to a version with ARB_copy_image
- Verify with: glxinfo | grep ARB_copy_image; prefer real hardware GL
- Enable 3D acceleration in VMs
Defensive patterns
Strategy: fallback
Validate before calling
glxinfo | grep GL_ARB_copy_image # verify driver capability
Prevention
- Use hardware GL with up-to-date drivers
- Enable 3D acceleration in VMs
When it happens
Trigger: copy_32bit_texture during sprite texture reallocation on GL stacks without GL_ARB_copy_image - old Mesa drivers, software rasterizers (llvmpipe), some VM GPUs.
Common situations: Running kitty in a VM, over remote GLX, with llvmpipe/swrast, or on older embedded drivers.
Related errors
- [glfw error %d]: %s
- WARNING: Your GPU driver does not support 16bit textures as
- This must be run as kitten ask
- This should be run as kitten broadcast
- This must be run as kitten choose-files
AI-assisted analysis of kovidgoyal/kitty@6d5d0c4406 (2026-08-27).
Data as JSON: /api/errors/8157e135177bd5bc.
Report an issue: GitHub.