summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README23
1 files changed, 23 insertions, 0 deletions
diff --git a/README b/README
index e892d8f..4329914 100644
--- a/README
+++ b/README
@@ -25,3 +25,26 @@ You can also copy src/drmmode_template into src/drmmode_<yourdrivername> and bui
$ ./configure --with-drmmode=<yourdrivername>
+Summary of bo reference counting
+--------------------------------
+The Screen takes a ref on the scanout bo in InitScreen and drops it in ScreenClose. When the scanout bo changes
+(due to a flip or a modeset) the ref is moved from the old bo to the new one by set_scanout_bo.
+
+Pixmaps take a ref on their bo(s) when created in ARMSOCCreatePixmap2 and drop it in ARMSOCDestroyPixmap.
+If ARMSOCModifyPixmapHeader points a pixmap at anything other than the scanout bo then the ref to
+the existing bo (if any) is dropped.
+If ARMSOCModifyPixmapHeader points a pixmap at the scanout bo the ref is moved from the old bo to the new
+If ARMSOCModifyPixmapHeader changes the size of the pixmap's bo the ref is dropped, a new bo created and a
+ref taken on that.
+
+resize_scanout_bo creates and takes a ref on the new bo and drops its ref when the new bo becomes the scanout bo and
+the Screen has taken a ref.
+
+The swap chain takes a ref on the src and dst bos when a swap is scheduled in ARMSOCDRI2ScheduleSwap and drops them
+in ARMSOCDRI2SwapComplete after the src becomes pARMSOC->scanout and the screen takes a ref.
+
+The cursor takes a ref on its bo in drmmode_cursor_init and drops it in drmmode_cursor_fini
+
+
+
+