zink: crash in Blender on start-up
Using Zink on Wayland, I see a crash at startup:
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x00007ffff3485859 in __GI_abort () at abort.c:79
#2 0x00007ffff3485729 in __assert_fail_base
(fmt=0x7ffff361b588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7fffc252cbdd "format != NULL", file=0x7fffc252c4a0 "../../../Projects/mesa/src/intel/vulkan/anv_image.c", line=752, function=<optimized out>) at assert.c:92
#3 0x00007ffff3496f36 in __GI___assert_fail
(assertion=0x7fffc252cbdd "format != NULL", file=0x7fffc252c4a0 "../../../Projects/mesa/src/intel/vulkan/anv_image.c", line=752, function=0x7fffc252dae0 <__PRETTY_FUNCTION__.81741> "anv_image_create")
at assert.c:101
#4 0x00007fffc1723d9d in anv_image_create (_device=0x7fffde7f6000, create_info=0x7fffffffcfe0, alloc=0x0, pImage=0x7fffde67dc60) at ../../../Projects/mesa/src/intel/vulkan/anv_image.c:752
#5 0x00007fffc172449f in anv_CreateImage (device=0x7fffde7f6000, pCreateInfo=0x7fffffffd0c0, pAllocator=0x0, pImage=0x7fffde67dc60) at ../../../Projects/mesa/src/intel/vulkan/anv_image.c:885
#6 0x00007fffc32f2298 in resource_create (pscreen=0x7fffd9b7ec00, templ=0x7fffffffd1e0, whandle=0x7fffffffd2d8, external_usage=2) at ../../../Projects/mesa/src/gallium/drivers/zink/zink_resource.c:226
#7 0x00007fffc32f2892 in zink_resource_from_handle (pscreen=0x7fffd9b7ec00, templ=0x7fffffffd1e0, whandle=0x7fffffffd2d8, usage=2) at ../../../Projects/mesa/src/gallium/drivers/zink/zink_resource.c:352
#8 0x00007fffc2995c95 in dri2_create_image_from_winsys
(_screen=0x7fffde609680, width=1, height=1, map=0x7fffc336b590 <dri2_format_table+720>, num_handles=2, whandle=0x7fffffffd2b0, loaderPrivate=0x7fffde505520)
at ../../../Projects/mesa/src/gallium/frontends/dri/dri2.c:800
#9 0x00007fffc2996544 in dri2_create_image_from_fd
(_screen=0x7fffde609680, width=1, height=1, fourcc=875713112, modifier=72057594037927940, fds=0x7fffd9b52f30, num_fds=2, strides=0x7fffffffd4a0, offsets=0x7fffffffd4b0, error=0x7fffffffd478, loaderPrivate=0x7fffde505520) at ../../../Projects/mesa/src/gallium/frontends/dri/dri2.c:963
#10 0x00007fffc2997603 in dri2_from_dma_bufs2
(screen=0x7fffde609680, width=1, height=1, fourcc=875713112, modifier=72057594037927940, fds=0x7fffd9b52f30, num_fds=2, strides=0x7fffffffd4a0, offsets=0x7fffffffd4b0, yuv_color_space=__DRI_YUV_COLOR_SPACE_UNDEFINED, sample_range=__DRI_YUV_RANGE_UNDEFINED, horizontal_siting=__DRI_YUV_CHROMA_SITING_UNDEFINED, vertical_siting=__DRI_YUV_CHROMA_SITING_UNDEFINED, error=0x7fffffffd478, loaderPrivate=0x7fffde505520)
at ../../../Projects/mesa/src/gallium/frontends/dri/dri2.c:1510
#11 0x00007ffff5c8d561 in loader_dri3_create_image_from_buffers
(c=0x7fffd9938c80, bp_reply=0x7fffd9b52f00, format=4098, dri_screen=0x7fffde609680, image=0x7fffc36d2d20 <dri2ImageExtension>, loaderPrivate=0x7fffde505520)
at ../../../Projects/mesa/src/loader/loader_dri3_helper.c:1693
#12 0x00007ffff5c8d78a in dri3_get_pixmap_buffer (driDrawable=0x7fffd9c1ce80, format=4098, buffer_type=loader_dri3_buffer_front, draw=0x7fffe0c6b978)
at ../../../Projects/mesa/src/loader/loader_dri3_helper.c:1775
#13 0x00007ffff5c8df7d in loader_dri3_get_buffers (driDrawable=0x7fffd9c1ce80, format=4098, stamp=0x7fffd9bdba00, loaderPrivate=0x7fffe0c6b978, buffer_mask=3, buffers=0x7fffffffd6f0)
at ../../../Projects/mesa/src/loader/loader_dri3_helper.c:2043
#14 0x00007fffc2994966 in dri_image_drawable_get_buffers (drawable=0x7fffd9bdba00, images=0x7fffffffd6f0, statts=0x7fffd9cc86d8, statts_count=1) at ../../../Projects/mesa/src/gallium/frontends/dri/dri2.c:282
#15 0x00007fffc2994d68 in dri2_allocate_textures (ctx=0x7fffd9d572f0, drawable=0x7fffd9bdba00, statts=0x7fffd9cc86d8, statts_count=1) at ../../../Projects/mesa/src/gallium/frontends/dri/dri2.c:415
#16 0x00007fffc2999ed3 in dri_st_framebuffer_validate (stctx=0x7fffda0af400, stfbi=0x7fffd9bdba00, statts=0x7fffd9cc86d8, count=1, out=0x7fffffffd890)
at ../../../Projects/mesa/src/gallium/frontends/dri/dri_drawable.c:82
#17 0x00007fffc29a9569 in st_framebuffer_validate (stfb=0x7fffd9cc8200, st=0x7fffda0af400) at ../../../Projects/mesa/src/mesa/state_tracker/st_manager.c:223
#18 0x00007fffc29ab2bb in st_api_make_current (stapi=0x7fffc362a560 <st_gl_api>, stctxi=0x7fffda0af400, stdrawi=0x7fffd9bdba00, streadi=0x7fffd9bdba00)
at ../../../Projects/mesa/src/mesa/state_tracker/st_manager.c:1089
#19 0x00007fffc299983e in dri_make_current (cPriv=0x7fffd9bd9e80, driDrawPriv=0x7fffd9c1ce80, driReadPriv=0x7fffd9c1ce80) at ../../../Projects/mesa/src/gallium/frontends/dri/dri_context.c:303
#20 0x00007fffc31f02fe in driBindContext (pcp=0x7fffd9bd9e80, pdp=0x7fffd9c1ce80, prp=0x7fffd9c1ce80) at ../../../Projects/mesa/src/mesa/drivers/dri/common/dri_util.c:581
#21 0x00007ffff5c7ec1c in dri3_bind_context (context=0x7fffe0c6b780, old=0x7fffd9c79300, draw=33554483, read=33554483) at ../../../Projects/mesa/src/glx/dri3_glx.c:210
#22 0x00007ffff5c63173 in MakeContextCurrent (dpy=0x7fffd9933000, draw=33554483, read=33554483, gc_user=0x7fffe0c6b780) at ../../../Projects/mesa/src/glx/glxcurrent.c:220
#23 0x00007ffff5c6329e in glXMakeCurrent (dpy=0x7fffd9933000, draw=33554483, gc=0x7fffe0c6b780) at ../../../Projects/mesa/src/glx/glxcurrent.c:255
#24 0x0000555557319b27 in GHOST_ContextGLX::initializeDrawingContext() ()
#25 0x0000555557315714 in GHOST_SystemX11::createOffscreenContext() ()
#26 0x0000555556c2257c in DRW_opengl_context_create ()
#27 0x0000555556b34c46 in WM_init_opengl ()
#28 0x0000555556b34e8d in WM_init ()
#29 0x00005555568f4401 in main ()
What happens is that num_handles=2
argument to dri2_create_image_from_winsys
makes us enter the for (i = num_handles - 1; i >= format_planes; i--) {
-loop in dri2_create_image_from_winsys
, which calls pscreen->resource_from_handle
without setting width0
, height0
and format
on templ
, leaving them all as zero.
I can't seem to figure out how this is supposed to work.