summaryrefslogtreecommitdiff
path: root/Source/DirectFB/gfxdrivers/unichrome/uc_overlay.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/DirectFB/gfxdrivers/unichrome/uc_overlay.h')
-rwxr-xr-xSource/DirectFB/gfxdrivers/unichrome/uc_overlay.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/Source/DirectFB/gfxdrivers/unichrome/uc_overlay.h b/Source/DirectFB/gfxdrivers/unichrome/uc_overlay.h
new file mode 100755
index 0000000..123a5e0
--- /dev/null
+++ b/Source/DirectFB/gfxdrivers/unichrome/uc_overlay.h
@@ -0,0 +1,98 @@
+#ifndef __UC_OVERLAY_H__
+#define __UC_OVERLAY_H__
+
+#define UC_OVL_CAPS (DLCAPS_SURFACE | DLCAPS_OPACITY | DLCAPS_SCREEN_LOCATION \
+ | DLCAPS_DEINTERLACING | DLCAPS_DST_COLORKEY | DLCAPS_LEVELS \
+ | DLCAPS_FIELD_PARITY )
+/* | DLCAPS_BRIGHTNESS | DLCAPS_CONTRAST \
+ | DLCAPS_SATURATION | DLCAPS_HUE)
+ */
+#define UC_OVL_OPTIONS (DLOP_DEINTERLACING | DLOP_DST_COLORKEY \
+ | DLOP_FIELD_PARITY | DLOP_OPACITY )
+
+#define ALIGN_TO(v, n) (((v) + (n-1)) & ~(n-1))
+#define UC_MAP_V1_FIFO_CONTROL(depth, pre_thr, thr) \
+ (((depth)-1) | ((thr) << 8) | ((pre_thr) << 24))
+
+// Actions for uc_ovl_update()
+
+#define UC_OVL_FLIP 1
+#define UC_OVL_CHANGE 2
+#define UC_OVL_FIELD 4
+
+/** Overlay layer data. */
+struct uc_ovl_vinfo {
+ bool isenabled; // True when visible
+ DFBRectangle win; // Layer screen rectangle.
+ DFBDisplayLayerConfig cfg; // Layer configuration
+ int ox, oy; // Top-left visible corner (the offset)
+ // in the source surface
+ u8 opacity; // Layer opacity
+ int level; // Position in the DirectFB layer stack
+ // < 0 = underlay mode, > 0 = overlay mode
+ DFBColorAdjustment adj; // Color adjustment (brightness etc)
+ DFBColorKey dst_key; // Destination color key
+ bool dstkey_enabled; // Destination color key is enabled
+};
+
+typedef struct _UcOverlayData {
+
+ // TODO: initialize the variables!!!
+
+ u8 hwrev; // Unichrome revision
+ int scrwidth; // Current screen width
+
+ bool extfifo_on; // True when we're using the extended fifo.
+ u8 mclk_save[3];
+
+ struct uc_ovl_vinfo v1; // Video overlay V1
+
+ CoreLayerRegionConfig config;
+
+ bool deinterlace;
+ int field;
+
+ CoreSurface *surface;
+ CoreSurfaceBufferLock *lock;
+
+ int opacity_primary; // overlay opacity if primary is logically
+ // above or -1 if primary has alpha channel
+
+} UcOverlayData;
+
+
+// Video engine - mapping functions (uc_ovl_hwmap.c)
+
+bool uc_ovl_map_vzoom(int sh, int dh, u32* zoom, u32* mini);
+bool uc_ovl_map_hzoom(int sw, int dw, u32* zoom, u32* mini,
+ u32* falign, u32* dcount);
+u32 uc_ovl_map_qwfetch(int falign, DFBSurfacePixelFormat format, int pfetch);
+u32 uc_ovl_map_format(DFBSurfacePixelFormat format);
+void uc_ovl_map_window(int scrw, int scrh, DFBRectangle* win, int sw, int sh,
+ u32* win_start, u32* win_end,
+ int* ox, int* oy, int *pfetch);
+void uc_ovl_map_buffer(DFBSurfacePixelFormat format, u32 buf,
+ int x, int y, int w, int h, int pitch, int field,
+ u32* y_start, u32* u_start, u32* v_start);
+u32 uc_ovl_map_alpha(int opacity);
+void uc_ovl_map_v1_control(DFBSurfacePixelFormat format, int sw,
+ int hwrev, bool extfifo_on,
+ u32* control, u32* fifo);
+u32 uc_ovl_map_fifo(u8 depth, u8 pre_thr, u8 thr);
+void uc_ovl_map_adjustment(DFBColorAdjustment* adj, u32* a1, u32* a2);
+u32 uc_ovl_map_colorkey(DFBColorKey* c);
+
+// Video engine - setting functions (uc_ovl_hwset.c)
+
+void uc_ovl_setup_fifo(UcOverlayData* ucovl, int scrwidth);
+void uc_ovl_vcmd_wait(volatile u8* vio);
+DFBResult uc_ovl_update(UcDriverData* ucdrv,
+ UcOverlayData* ucovl, int action,
+ CoreSurface* surface,
+ CoreSurfaceBufferLock* lock);
+DFBResult uc_ovl_set_adjustment(CoreLayer *layer,
+ void *driver_data,
+ void *layer_data,
+ DFBColorAdjustment *adj);
+
+#endif // __UC_OVERLAY_H__