removed overlay testing code
This commit is contained in:
parent
71ac3a16d6
commit
416e32bc53
1 changed files with 1 additions and 262 deletions
261
src/common/api.c
261
src/common/api.c
|
|
@ -88,80 +88,6 @@ struct owlfb_sync_info {
|
||||||
__u16 reserved2;
|
__u16 reserved2;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct owlfb_mem_info {
|
|
||||||
__u32 size;
|
|
||||||
__u8 type;
|
|
||||||
__u8 reserved[3];
|
|
||||||
};
|
|
||||||
|
|
||||||
enum owlfb_overlay_type {
|
|
||||||
OWLFB_OVERLAY_VIDEO = 1,
|
|
||||||
OWLFB_OVERLAY_CURSOR,
|
|
||||||
};
|
|
||||||
|
|
||||||
struct owlfb_overlay_args {
|
|
||||||
__u16 fb_id;
|
|
||||||
__u16 overlay_id;
|
|
||||||
__u16 overlay_type;
|
|
||||||
__u32 overlay_mem_base;
|
|
||||||
__u32 overlay_mem_size;
|
|
||||||
__u32 uintptr_overly_info;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum owl_color_mode {
|
|
||||||
OWL_DSS_COLOR_RGB16 = 0, /* RGB16 */
|
|
||||||
OWL_DSS_COLOR_BGR16 = 1, /* RGB16 */
|
|
||||||
OWL_DSS_COLOR_ARGB32 = 4, /* ARGB32*/
|
|
||||||
OWL_DSS_COLOR_ABGR32 = 5, /* ARGB32 */
|
|
||||||
OWL_DSS_COLOR_RGBA32 = 6, /* RGBA32 */
|
|
||||||
OWL_DSS_COLOR_BGRA32 = 7, /* RGBA32 */
|
|
||||||
OWL_DSS_COLOR_NV21 = 8, /* YUV 4:2:0 sp */
|
|
||||||
OWL_DSS_COLOR_NU21 = 9, /* YVU 4:2:0 sp */
|
|
||||||
OWL_DSS_COLOR_YU12 = 10, /* YUV 4:2:0 */
|
|
||||||
OWL_DSS_COLOR_ARGB16 = 12, /* ARGB16 */
|
|
||||||
OWL_DSS_COLOR_ABGR16 = 13, /* ABGR16 */
|
|
||||||
OWL_DSS_COLOR_RGBA16 = 14, /* RGBA16 */
|
|
||||||
OWL_DSS_COLOR_BGRA16 = 15, /* BGRA16 */
|
|
||||||
OWL_DSS_COLOR_RGB24U = 16, /* RGB24, 32-bit container */
|
|
||||||
OWL_DSS_COLOR_RGB24P = 17, /* RGB24, 24-bit container */
|
|
||||||
OWL_DSS_COLOR_RGBX32 = 18, /* RGBx32 */
|
|
||||||
OWL_DSS_COLOR_NV12 = 19, /* YVU 4:2:0 */
|
|
||||||
OWL_DSS_COLOR_XBGR32 = 20, /* XBGR32 */
|
|
||||||
OWL_DSS_COLOR_XRGB32 = 21,
|
|
||||||
};
|
|
||||||
|
|
||||||
#include <stdbool.h>
|
|
||||||
struct owlfb_overlay_info {
|
|
||||||
__u32 mem_off;
|
|
||||||
__u32 mem_size;
|
|
||||||
|
|
||||||
__u32 screen_width;
|
|
||||||
enum owl_color_mode color_mode;
|
|
||||||
__u32 img_width;
|
|
||||||
__u32 img_height;
|
|
||||||
|
|
||||||
__u32 xoff;
|
|
||||||
__u32 yoff;
|
|
||||||
__u32 width;
|
|
||||||
__u32 height;
|
|
||||||
|
|
||||||
__u8 rotation;
|
|
||||||
|
|
||||||
__u32 pos_x;
|
|
||||||
__u32 pos_y;
|
|
||||||
__u32 out_width; /* if 0, out_width == width */
|
|
||||||
__u32 out_height; /* if 0, out_height == height */
|
|
||||||
|
|
||||||
__u8 lightness;
|
|
||||||
__u8 saturation;
|
|
||||||
__u8 contrast;
|
|
||||||
bool global_alpha_en;
|
|
||||||
__u8 global_alpha;
|
|
||||||
|
|
||||||
bool pre_mult_alpha_en;
|
|
||||||
__u8 zorder;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define OWL_IOW(num, dtype) _IOW('O', num, dtype)
|
#define OWL_IOW(num, dtype) _IOW('O', num, dtype)
|
||||||
#define OWL_IOR(num, dtype) _IOR('O', num, dtype)
|
#define OWL_IOR(num, dtype) _IOR('O', num, dtype)
|
||||||
#define OWLFB_WAITFORVSYNC OWL_IOW(57, long long)
|
#define OWLFB_WAITFORVSYNC OWL_IOW(57, long long)
|
||||||
|
|
@ -169,13 +95,6 @@ struct owlfb_overlay_info {
|
||||||
#define OWLFB_SET_DISPLAY_INFO OWL_IOW(75, struct owlfb_disp_device)
|
#define OWLFB_SET_DISPLAY_INFO OWL_IOW(75, struct owlfb_disp_device)
|
||||||
#define OWLFB_VSYNC_EVENT_EN OWL_IOW(67, struct owlfb_sync_info)
|
#define OWLFB_VSYNC_EVENT_EN OWL_IOW(67, struct owlfb_sync_info)
|
||||||
|
|
||||||
#define OWLFB_OVERLAY_REQUEST OWL_IOR(41, struct owlfb_overlay_args)
|
|
||||||
#define OWLFB_OVERLAY_RELEASE OWL_IOR(42, struct owlfb_overlay_args)
|
|
||||||
#define OWLFB_OVERLAY_ENABLE OWL_IOR(43, struct owlfb_overlay_args)
|
|
||||||
#define OWLFB_OVERLAY_DISABLE OWL_IOR(45, struct owlfb_overlay_args)
|
|
||||||
#define OWLFB_OVERLAY_GETINFO OWL_IOW(46, struct owlfb_overlay_args)
|
|
||||||
#define OWLFB_OVERLAY_SETINFO OWL_IOW(47, struct owlfb_overlay_args)
|
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
|
|
||||||
#define GFX_BUFFER_COUNT 3
|
#define GFX_BUFFER_COUNT 3
|
||||||
|
|
@ -281,186 +200,6 @@ SDL_Surface* GFX_init(int mode) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// OVERLAY testing
|
|
||||||
if (0) {
|
|
||||||
puts("---");
|
|
||||||
|
|
||||||
struct owlfb_overlay_args overlay_args;
|
|
||||||
struct owlfb_overlay_info oinfo;
|
|
||||||
|
|
||||||
memset(&overlay_args, 0, sizeof(struct owlfb_overlay_args));
|
|
||||||
memset(&oinfo, 0, sizeof(struct owlfb_overlay_info));
|
|
||||||
|
|
||||||
// TODO: some combination of ioctl's produced overlay and manager entries to appear in /sys/devices/owldss
|
|
||||||
// I'm dumb, I should have been looking in /sys/devices/platform/owldss :facepalm:
|
|
||||||
|
|
||||||
// overlay_args.fb_id = 0;
|
|
||||||
overlay_args.overlay_id = 1; // if left as zero it appears to replace fb0? (the screen is black in any case)
|
|
||||||
overlay_args.overlay_type = OWLFB_OVERLAY_VIDEO; // might only support OWLFB_OVERLAY_CURSOR...
|
|
||||||
// overlay_args.overlay_mem_size = SCREEN_WIDTH * SCREEN_BPP * SCREEN_HEIGHT;? // stays 0 after REQUEST
|
|
||||||
overlay_args.uintptr_overly_info = (__u32)&oinfo;
|
|
||||||
|
|
||||||
// puts("before REQUEST");
|
|
||||||
// printf("\toverlay_args.fb_id: %u\n", overlay_args.fb_id);
|
|
||||||
// printf("\toverlay_args.overlay_id: %u\n", overlay_args.overlay_id);
|
|
||||||
// printf("\toverlay_args.overlay_type: %u\n", overlay_args.overlay_type);
|
|
||||||
// printf("\toverlay_args.overlay_mem_base: %u\n", overlay_args.overlay_mem_base);
|
|
||||||
// printf("\toverlay_args.overlay_mem_size: %u\n", overlay_args.overlay_mem_size);
|
|
||||||
//
|
|
||||||
// printf("\toinfo.mem_off: %u\n", oinfo.mem_off);
|
|
||||||
// printf("\toinfo.mem_size: %u\n", oinfo.mem_size);
|
|
||||||
// printf("\toinfo.screen_width: %u\n", oinfo.screen_width); // 8???
|
|
||||||
// printf("\toinfo.color_mode: %u\n", oinfo.color_mode); // 0 = OWL_DSS_COLOR_RGB16
|
|
||||||
// printf("\toinfo.img_width: %u\n", oinfo.img_width);
|
|
||||||
// printf("\toinfo.img_height: %u\n", oinfo.img_height);
|
|
||||||
// printf("\toinfo.xoff: %u\n", oinfo.xoff);
|
|
||||||
// printf("\toinfo.yoff: %u\n", oinfo.yoff);
|
|
||||||
// printf("\toinfo.width: %u\n", oinfo.width);
|
|
||||||
// printf("\toinfo.height: %u\n", oinfo.height);
|
|
||||||
// printf("\toinfo.rotation: %u\n", oinfo.rotation);
|
|
||||||
// printf("\toinfo.pos_x: %u\n", oinfo.pos_x);
|
|
||||||
// printf("\toinfo.pos_y: %u\n", oinfo.pos_y);
|
|
||||||
// printf("\toinfo.out_width: %u\n", oinfo.out_width);
|
|
||||||
// printf("\toinfo.out_height: %u\n", oinfo.out_height);
|
|
||||||
// printf("\toinfo.lightness: %u\n", oinfo.lightness);
|
|
||||||
// printf("\toinfo.saturation: %u\n", oinfo.saturation);
|
|
||||||
// printf("\toinfo.contrast: %u\n", oinfo.contrast);
|
|
||||||
// printf("\toinfo.global_alpha_en: %u\n", oinfo.global_alpha_en);
|
|
||||||
// printf("\toinfo.global_alpha: %u\n", oinfo.global_alpha);
|
|
||||||
// printf("\toinfo.pre_mult_alpha_en: %u\n", oinfo.pre_mult_alpha_en);
|
|
||||||
// printf("\toinfo.zorder: %u\n", oinfo.zorder);
|
|
||||||
|
|
||||||
if (ioctl(gfx.fb, OWLFB_OVERLAY_REQUEST, &overlay_args)) {
|
|
||||||
printf("OWLFB_OVERLAY_REQUEST failed: %s (%i)\n", strerror(errno), errno);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ioctl(gfx.fb, OWLFB_OVERLAY_ENABLE, &overlay_args)) {
|
|
||||||
printf("OWLFB_OVERLAY_ENABLE failed: %s (%i)\n", strerror(errno), errno);
|
|
||||||
}
|
|
||||||
|
|
||||||
puts("after ENABLE");
|
|
||||||
printf("\toverlay_args.fb_id: %u\n", overlay_args.fb_id);
|
|
||||||
printf("\toverlay_args.overlay_id: %u\n", overlay_args.overlay_id);
|
|
||||||
printf("\toverlay_args.overlay_type: %u\n", overlay_args.overlay_type);
|
|
||||||
printf("\toverlay_args.overlay_mem_base: %u\n", overlay_args.overlay_mem_base);
|
|
||||||
printf("\toverlay_args.overlay_mem_size: %u\n", overlay_args.overlay_mem_size);
|
|
||||||
|
|
||||||
printf("\toinfo.mem_off: %u\n", oinfo.mem_off);
|
|
||||||
printf("\toinfo.mem_size: %u\n", oinfo.mem_size);
|
|
||||||
printf("\toinfo.screen_width: %u\n", oinfo.screen_width); // 8???
|
|
||||||
printf("\toinfo.color_mode: %u\n", oinfo.color_mode); // 0 = OWL_DSS_COLOR_RGB16
|
|
||||||
printf("\toinfo.img_width: %u\n", oinfo.img_width);
|
|
||||||
printf("\toinfo.img_height: %u\n", oinfo.img_height);
|
|
||||||
printf("\toinfo.xoff: %u\n", oinfo.xoff);
|
|
||||||
printf("\toinfo.yoff: %u\n", oinfo.yoff);
|
|
||||||
printf("\toinfo.width: %u\n", oinfo.width);
|
|
||||||
printf("\toinfo.height: %u\n", oinfo.height);
|
|
||||||
printf("\toinfo.rotation: %u\n", oinfo.rotation);
|
|
||||||
printf("\toinfo.pos_x: %u\n", oinfo.pos_x);
|
|
||||||
printf("\toinfo.pos_y: %u\n", oinfo.pos_y);
|
|
||||||
printf("\toinfo.out_width: %u\n", oinfo.out_width);
|
|
||||||
printf("\toinfo.out_height: %u\n", oinfo.out_height);
|
|
||||||
printf("\toinfo.lightness: %u\n", oinfo.lightness);
|
|
||||||
printf("\toinfo.saturation: %u\n", oinfo.saturation);
|
|
||||||
printf("\toinfo.contrast: %u\n", oinfo.contrast);
|
|
||||||
printf("\toinfo.global_alpha_en: %u\n", oinfo.global_alpha_en);
|
|
||||||
printf("\toinfo.global_alpha: %u\n", oinfo.global_alpha);
|
|
||||||
printf("\toinfo.pre_mult_alpha_en: %u\n", oinfo.pre_mult_alpha_en);
|
|
||||||
printf("\toinfo.zorder: %u\n", oinfo.zorder);
|
|
||||||
|
|
||||||
if (ioctl(gfx.fb, OWLFB_OVERLAY_GETINFO, &overlay_args)) {
|
|
||||||
printf("OWLFB_OVERLAY_GETINFO failed: %s (%i)\n", strerror(errno), errno);
|
|
||||||
}
|
|
||||||
|
|
||||||
puts("after GETINFO");
|
|
||||||
printf("\toverlay_args.fb_id: %u\n", overlay_args.fb_id);
|
|
||||||
printf("\toverlay_args.overlay_id: %u\n", overlay_args.overlay_id);
|
|
||||||
printf("\toverlay_args.overlay_type: %u\n", overlay_args.overlay_type);
|
|
||||||
printf("\toverlay_args.overlay_mem_base: %u\n", overlay_args.overlay_mem_base); // remain 0...
|
|
||||||
printf("\toverlay_args.overlay_mem_size: %u\n", overlay_args.overlay_mem_size); // remain 0...
|
|
||||||
|
|
||||||
printf("\toinfo.mem_off: %u\n", oinfo.mem_off); // possibly returning -1?
|
|
||||||
printf("\toinfo.mem_size: %u\n", oinfo.mem_size); // possibly returning -1?
|
|
||||||
printf("\toinfo.screen_width: %u\n", oinfo.screen_width); // 8???
|
|
||||||
printf("\toinfo.color_mode: %u\n", oinfo.color_mode); // 0 = OWL_DSS_COLOR_RGB16
|
|
||||||
printf("\toinfo.img_width: %u\n", oinfo.img_width);
|
|
||||||
printf("\toinfo.img_height: %u\n", oinfo.img_height);
|
|
||||||
printf("\toinfo.xoff: %u\n", oinfo.xoff);
|
|
||||||
printf("\toinfo.yoff: %u\n", oinfo.yoff);
|
|
||||||
printf("\toinfo.width: %u\n", oinfo.width);
|
|
||||||
printf("\toinfo.height: %u\n", oinfo.height);
|
|
||||||
printf("\toinfo.rotation: %u\n", oinfo.rotation);
|
|
||||||
printf("\toinfo.pos_x: %u\n", oinfo.pos_x);
|
|
||||||
printf("\toinfo.pos_y: %u\n", oinfo.pos_y);
|
|
||||||
printf("\toinfo.out_width: %u\n", oinfo.out_width);
|
|
||||||
printf("\toinfo.out_height: %u\n", oinfo.out_height);
|
|
||||||
printf("\toinfo.lightness: %u\n", oinfo.lightness);
|
|
||||||
printf("\toinfo.saturation: %u\n", oinfo.saturation);
|
|
||||||
printf("\toinfo.contrast: %u\n", oinfo.contrast);
|
|
||||||
printf("\toinfo.global_alpha_en: %u\n", oinfo.global_alpha_en);
|
|
||||||
printf("\toinfo.global_alpha: %u\n", oinfo.global_alpha);
|
|
||||||
printf("\toinfo.pre_mult_alpha_en: %u\n", oinfo.pre_mult_alpha_en);
|
|
||||||
printf("\toinfo.zorder: %u\n", oinfo.zorder);
|
|
||||||
|
|
||||||
// TODO: where is the memory for this!?
|
|
||||||
oinfo.screen_width = SCREEN_WIDTH;
|
|
||||||
oinfo.color_mode = OWL_DSS_COLOR_ARGB32;
|
|
||||||
|
|
||||||
if (ioctl(gfx.fb, OWLFB_OVERLAY_SETINFO, &overlay_args)) {
|
|
||||||
printf("OWLFB_OVERLAY_SETINFO failed: %s (%i)\n", strerror(errno), errno);
|
|
||||||
}
|
|
||||||
|
|
||||||
puts("after SETINFO");
|
|
||||||
printf("\toverlay_args.fb_id: %u\n", overlay_args.fb_id);
|
|
||||||
printf("\toverlay_args.overlay_id: %u\n", overlay_args.overlay_id);
|
|
||||||
printf("\toverlay_args.overlay_type: %u\n", overlay_args.overlay_type);
|
|
||||||
printf("\toverlay_args.overlay_mem_base: %u\n", overlay_args.overlay_mem_base);
|
|
||||||
printf("\toverlay_args.overlay_mem_size: %u\n", overlay_args.overlay_mem_size);
|
|
||||||
|
|
||||||
printf("\toinfo.mem_off: %u\n", oinfo.mem_off);
|
|
||||||
printf("\toinfo.mem_size: %u\n", oinfo.mem_size);
|
|
||||||
printf("\toinfo.screen_width: %u\n", oinfo.screen_width); // 8???
|
|
||||||
printf("\toinfo.color_mode: %u\n", oinfo.color_mode); // 0 = OWL_DSS_COLOR_RGB16
|
|
||||||
printf("\toinfo.img_width: %u\n", oinfo.img_width);
|
|
||||||
printf("\toinfo.img_height: %u\n", oinfo.img_height);
|
|
||||||
printf("\toinfo.xoff: %u\n", oinfo.xoff);
|
|
||||||
printf("\toinfo.yoff: %u\n", oinfo.yoff);
|
|
||||||
printf("\toinfo.width: %u\n", oinfo.width);
|
|
||||||
printf("\toinfo.height: %u\n", oinfo.height);
|
|
||||||
printf("\toinfo.rotation: %u\n", oinfo.rotation);
|
|
||||||
printf("\toinfo.pos_x: %u\n", oinfo.pos_x);
|
|
||||||
printf("\toinfo.pos_y: %u\n", oinfo.pos_y);
|
|
||||||
printf("\toinfo.out_width: %u\n", oinfo.out_width);
|
|
||||||
printf("\toinfo.out_height: %u\n", oinfo.out_height);
|
|
||||||
printf("\toinfo.lightness: %u\n", oinfo.lightness);
|
|
||||||
printf("\toinfo.saturation: %u\n", oinfo.saturation);
|
|
||||||
printf("\toinfo.contrast: %u\n", oinfo.contrast);
|
|
||||||
printf("\toinfo.global_alpha_en: %u\n", oinfo.global_alpha_en);
|
|
||||||
printf("\toinfo.global_alpha: %u\n", oinfo.global_alpha);
|
|
||||||
printf("\toinfo.pre_mult_alpha_en: %u\n", oinfo.pre_mult_alpha_en);
|
|
||||||
printf("\toinfo.zorder: %u\n", oinfo.zorder);
|
|
||||||
|
|
||||||
// NOTE: SETINFO automatically enables overlay
|
|
||||||
if (ioctl(gfx.fb, OWLFB_OVERLAY_ENABLE, &overlay_args)) {
|
|
||||||
printf("OWLFB_OVERLAY_ENABLE failed: %s (%i)\n", strerror(errno), errno);
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: /sys/devices/platform/owldss/overlay1/enabled == 1 at this point
|
|
||||||
|
|
||||||
if (ioctl(gfx.fb, OWLFB_OVERLAY_DISABLE, &overlay_args)) {
|
|
||||||
printf("OWLFB_OVERLAY_DISABLE failed: %s (%i)\n", strerror(errno), errno);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ioctl(gfx.fb, OWLFB_OVERLAY_RELEASE, &overlay_args)) {
|
|
||||||
printf("OWLFB_OVERLAY_RELEASE failed: %s (%i)\n", strerror(errno), errno);
|
|
||||||
}
|
|
||||||
|
|
||||||
puts("---");
|
|
||||||
fflush(stdout);
|
|
||||||
|
|
||||||
}
|
|
||||||
// OVERLAY testing
|
|
||||||
|
|
||||||
// buffer tracking
|
// buffer tracking
|
||||||
#ifdef GFX_ENABLE_BUFFER
|
#ifdef GFX_ENABLE_BUFFER
|
||||||
gfx.buffer = 1;
|
gfx.buffer = 1;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue