Bug#316012: xlibmesa-gl-dev: glTexImage2D doesn't accept NULL as texture data (as GL 1.1 accepts)
Package: xlibmesa-gl-dev
Version: 4.3.0.dfsg.1-14
Severity: normal
glTexImage2D segfaults when NULL is passed as texture data, this is accepted in
OpenGL >= 1.1:
" In GL version 1.1 or greater, pixels may be a NULL pointer. In this case
texture memory is allocated to accommodate a texture of width width and
height height. You can then download subtextures to initialize this texture
memory. The image is undefined if the user tries to apply an uninitialized
portion of the texture image to a primitive. "
Note, this was tested only on a Voodoo 3000 and the tdfx driver. glxinfo
output is attached and also segfaulting test.
-- System Information:
Debian Release: testing/unstable
APT prefers oldstable
APT policy: (500, 'oldstable'), (500, 'unstable')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.10-1-k7
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Versions of packages xlibmesa-gl-dev depends on:
ii libc6-dev [libc-dev] 2.3.2.ds1-22 GNU C Library: Development Librari
ii libx11-dev 4.3.0.dfsg.1-14 X Window System protocol client li
ii libxext-dev 4.3.0.dfsg.1-14 X Window System miscellaneous exte
ii x-dev 4.3.0.dfsg.1-14 X protocol development files
ii xfree86-common 4.3.0.dfsg.1-14 X Window System (XFree86) infrastr
ii xlibmesa-gl 4.3.0.dfsg.1-14 Mesa 3D graphics library [XFree86]
xlibmesa-gl-dev recommends no packages.
-- no debconf information
name of display: :0.0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context
client glx vendor string: SGI
client glx version string: 1.2
client glx extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context
GLX extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context
OpenGL vendor string: VA Linux Systems, Inc.
OpenGL renderer string: Mesa DRI 20020221 Voodoo3 x86/MMX/3DNow!/SSE
OpenGL version string: 1.2 Mesa 4.0.4
OpenGL extensions:
GL_ARB_multitexture, GL_ARB_transpose_matrix, GL_EXT_abgr, GL_EXT_bgra,
GL_EXT_clip_volume_hint, GL_EXT_compiled_vertex_array,
GL_EXT_packed_pixels, GL_EXT_paletted_texture, GL_EXT_polygon_offset,
GL_EXT_rescale_normal, GL_EXT_texture3D, GL_EXT_texture_env_add,
GL_EXT_texture_object, GL_EXT_texture_lod_bias, GL_EXT_vertex_array,
GL_HP_occlusion_test, GL_IBM_rasterpos_clip, GL_MESA_window_pos,
GL_NV_texgen_reflection
glu version: 1.3
glu extensions:
GLU_EXT_nurbs_tessellator, GLU_EXT_object_space_tess
visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a bf th cl r g b a ns b eat
----------------------------------------------------------------------
0x23 16 tc 1 16 0 r . . 5 6 5 0 0 0 0 0 0 0 0 0 0 None
0x24 16 tc 1 16 0 r . . 5 6 5 0 0 0 8 0 0 0 0 0 0 Slow
0x25 16 tc 1 16 0 r . . 5 6 5 0 0 0 0 16 16 16 0 0 0 Slow
0x26 16 tc 1 16 0 r . . 5 6 5 0 0 0 8 16 16 16 0 0 0 Slow
0x27 16 tc 1 16 0 r . . 5 6 5 0 0 16 0 0 0 0 0 0 0 None
0x28 16 tc 1 16 0 r . . 5 6 5 0 0 16 8 0 0 0 0 0 0 Slow
0x29 16 tc 1 16 0 r . . 5 6 5 0 0 16 0 16 16 16 0 0 0 Slow
0x2a 16 tc 1 16 0 r . . 5 6 5 0 0 16 8 16 16 16 0 0 0 Slow
0x2b 16 tc 1 16 0 r y . 5 6 5 0 0 0 0 0 0 0 0 0 0 None
0x2c 16 tc 1 16 0 r y . 5 6 5 0 0 0 8 0 0 0 0 0 0 Slow
0x2d 16 tc 1 16 0 r y . 5 6 5 0 0 0 0 16 16 16 0 0 0 Slow
0x2e 16 tc 1 16 0 r y . 5 6 5 0 0 0 8 16 16 16 0 0 0 Slow
0x2f 16 tc 1 16 0 r y . 5 6 5 0 0 16 0 0 0 0 0 0 0 None
0x30 16 tc 1 16 0 r y . 5 6 5 0 0 16 8 0 0 0 0 0 0 Slow
0x31 16 tc 1 16 0 r y . 5 6 5 0 0 16 0 16 16 16 0 0 0 Slow
0x32 16 tc 1 16 0 r y . 5 6 5 0 0 16 8 16 16 16 0 0 0 Slow
0x33 16 dc 1 16 0 r . . 5 6 5 0 0 0 0 0 0 0 0 0 0 None
0x34 16 dc 1 16 0 r . . 5 6 5 0 0 0 8 0 0 0 0 0 0 Slow
0x35 16 dc 1 16 0 r . . 5 6 5 0 0 0 0 16 16 16 0 0 0 Slow
0x36 16 dc 1 16 0 r . . 5 6 5 0 0 0 8 16 16 16 0 0 0 Slow
0x37 16 dc 1 16 0 r . . 5 6 5 0 0 16 0 0 0 0 0 0 0 None
0x38 16 dc 1 16 0 r . . 5 6 5 0 0 16 8 0 0 0 0 0 0 Slow
0x39 16 dc 1 16 0 r . . 5 6 5 0 0 16 0 16 16 16 0 0 0 Slow
0x3a 16 dc 1 16 0 r . . 5 6 5 0 0 16 8 16 16 16 0 0 0 Slow
0x3b 16 dc 1 16 0 r y . 5 6 5 0 0 0 0 0 0 0 0 0 0 None
0x3c 16 dc 1 16 0 r y . 5 6 5 0 0 0 8 0 0 0 0 0 0 Slow
0x3d 16 dc 1 16 0 r y . 5 6 5 0 0 0 0 16 16 16 0 0 0 Slow
0x3e 16 dc 1 16 0 r y . 5 6 5 0 0 0 8 16 16 16 0 0 0 Slow
0x3f 16 dc 1 16 0 r y . 5 6 5 0 0 16 0 0 0 0 0 0 0 None
0x40 16 dc 1 16 0 r y . 5 6 5 0 0 16 8 0 0 0 0 0 0 Slow
0x41 16 dc 1 16 0 r y . 5 6 5 0 0 16 0 16 16 16 0 0 0 Slow
0x42 16 dc 1 16 0 r y . 5 6 5 0 0 16 8 16 16 16 0 0 0 Slow
#include <GL/glut.h>
#include <stdio.h>
int main(int argc, char **argv)
{
unsigned char imageData[32*32*4];
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutCreateWindow("test");
printf("Normal Texture upload...\n");
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 32, 32, 0, GL_RGB, GL_UNSIGNED_BYTE, (void *)imageData);
printf("Using NULL as data...\n");
// Now this segfaults.
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 32, 32, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
}
Reply to: