Closed caramelli closed 1 year ago
Note getting a segfault atm:
Thread 1 "scummvm" received signal SIGSEGV, Segmentation fault.
0xb67e6948 in system_initialize (core=0x160e430, ret_data=0x160f698) at ../systems/drmkms/drmkms_system.c:224
224 ../systems/drmkms/drmkms_system.c: No such file or directory.
(gdb) bt
#0 0xb67e6948 in system_initialize (core=0x160e430, ret_data=0x160f698) at ../systems/drmkms/drmkms_system.c:224
#1 0xb68db608 in dfb_system_core_initialize (core=0x160e430, data=0x1613078, shared=0x1613088) at ../src/core/system.c:71
#2 0xb68ba17c in dfb_core_part_initialize (core=core@entry=0x160e430, core_part=0xb69e2998 <dfb_system_core>) at ../src/core/core_parts.c:54
#3 0xb68b780c in dfb_core_initialize (core=0x160e430) at ../src/core/core.c:435
#4 0xb68b362c in ICore_Real__Initialize (obj=obj@entry=0x160e430) at ../src/core/CoreDFB_real.c:41
#5 0xb689d4c8 in CoreDFB_Initialize (obj=obj@entry=0x160e430) at src/core/CoreDFB.c:66
#6 0xb68b8838 in dfb_core_arena_initialize (ctx=0x160e430) at ../src/core/core.c:1845
#7 dfb_core_create (ret_core=ret_core@entry=0xb69e2df8 <core_dfb>) at ../src/core/core.c:226
#8 0xb68b3150 in IDirectFB_Construct (thiz=thiz@entry=0x160e8f0) at ../src/idirectfb.c:2074
#9 0xb68aebec in DirectFBCreate (ret_interface=0xbe827b38, ret_interface@entry=0xbe827b30) at ../src/directfb.c:163
#10 0xb6efe704 in DirectFB_VideoInit (_this=0x160c6c8) at buildroot/build/sdl2-d8b252743dc2effe6afe887b53af07b0edff7a0a/src/video/directfb/SDL_DirectFB_video.c:238
#11 0xb6eee260 in SDL_VideoInit_REAL (driver_name=<optimized out>) at buildroot/build/sdl2-d8b252743dc2effe6afe887b53af07b0edff7a0a/src/video/SDL_video.c:515
#12 0xb6e62e7c in SDL_InitSubSystem_REAL (flags=16416) at buildroot/build/sdl2-d8b252743dc2effe6afe887b53af07b0edff7a0a/src/SDL.c:247
#13 SDL_InitSubSystem_REAL (flags=<optimized out>) at buildroot/build/sdl2-d8b252743dc2effe6afe887b53af07b0edff7a0a/src/SDL.c:168
#14 0x00058960 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)
Around:
plane = drmModeGetPlane( drmkms->fd, drmkms->plane_resources->planes[0] );
(gdb) print *drmkms
$1 = {shared = 0x1613260, core = 0x160e430, fd = 4, resources = 0x1613628, plane_resources = 0x1613690, connector = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, encoder = {0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0}, crtc = 0x0, layer_ids = {1, 0, 0, 0, 0, 0, 0, 0}, layer_id_next = 1, event_context = {version = 0, vblank_handler = 0x0, page_flip_handler = 0x0,
page_flip_handler2 = 0x0, sequence_handler = 0x0}, thread = 0x0}
(gdb) print *drmkms->plane_resources
$2 = {count_planes = 0, planes = 0x0}
(gdb)
drmkms->plane_resources->planes
is NULL?
Dump of modetest for the panel
# modetest -M ili9341
Encoders:
id crtc type possible crtcs possible clones
35 34 none 0x00000001 0x00000001
Connectors:
id encoder status name size (mm) modes encoders
31 35 connected SPI-1 49x37 1 35
modes:
index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot
#0 320x240 0.01 320 320 320 320 240 240 240 240 1 flags: ; type: preferred, driver
props:
1 EDID:
flags: immutable blob
blobs:
value:
2 DPMS:
flags: enum
enums: On=0 Standby=1 Suspend=2 Off=3
value: 0
5 link-status:
flags: enum
enums: Good=0 Bad=1
value: 0
6 non-desktop:
flags: immutable range
values: 0 1
value: 0
4 TILE:
flags: immutable blob
blobs:
value:
CRTCs:
id fb pos size
34 36 (0,0) (320x240)
#0 320x240 0.01 320 320 320 320 240 240 240 240 1 flags: ; type: preferred, driver
props:
24 VRR_ENABLED:
flags: range
values: 0 1
value: 0
Planes:
id crtc fb CRTC x,y x,y gamma size possible crtcs
32 34 36 0,0 0,0 0 0x00000001
formats: RG16 XR24
props:
8 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 1
30 IN_FORMATS:
flags: immutable blob
blobs:
value:
01000000000000000200000018000000
01000000200000005247313658523234
03000000000000000000000000000000
0000000000000000
in_formats blob decoded:
RG16: LINEAR
XR24: LINEAR
Frame buffers:
id size pitch
#
Hi @caramelli
If I add this little bit of extra code https://github.com/fifteenhex/DirectFB2/commit/10caecdc3abd0f0094d6544b55212f1c69408c22 this seems to work as intended.
Set default pixel format using drmModePlane formats array if AR24 is not supported