| Summary: | Enabling Glamor takes half a second | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | xorg | Reporter: | Paul Menzel <pmenzel+bugs.freedesktop.org> | ||||||||
| Component: | Server/General | Assignee: | Xorg Project Team <xorg-team> | ||||||||
| Status: | RESOLVED MOVED | QA Contact: | Xorg Project Team <xorg-team> | ||||||||
| Severity: | normal | ||||||||||
| Priority: | medium | CC: | pmenzel+bugs.freedesktop.org | ||||||||
| Version: | git | ||||||||||
| Hardware: | Other | ||||||||||
| OS: | All | ||||||||||
| Whiteboard: | |||||||||||
| i915 platform: | i915 features: | ||||||||||
| Attachments: |
|
||||||||||
FWIW, this only takes a few milliseconds on my systems. You'd have to profile where the time is spent on your system, but it's more likely somewhere between glamor and Mesa / LLVM than in the kernel. (In reply to Michel Dänzer from comment #1) > FWIW, this only takes a few milliseconds on my systems. Thank you for testing that. Could you please list the details for one of these systems (hardware, Linux version, X server versions, …)? > You'd have to profile where the time is spent on your system, but it's more > likely somewhere between glamor and Mesa / LLVM than in the kernel. Interesting. Is there a debug switch for the module glamoregl or do I need to use something like `perf` or `oprofile`? Fwiw, a few years ago, dlopen("libGL.so") took on the order of a second on a laptop HDD, which could be eliminated by prelinking. It might worth checking the exported symbol tables (objdump -T ?) to see if they are unnecessarily cumbersome.
I tested this with an older Intel based Dell OptiPlex 7010, also with Debian Sid/unstable (Linux 4.17.3-1, and xserver-xorg-core 2:1.20.0-3) and an HDD – the other system has an SSD, the delay is with 1.8 seconds even bigger.
```
[ 26.041] (II) modeset(0): Creating default Display subsection in Screen section
"Default Screen Section" for depth/fbbpp 24/32
[ 26.041] (==) modeset(0): Depth 24, (==) framebuffer bpp 32
[ 26.041] (==) modeset(0): RGB weight 888
[ 26.041] (==) modeset(0): Default visual is TrueColor
[ 26.041] (II) Loading sub module "glamoregl"
[ 26.041] (II) LoadModule: "glamoregl"
[ 26.068] (II) Loading /usr/lib/xorg/modules/libglamoregl.so
[ 26.253] (II) Module glamoregl: vendor="X.Org Foundation"
[ 26.253] compiled for 1.20.0, module version = 1.0.1
[ 26.253] ABI class: X.Org ANSI C Emulation, version 0.4
[ 28.009] (II) modeset(0): glamor X acceleration enabled on Mesa DRI Intel(R) Ivybridge Desktop
[ 28.009] (II) modeset(0): glamor initialized
```
Looking at the messages though, *loalding* the module takes 200 ms. “Running it” takes long.
Do you want me to change the component to *xorg*?
```
$ objdump -T /usr/lib/xorg/modules/libglamoregl.so
/usr/lib/xorg/modules/libglamoregl.so: file format elf64-x86-64
DYNAMIC SYMBOL TABLE:
0000000000000000 D *UND* 0000000000000000 miPolyArc
0000000000000000 D *UND* 0000000000000000 XNFstrdup
0000000000000000 D *UND* 0000000000000000 CreateSolidPicture
0000000000000000 DO *UND* 0000000000000000 epoxy_glBlendFunc
0000000000000000 DO *UND* 0000000000000000 epoxy_glXMakeCurrent
0000000000000000 D *UND* 0000000000000000 drmPrimeHandleToFD
0000000000000000 DO *UND* 0000000000000000 epoxy_glGetIntegerv
0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform1fv
0000000000000000 DO *UND* 0000000000000000 epoxy_glGenTextures
0000000000000000 D *UND* 0000000000000000 miFillPolygon
0000000000000000 DO *UND* 0000000000000000 epoxy_glBufferStorage
0000000000000000 D *UND* 0000000000000000 fbPutImage
0000000000000000 D *UND* 0000000000000000 pixman_image_create_bits
0000000000000000 DO *UND* 0000000000000000 epoxy_eglTerminate
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 close
0000000000000000 D *UND* 0000000000000000 lastGLContext
0000000000000000 DO *UND* 0000000000000000 epoxy_glDebugMessageCallback
0000000000000000 D *UND* 0000000000000000 miImageText16
0000000000000000 D *UND* 0000000000000000 miRenderColorToPixel
0000000000000000 DO *UND* 0000000000000000 epoxy_glDisableVertexAttribArray
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 roundf
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 ioctl
0000000000000000 D *UND* 0000000000000000 fbGetImage
0000000000000000 D *UND* 0000000000000000 GetGlyphs
0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_offset
0000000000000000 DO *UND* 0000000000000000 epoxy_glDeleteFramebuffers
0000000000000000 DO *UND* 0000000000000000 epoxy_glReadPixels
0000000000000000 D *UND* 0000000000000000 serverClient
0000000000000000 DF *UND* 0000000000000000 epoxy_is_desktop_gl
0000000000000000 D *UND* 0000000000000000 drmGetMagic
0000000000000000 D *UND* 0000000000000000 CompositePicture
0000000000000000 D *UND* 0000000000000000 miChangeGC
0000000000000000 D *UND* 0000000000000000 fbCreateGC
0000000000000000 w D *UND* 0000000000000000 __gmon_start__
0000000000000000 DF *UND* 0000000000000000 gbm_bo_import
0000000000000000 D *UND* 0000000000000000 pixman_image_get_stride
0000000000000000 DO *UND* 0000000000000000 epoxy_glXGetCurrentContext
0000000000000000 DO *UND* 0000000000000000 epoxy_glXGetCurrentDisplay
0000000000000000 DF *UND* 0000000000000000 epoxy_has_gl_extension
0000000000000000 D *UND* 0000000000000000 fbPolySegment
0000000000000000 D *UND* 0000000000000000 miCopyClip
0000000000000000 D *UND* 0000000000000000 DamageRegionAppend
0000000000000000 DO *UND* 0000000000000000 epoxy_glTexParameteri
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.7 __isoc99_sscanf
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 exit
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 __assert_fail
0000000000000000 DO *UND* 0000000000000000 epoxy_glGetString
0000000000000000 D *UND* 0000000000000000 ErrorF
0000000000000000 D *UND* 0000000000000000 PictureMatchFormat
0000000000000000 DO *UND* 0000000000000000 epoxy_glTexImage2D
0000000000000000 DO *UND* 0000000000000000 epoxy_glUnmapBuffer
0000000000000000 D *UND* 0000000000000000 miHandleExposures
0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_stride
0000000000000000 DF *UND* 0000000000000000 epoxy_has_egl_extension
0000000000000000 D *UND* 0000000000000000 LogMessageVerb
0000000000000000 D *UND* 0000000000000000 fbValidateGC
0000000000000000 DO *UND* 0000000000000000 epoxy_glGetError
0000000000000000 D *UND* 0000000000000000 RegionCreate
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 malloc
0000000000000000 DO *UND* 0000000000000000 epoxy_glGetUniformLocation
0000000000000000 DO *UND* 0000000000000000 epoxy_glBindTexture
0000000000000000 D *UND* 0000000000000000 GetScratchGC
0000000000000000 DO *UND* 0000000000000000 epoxy_glTextureBarrierNV
0000000000000000 D *UND* 0000000000000000 fbDestroyPixmap
0000000000000000 D *UND* 0000000000000000 miDestroyClip
0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform1i
0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform2f
0000000000000000 D *UND* 0000000000000000 LogMessage
0000000000000000 D *UND* 0000000000000000 fbCopy1toN
0000000000000000 D *UND* 0000000000000000 fbFillSpans
0000000000000000 D *UND* 0000000000000000 fbTriangles
0000000000000000 DO *UND* 0000000000000000 epoxy_eglGetProcAddress
0000000000000000 D *UND* 0000000000000000 miPolyText8
0000000000000000 DO *UND* 0000000000000000 epoxy_glVertexAttribDivisor
0000000000000000 D *UND* 0000000000000000 RegionEmptyData
0000000000000000 D *UND* 0000000000000000 pixman_image_get_data
0000000000000000 DO *UND* 0000000000000000 epoxy_glDeleteProgram
0000000000000000 D *UND* 0000000000000000 XNFasprintf
0000000000000000 DO *UND* 0000000000000000 epoxy_glBindVertexArray
0000000000000000 DO *UND* 0000000000000000 epoxy_glMapBufferRange
0000000000000000 D *UND* 0000000000000000 miDestroyGC
0000000000000000 D *UND* 0000000000000000 xf86DrvMsg
0000000000000000 D *UND* 0000000000000000 miComputeCompositeRegion
0000000000000000 D *UND* 0000000000000000 miPushPixels
0000000000000000 D *UND* 0000000000000000 Xasprintf
0000000000000000 D *UND* 0000000000000000 dixRegisterPrivateKey
0000000000000000 DO *UND* 0000000000000000 epoxy_glDrawArraysInstanced
0000000000000000 D *UND* 0000000000000000 xf86ScreenToScrn
0000000000000000 w D *UND* 0000000000000000 _ITM_deregisterTMCloneTable
0000000000000000 D *UND* 0000000000000000 xf86Info
0000000000000000 DO *UND* 0000000000000000 epoxy_glLinkProgram
0000000000000000 D *UND* 0000000000000000 miPolyPoint
0000000000000000 DO *UND* 0000000000000000 epoxy_eglCreateImageKHR
0000000000000000 D *UND* 0000000000000000 fbReplicatePixel
0000000000000000 D *UND* 0000000000000000 miPolyText16
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 free
0000000000000000 D *UND* 0000000000000000 RegionValidate
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 strlen
0000000000000000 w D *UND* 0000000000000000 _ITM_registerTMCloneTable
0000000000000000 DO *UND* 0000000000000000 epoxy_glGetProgramiv
0000000000000000 D *UND* 0000000000000000 pixman_region_intersect
0000000000000000 DF *UND* 0000000000000000 epoxy_gl_version
0000000000000000 D *UND* 0000000000000000 RegionAppend
0000000000000000 D *UND* 0000000000000000 fbCopyNtoN
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.8 __asprintf_chk
0000000000000000 D *UND* 0000000000000000 pixman_region_init_rects
0000000000000000 D *UND* 0000000000000000 fbPadPixmap
0000000000000000 DO *UND* 0000000000000000 epoxy_glGetShaderInfoLog
0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_plane_count
0000000000000000 DO *UND* 0000000000000000 epoxy_glDebugMessageControl
0000000000000000 D *UND* 0000000000000000 fbPixmapToRegion
0000000000000000 w DF *UND* 0000000000000000 GLIBC_2.2.5 __cxa_finalize
0000000000000000 D *UND* 0000000000000000 miPolyGlyphBlt
0000000000000000 D *UND* 0000000000000000 miPolyFillArc
0000000000000000 D *UND* 0000000000000000 RegionEmptyBox
0000000000000000 DO *UND* 0000000000000000 epoxy_glCreateProgram
0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_modifier
0000000000000000 D *UND* 0000000000000000 DamageDestroy
0000000000000000 D *UND* 0000000000000000 CreatePicture
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 floorf
0000000000000000 D *UND* 0000000000000000 ValidatePicture
0000000000000000 D *UND* 0000000000000000 pixman_region_fini
0000000000000000 DO *UND* 0000000000000000 epoxy_glBindAttribLocation
0000000000000000 DO *UND* 0000000000000000 epoxy_glTexSubImage2D
0000000000000000 DO *UND* 0000000000000000 epoxy_glCompileShader
0000000000000000 D *UND* 0000000000000000 miImageGlyphBlt
0000000000000000 DO *UND* 0000000000000000 epoxy_glBufferData
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 strstr
0000000000000000 D *UND* 0000000000000000 pixman_image_unref
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 strcat
0000000000000000 DO *UND* 0000000000000000 epoxy_glShaderSource
0000000000000000 D *UND* 0000000000000000 FreePicture
0000000000000000 D *UND* 0000000000000000 pixman_image_composite
0000000000000000 D *UND* 0000000000000000 miTrapezoidBounds
0000000000000000 D *UND* 0000000000000000 miCompositeRects
0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform4f
0000000000000000 D *UND* 0000000000000000 fbGetSpans
0000000000000000 D *UND* 0000000000000000 XNFvasprintf
0000000000000000 D *UND* 0000000000000000 pixman_rasterize_trapezoid
0000000000000000 DO *UND* 0000000000000000 epoxy_glGenFramebuffers
0000000000000000 DO *UND* 0000000000000000 epoxy_glCheckFramebufferStatus
0000000000000000 DO *UND* 0000000000000000 epoxy_eglInitialize
0000000000000000 DF *UND* 0000000000000000 gbm_bo_create_with_modifiers
0000000000000000 D *UND* 0000000000000000 miDoCopy
0000000000000000 D *UND* 0000000000000000 fbCreatePixmap
0000000000000000 DF *UND* 0000000000000000 drmGetDeviceNameFromFd2
0000000000000000 DO *UND* 0000000000000000 epoxy_glBindFragDataLocationIndexed
0000000000000000 DO *UND* 0000000000000000 epoxy_eglDestroyImageKHR
0000000000000000 D *UND* 0000000000000000 DamageDamageRegion
0000000000000000 DO *UND* 0000000000000000 epoxy_eglCreateContext
0000000000000000 D *UND* 0000000000000000 fbCopyNto1
0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform4ui
0000000000000000 D *UND* 0000000000000000 dri3_screen_init
0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform4fv
0000000000000000 D *UND* 0000000000000000 pixman_region_translate
0000000000000000 D *UND* 0000000000000000 xfont2_allocate_font_private_index
0000000000000000 D *UND* 0000000000000000 pixman_region_contains_point
0000000000000000 DO *UND* 0000000000000000 epoxy_glDeleteVertexArrays
0000000000000000 DO *UND* 0000000000000000 epoxy_glDeleteBuffers
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 getenv
0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform2fv
0000000000000000 DO *UND* 0000000000000000 epoxy_glEGLImageTargetTexture2DOES
0000000000000000 DO *UND* 0000000000000000 epoxy_glGenBuffers
0000000000000000 DO *UND* 0000000000000000 epoxy_glFinish
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 __errno_location
0000000000000000 DO *UND* 0000000000000000 epoxy_glViewport
0000000000000000 D *UND* 0000000000000000 pixman_f_transform_from_pixman_transform
0000000000000000 DO *UND* 0000000000000000 epoxy_glFramebufferTexture2D
0000000000000000 D *UND* 0000000000000000 serverGeneration
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 strdup
0000000000000000 DO *UND* 0000000000000000 epoxy_glFlush
0000000000000000 D *UND* 0000000000000000 miSyncShmScreenInit
0000000000000000 D *UND* 0000000000000000 miPolyRectangle
0000000000000000 D *UND* 0000000000000000 FreeScratchGC
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 sincos
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.4 __stack_chk_fail
0000000000000000 D *UND* 0000000000000000 miCopyGC
0000000000000000 DF *UND* 0000000000000000 gbm_create_device
0000000000000000 DO *UND* 0000000000000000 epoxy_glMapBuffer
0000000000000000 DO *UND* 0000000000000000 epoxy_glGetProgramivARB
0000000000000000 DO *UND* 0000000000000000 epoxy_glObjectLabel
0000000000000000 D *UND* 0000000000000000 miSyncGetScreenFuncs
0000000000000000 D *UND* 0000000000000000 pixman_region_subtract
0000000000000000 DO *UND* 0000000000000000 epoxy_glDrawArrays
0000000000000000 D *UND* 0000000000000000 ChangeGC
0000000000000000 D *UND* 0000000000000000 fbPolyFillRect
0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_handle
0000000000000000 D *UND* 0000000000000000 PictureScreenPrivateKeyRec
0000000000000000 D *UND* 0000000000000000 fbSetSpans
0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_fd
0000000000000000 DF *UND* 0000000000000000 gbm_device_destroy
0000000000000000 D *UND* 0000000000000000 miPolylines
0000000000000000 DO *UND* 0000000000000000 epoxy_glBindFramebuffer
0000000000000000 DO *UND* 0000000000000000 epoxy_eglBindAPI
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 calloc
0000000000000000 D *UND* 0000000000000000 fbGetScreenPrivateKey
0000000000000000 DO *UND* 0000000000000000 epoxy_eglGetDisplay
0000000000000000 D *UND* 0000000000000000 DamageUnregister
0000000000000000 D *UND* 0000000000000000 pixman_region_copy
0000000000000000 D *UND* 0000000000000000 fbAddTraps
0000000000000000 DO *UND* 0000000000000000 epoxy_glDrawElements
0000000000000000 DO *UND* 0000000000000000 epoxy_glScissor
0000000000000000 DO *UND* 0000000000000000 epoxy_glDeleteTextures
0000000000000000 D *UND* 0000000000000000 XNFalloc
0000000000000000 DF *UND* 0000000000000000 LIBBSD_0.7 reallocarray
0000000000000000 DO *UND* 0000000000000000 epoxy_glXGetCurrentDrawable
0000000000000000 D *UND* 0000000000000000 ValidateGC
0000000000000000 D *UND* 0000000000000000 DamageRegionProcessPending
0000000000000000 D *UND* 0000000000000000 miImageText8
0000000000000000 D *UND* 0000000000000000 DamageRegister
0000000000000000 DO *UND* 0000000000000000 epoxy_glBindBuffer
0000000000000000 DF *UND* 0000000000000000 gbm_bo_create
0000000000000000 DO *UND* 0000000000000000 epoxy_glVertexAttribPointer
0000000000000000 D *UND* 0000000000000000 pixman_f_transform_point
0000000000000000 D *UND* 0000000000000000 miPolySegment
0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_stride_for_plane
0000000000000000 DF *UND* 0000000000000000 gbm_bo_get_height
0000000000000000 DO *UND* 0000000000000000 epoxy_glPixelStorei
0000000000000000 DO *UND* 0000000000000000 epoxy_glDisable
0000000000000000 DO *UND* 0000000000000000 epoxy_glAttachShader
0000000000000000 DO *UND* 0000000000000000 epoxy_glEnableVertexAttribArray
0000000000000000 DO *UND* 0000000000000000 epoxy_glEnable
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 realloc
0000000000000000 D *UND* 0000000000000000 drmAuthMagic
0000000000000000 D *UND* 0000000000000000 pixman_region_rectangles
0000000000000000 DO *UND* 0000000000000000 epoxy_glGenVertexArrays
0000000000000000 DO *UND* 0000000000000000 epoxy_glGetShaderiv
0000000000000000 D *UND* 0000000000000000 xfont2_font_set_private
0000000000000000 DO *UND* 0000000000000000 epoxy_eglMakeCurrent
0000000000000000 D *UND* 0000000000000000 PixmapWidthPaddingInfo
0000000000000000 D *UND* 0000000000000000 miCopyRegion
0000000000000000 D *UND* 0000000000000000 miChangeClip
0000000000000000 D *UND* 0000000000000000 DamageCreate
0000000000000000 D *UND* 0000000000000000 FatalError
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 sqrt
0000000000000000 D *UND* 0000000000000000 RegionDestroy
0000000000000000 D *UND* 0000000000000000 xf86AllocateScrnInfoPrivateIndex
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.14 memcpy
0000000000000000 DO *UND* 0000000000000000 epoxy_glUseProgram
0000000000000000 DO *UND* 0000000000000000 epoxy_glDeleteShader
0000000000000000 DO *UND* 0000000000000000 epoxy_glCreateShader
0000000000000000 DO *UND* 0000000000000000 epoxy_glActiveTexture
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 open
0000000000000000 D *UND* 0000000000000000 MakeAtom
0000000000000000 DO *UND* 0000000000000000 epoxy_glGetProgramInfoLog
0000000000000000 DO *UND* 0000000000000000 epoxy_glUniform1f
0000000000000000 DO *UND* 0000000000000000 epoxy_glUniformMatrix3fv
0000000000000000 DF *UND* 0000000000000000 gbm_bo_destroy
0000000000000000 DO *UND* 0000000000000000 epoxy_glLogicOp
0000000000000000 D *UND* 0000000000000000 fbComposite
000000000000be00 g DF .text 0000000000000073 Base glamor_destroy_gc
00000000002314a0 g DO .data 0000000000000018 Base glamoreglModuleData
000000000000be80 g DF .text 00000000000001b6 Base glamor_validate_gc
00000000000090d0 g DF .text 000000000000016d Base glamor_set_pixmap_texture
0000000000025304 g DF .fini 0000000000000000 Base _fini
0000000000009520 g DF .text 00000000000009f5 Base glamor_init
0000000000009fe0 g DF .text 0000000000000050 Base glamor_set_drawable_modifiers_func
0000000000007300 g DF .text 0000000000000089 Base glamor_gbm_bo_from_pixmap
0000000000022d30 g DF .text 0000000000000072 Base glamor_change_window_attributes
0000000000007ef0 g DF .text 00000000000000f7 Base glamor_egl_fd_name_from_pixmap
0000000000009f20 g DF .text 0000000000000002 Base glamor_fini
0000000000006d80 g DF .text 000000000000000c Base glamor_get_formats
00000000000237a0 g DF .text 00000000000000b1 Base glamor_pixmap_exchange_fbos
0000000000008920 g DF .text 000000000000022d Base glamor_close_screen
0000000000007900 g DF .text 0000000000000088 Base glamor_pixmap_from_fd
000000000000a0b0 g DF .text 000000000000011e Base glamor_fds_from_pixmap
00000000000085f0 g DF .text 00000000000001b3 Base glamor_xv_init
000000000000bc10 g DF .text 0000000000000110 Base glamor_copy_window
0000000000008b50 g DF .text 0000000000000406 Base glamor_create_pixmap
0000000000009240 g DF .text 0000000000000060 Base glamor_get_pixmap_texture
0000000000007990 g DF .text 0000000000000116 Base glamor_egl_exchange_buffers
0000000000009f30 g DF .text 0000000000000053 Base glamor_enable_dri3
0000000000007610 g DF .text 000000000000005f Base glamor_egl_create_textured_screen
000000000000a390 g DF .text 0000000000000076 Base glamor_finish
0000000000009030 g DF .text 000000000000009f Base glamor_set_pixmap_type
000000000000a1d0 g DF .text 00000000000000d6 Base glamor_fd_from_pixmap
0000000000009310 g DF .text 0000000000000076 Base glamor_block_handler
00000000002317f0 g D .bss 0000000000000000 Base __bss_start
00000000000070f0 g DF .text 000000000000020b Base glamor_egl_create_textured_pixmap_from_gbm_bo
0000000000231a98 g D .bss 0000000000000000 Base _end
0000000000009f90 g DF .text 000000000000004f Base glamor_supports_pixmap_import_export
0000000000008070 g DF .text 00000000000000e4 Base glamor_egl_screen_init
00000000000074f0 g DF .text 0000000000000116 Base glamor_egl_create_textured_pixmap
0000000000007670 g DF .text 0000000000000287 Base glamor_pixmap_from_fds
0000000000006d90 g DF .text 000000000000000c Base glamor_get_modifiers
00000000000070c0 g DF .text 0000000000000024 Base glamor_egl_get_gbm_device
00000000000084e0 g DF .text 0000000000000006 Base glamor_egl_init_textured_pixmap
0000000000008160 g DF .text 0000000000000375 Base glamor_egl_init
000000000000c410 g DF .text 000000000000006b Base glamor_create_gc
000000000000a2b0 g DF .text 0000000000000022 Base glamor_shareable_fd_from_pixmap
00000000002317f0 g D .data 0000000000000000 Base _edata
0000000000007e10 g DF .text 00000000000000d2 Base glamor_egl_fds_from_pixmap
000000000000a2e0 g DF .text 00000000000000af Base glamor_name_from_pixmap
0000000000007390 g DF .text 0000000000000157 Base glamor_back_pixmap_from_fd
00000000000087b0 g DF .text 0000000000000026 Base glamor_destroy_pixmap
0000000000005fb0 g DF .init 0000000000000000 Base _init
000000000000a030 g DF .text 0000000000000074 Base glamor_get_drawable_modifiers
```
```
$ lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller [8086:0150] (rev 09)
00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller [8086:0162] (rev 09)
00:14.0 USB controller [0c03]: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller [8086:1e31] (rev 04)
00:16.0 Communication controller [0780]: Intel Corporation 7 Series/C216 Chipset Family MEI Controller #1 [8086:1e3a] (rev 04)
00:19.0 Ethernet controller [0200]: Intel Corporation 82579LM Gigabit Network Connection [8086:1502] (rev 04)
00:1a.0 USB controller [0c03]: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 [8086:1e2d] (rev 04)
00:1b.0 Audio device [0403]: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller [8086:1e20] (rev 04)
00:1d.0 USB controller [0c03]: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 [8086:1e26] (rev 04)
00:1f.0 ISA bridge [0601]: Intel Corporation Q77 Express Chipset LPC Controller [8086:1e47] (rev 04)
00:1f.2 SATA controller [0106]: Intel Corporation 7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] [8086:1e02] (rev 04)
00:1f.3 SMBus [0c05]: Intel Corporation 7 Series/C216 Chipset Family SMBus Controller [8086:1e22] (rev 04)
```
Michel, Chris, I just noticed, that the delay is only there when starting the X.Org X server for the first time. Could you please make sure, that your systems are rebooted when trying this? (During my tests I do not use a graphical login manager, and just log in on a terminal and execute `exec startx`.) Created attachment 140630 [details]
Output of `strace -tt -f startx`
I traced the startup with strace. Of course it’s slower that way, but there are several delays in there. Also, a lot of libraries are loaded seeming to take some time.
Here are the biggest “delays” I found.
278 18:30:40.366920 stat64("/usr/lib/xorg/modules/libglamoregl.so/", 0xbfa34efc) = -1 ENOTDIR (Not a directory)
278 18:30:40.390224 stat64("/usr/lib/xorg/modules/libglamoregl.so/", 0xbfa34efc) = -1 ENOTDIR (Not a directory)
278 18:30:40.666582 write(4, "(II) Loading sub module \"glamore"..., 36) = 36
278 18:30:40.671594 openat(AT_FDCWD, "/usr/lib/xorg/modules/libglamoregl.so", O_RDONLY|O_CLOEXEC) = 12
278 18:30:40.712147 write(4, "(II) Module glamoregl: vendor=\"X"..., 49) = 49
278 18:30:40.790228 openat(AT_FDCWD, "/lib/i386-linux-gnu/libncurses.so.6", O_RDONLY|O_CLOEXEC) = 12
278 18:30:40.790515 read(12, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 ^\0\0004\0\0\0"..., 512) = 512
278 18:30:40.791695 fstat64(12, {st_mode=S_IFREG|0644, st_size=169280, ...}) = 0
278 18:30:40.792144 mmap2(NULL, 172472, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 12, 0) = 0xb1fc6000
278 18:30:40.792444 mmap2(0xb1fef000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 12, 0x28000) = 0xb1fef000
278 18:30:40.794183 close(12) = 0
278 18:30:40.802657 mprotect(0xb2015000, 8192, PROT_READ) = 0
278 18:30:40.804863 mprotect(0xb1fef000, 4096, PROT_READ) = 0
278 18:30:40.807819 mprotect(0xb204c000, 4096, PROT_READ) = 0
278 18:30:40.820933 mprotect(0xb21c5000, 24576, PROT_READ) = 0
→ 278 18:30:41.011259 mprotect(0xb5fc9000, 2596864, PROT_READ) = 0
278 18:30:41.012249 mprotect(0xb62c1000, 4096, PROT_READ) = 0
278 18:30:41.013082 mprotect(0xb62cd000, 4096, PROT_READ) = 0
278 18:30:41.013659 mprotect(0xb62d7000, 4096, PROT_READ) = 0
278 18:30:41.014194 mprotect(0xb62e7000, 4096, PROT_READ) = 0
→ 278 18:30:41.022997 mprotect(0xb6efd000, 286720, PROT_READ) = 0
278 18:30:41.033617 futex(0xb6264f6c, FUTEX_WAKE_PRIVATE, 2147483647) = 0
→ 278 18:30:41.094631 time(NULL) = 1531499441 (2018-07-13T18:30:41+0200)
278 18:30:41.095152 openat(AT_FDCWD, "/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 12
278 18:30:41.095808 read(12, "0-1\n", 8192) = 4
278 18:30:41.096267 close(12) = 0
278 18:30:41.160224 brk(0x12c6000) = 0x12c6000
278 18:30:41.167493 munmap(0xb72a9000, 71088) = 0
→ 278 18:30:41.171051 getrandom("\x0a\xce\xa9\x46", 4, GRND_NONBLOCK) = 4
278 18:30:41.172796 openat(AT_FDCWD, "/etc/drirc", O_RDONLY|O_LARGEFILE) = 12
278 18:30:41.199927 openat(AT_FDCWD, "/home/kodi/.drirc", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
278 18:30:41.204172 fstat64(12, {st_mode=S_IFCHR|0660, st_rdev=makedev(226, 0), ...}) = 0
278 18:30:41.208846 ioctl(13, DRM_IOCTL_RADEON_INFO, 0xbfa3661c) = 0
278 18:30:41.211268 ioctl(13, DRM_IOCTL_RADEON_INFO, 0xbfa3661c) = 0
278 18:30:41.233996 stat64("/home/kodi/.cache/mesa_shader_cache", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
278 18:30:41.248494 openat(AT_FDCWD, "/home/kodi/.cache/mesa_shader_cache/index", O_RDWR|O_CREAT|O_LARGEFILE|O_CLOEXEC, 0644) = 14
278 18:30:41.249985 fstat64(14, {st_mode=S_IFREG|0644, st_size=1310728, ...}) = 0
278 18:30:41.269060 ioctl(11, DRM_IOCTL_GET_CAP, 0xbfa3671c) = 0
278 18:30:41.275748 brk(0x12e7000) = 0x12e7000
278 18:30:41.280202 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 14
278 18:30:41.280815 fstat64(14, {st_mode=S_IFREG|0644, st_size=71088, ...}) = 0
278 18:30:41.335827 munmap(0xb72ab000, 65536) = 0
278 18:30:41.335940 brk(0x1324000) = 0x1324000
278 18:30:41.349009 ioctl(13, DRM_IOCTL_RADEON_GEM_CREATE, 0xbfa366f0) = 0
278 18:30:41.349819 getpid() = 278
278 18:30:41.350429 mmap2(NULL, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f87000
278 18:30:41.357399 futex(0xb715a8b8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
278 18:30:41.358249 getpid() = 278
Created attachment 140631 [details]
X.Org X Server 1.20.0 log run under strace
-- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/xserver/issues/543. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.
Created attachment 140548 [details] X.Org X Server 1.20.0 log The X.Org X Server start up takes well over a second on an ASRock E350M1. Debian Sid/unstable with Linux 4.18-rc4+ is used. Looking at the log, there is half a second delay right below. ``` [ 78.639] X.Org X Server 1.20.0 X Protocol Version 11, Revision 0 […] [ 78.796] (II) Module glamoregl: vendor="X.Org Foundation" [ 78.796] compiled for 1.20.0, module version = 1.0.1 [ 78.796] ABI class: X.Org ANSI C Emulation, version 0.4 [ 79.294] (II) RADEON(0): glamor X acceleration enabled on AMD PALM (DRM 2.50.0 / 4.18.0-rc4-00832-g217000c98815, LLVM 6.0.1) […] ```