Skip to content

Commit

Permalink
optimize initrd install script and free bos
Browse files Browse the repository at this point in the history
  • Loading branch information
Sian Cao committed May 11, 2014
1 parent eb77c20 commit 1d409b3
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 16 deletions.
21 changes: 19 additions & 2 deletions driver.cc
Original file line number Diff line number Diff line change
Expand Up @@ -207,12 +207,11 @@ static void run_loop()
}
}

if (dc.cleanup) break;
if (dc.next_bo) {
gbm_surface_release_buffer(dc.gbm_surface, dc.bo);
dc.bo = dc.next_bo;
}

if (dc.cleanup) break;
}
}

Expand Down Expand Up @@ -451,15 +450,33 @@ static void cleanup()
if (dc.vtfd > 0)
close(dc.vtfd);

drmEventContext ev;
memset(&ev, 0, sizeof(ev));
ev.version = DRM_EVENT_CONTEXT_VERSION;
ev.page_flip_handler = modeset_page_flip_event;
ev.vblank_handler = modeset_vblank_handler;
std::cerr << "wait for pending page-flip to complete..." << std::endl;
while (dc.pflip_pending) {
int ret = drmHandleEvent(dc.fd, &ev);
if (ret)
break;
}
dc.action_mode->deinit();

eglDestroySurface(dc.display, dc.surface);
eglDestroyContext(dc.display, dc.gl_context);
eglTerminate(dc.display);

if (dc.bo) {
std::cerr << "destroy bo: " << (unsigned long)dc.bo << std::endl;
gbm_bo_destroy(dc.bo);
std::cerr << "destroy bo: " << (unsigned long)dc.next_bo << std::endl;
gbm_bo_destroy(dc.next_bo);
}
gbm_surface_destroy(dc.gbm_surface);
gbm_device_destroy(dc.gbm);

if (dc.pflip_pending) std::cerr << "still has pflip pending" << std::endl;
if (dc.saved_crtc) {
drmModeSetCrtc(dc.fd, dc.saved_crtc->crtc_id, dc.saved_crtc->buffer_id,
dc.saved_crtc->x, dc.saved_crtc->y, &dc.conn, 1, &dc.saved_crtc->mode);
Expand Down
42 changes: 28 additions & 14 deletions initrd/prometheus.initrd_install
Original file line number Diff line number Diff line change
@@ -1,23 +1,37 @@
#!/bin/bash

add_library_dir() {
local f=
add_dir "$1"
for f in "$1"/*; do
if [[ -L $f ]]; then
add_symlink "$f" "$(readlink -f "$f")"
elif [[ -e $f ]]; then
add_binary "$f"
fi
done
}

build() {
add_file /usr/share/fonts/microsoft/msyh.ttf
add_file /usr/lib/locale/locale-archive

add_binary /usr/lib/xorg/modules/dri/i915_dri.so
add_binary /usr/lib/xorg/modules/dri/i965_dri.so
add_binary /usr/lib/xorg/modules/dri/nouveau_dri.so
add_binary /usr/lib/xorg/modules/dri/nouveau_vieux_dri.so
add_binary /usr/lib/xorg/modules/dri/r200_dri.so
add_binary /usr/lib/xorg/modules/dri/r300_dri.so
add_binary /usr/lib/xorg/modules/dri/r600_dri.so
add_binary /usr/lib/xorg/modules/dri/radeon_dri.so
add_binary /usr/lib/xorg/modules/dri/radeonsi_dri.so
add_binary /usr/lib/xorg/modules/dri/swrast_dri.so
add_binary /usr/lib/xorg/modules/dri/vmwgfx_dri.so

add_binary /usr/lib/egl/egl_gallium.so
add_binary /usr/lib/gbm/gbm_gallium_drm.so
add_library_dir /usr/lib/xorg/modules/dri
[ -e /usr/lib/egl ] && add_library_dir /usr/lib/egl
[ -e /usr/lib/gbm ] && add_library_dir /usr/lib/gbm

# compatible with archlinux and iSoft Client OS
[ -e /usr/lib/mesa ] && add_library_dir /usr/lib/mesa

if [ -L /usr/lib/libGLESv2.so.2.0.0 ]; then
add_symlink /usr/lib/libGLESv2.so.2.0.0
add_symlink /usr/lib/libGLESv2.so.2
fi

if [ -L /usr/lib/libEGL.so.1.0.0 ]; then
add_symlink /usr/lib/libEGL.so.1.0.0
add_symlink /usr/lib/libEGL.so.1
fi

add_binary /usr/sbin/prometheus
add_binary /usr/sbin/prometheusd
Expand Down

0 comments on commit 1d409b3

Please sign in to comment.