mdpWrapper.h revision 47377987cc4eef72ee3b0cdced8c3a15038b39eb
1befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/*
247377987cc4eef72ee3b0cdced8c3a15038b39ebNaseer Ahmed* Copyright (c) 2011, The Linux Foundation. All rights reserved.
3befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*
4befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* Redistribution and use in source and binary forms, with or without
5befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* modification, are permitted provided that the following conditions are
6befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* met:
7befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*    * Redistributions of source code must retain the above copyright
8befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*      notice, this list of conditions and the following disclaimer.
9befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*    * Redistributions in binary form must reproduce the above
10befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*      copyright notice, this list of conditions and the following
11befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*      disclaimer in the documentation and/or other materials provided
12befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*      with the distribution.
1347377987cc4eef72ee3b0cdced8c3a15038b39ebNaseer Ahmed*    * Neither the name of The Linux Foundation nor the names of its
14befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*      contributors may be used to endorse or promote products derived
15befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*      from this software without specific prior written permission.
16befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*
17befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed*/
29befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
30befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed#ifndef MDP_WRAPPER_H
31befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed#define MDP_WRAPPER_H
32befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
33befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/*
34befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* In order to make overlay::mdp_wrapper shorter, please do something like:
35befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* namespace mdpwrap = overlay::mdp_wrapper;
36befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed* */
37befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
38befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed#include <linux/msm_mdp.h>
39befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed#include <linux/msm_rotator.h>
40befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed#include <sys/ioctl.h>
41befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed#include <utils/Log.h>
42befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed#include <errno.h>
43befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed#include "overlayUtils.h"
44befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
45befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmednamespace overlay{
46befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
47befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmednamespace mdp_wrapper{
48befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/* FBIOGET_FSCREENINFO */
49befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedbool getFScreenInfo(int fd, fb_fix_screeninfo& finfo);
50befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
51befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/* FBIOGET_VSCREENINFO */
52befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedbool getVScreenInfo(int fd, fb_var_screeninfo& vinfo);
53befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
54befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/* FBIOPUT_VSCREENINFO */
55befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedbool setVScreenInfo(int fd, fb_var_screeninfo& vinfo);
56befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
57befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/* MSM_ROTATOR_IOCTL_START */
58befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedbool startRotator(int fd, msm_rotator_img_info& rot);
59befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
60befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/* MSM_ROTATOR_IOCTL_ROTATE */
61befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedbool rotate(int fd, msm_rotator_data_info& rot);
62befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
63befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/* MSMFB_OVERLAY_SET */
64befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedbool setOverlay(int fd, mdp_overlay& ov);
65befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
66befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/* MSM_ROTATOR_IOCTL_FINISH */
67befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedbool endRotator(int fd, int sessionId);
68befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
69befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/* MSMFB_OVERLAY_UNSET */
70befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedbool unsetOverlay(int fd, int ovId);
71befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
72befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/* MSMFB_OVERLAY_GET */
73befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedbool getOverlay(int fd, mdp_overlay& ov);
74befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
75befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/* MSMFB_OVERLAY_PLAY */
76befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedbool play(int fd, msmfb_overlay_data& od);
77befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
78befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/* MSMFB_OVERLAY_3D */
79befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedbool set3D(int fd, msmfb_overlay_3d& ov);
80befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
81befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/* the following are helper functions for dumping
82befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed * msm_mdp and friends*/
83befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedvoid dump(const char* const s, const msmfb_overlay_data& ov);
84befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedvoid dump(const char* const s, const msmfb_data& ov);
85befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedvoid dump(const char* const s, const mdp_overlay& ov);
86befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedvoid dump(const char* const s, const msmfb_overlay_3d& ov);
87befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedvoid dump(const char* const s, const uint32_t u[], uint32_t cnt);
88befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedvoid dump(const char* const s, const msmfb_img& ov);
89befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedvoid dump(const char* const s, const mdp_rect& ov);
90befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
91befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/* and rotator */
92befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedvoid dump(const char* const s, const msm_rotator_img_info& rot);
93befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedvoid dump(const char* const s, const msm_rotator_data_info& rot);
94befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
95befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/* info */
96befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedvoid dump(const char* const s, const fb_fix_screeninfo& finfo);
97befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedvoid dump(const char* const s, const fb_var_screeninfo& vinfo);
98befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
99befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed//---------------Inlines -------------------------------------
100befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
101befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline bool getFScreenInfo(int fd, fb_fix_screeninfo& finfo) {
102ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    if (ioctl(fd, FBIOGET_FSCREENINFO, &finfo) < 0) {
103ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed        ALOGE("Failed to call ioctl FBIOGET_FSCREENINFO err=%s",
104ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed                strerror(errno));
105befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed        return false;
106befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    }
107befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    return true;
108befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
109befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
110befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline bool getVScreenInfo(int fd, fb_var_screeninfo& vinfo) {
111ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) < 0) {
112ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed        ALOGE("Failed to call ioctl FBIOGET_VSCREENINFO err=%s",
113ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed                strerror(errno));
114befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed        return false;
115befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    }
116befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    return true;
117befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
118befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
119befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline bool setVScreenInfo(int fd, fb_var_screeninfo& vinfo) {
120ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    if (ioctl(fd, FBIOPUT_VSCREENINFO, &vinfo) < 0) {
121ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed        ALOGE("Failed to call ioctl FBIOPUT_VSCREENINFO err=%s",
122ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed                strerror(errno));
123befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed        return false;
124befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    }
125befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    return true;
126befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
127befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
128befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline bool startRotator(int fd, msm_rotator_img_info& rot) {
129ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    if (ioctl(fd, MSM_ROTATOR_IOCTL_START, &rot) < 0){
130ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed        ALOGE("Failed to call ioctl MSM_ROTATOR_IOCTL_START err=%s",
131ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed                strerror(errno));
132befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed        return false;
133befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    }
134befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    return true;
135befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
136befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
137befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline bool rotate(int fd, msm_rotator_data_info& rot) {
138ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    if (ioctl(fd, MSM_ROTATOR_IOCTL_ROTATE, &rot) < 0) {
139ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed        ALOGE("Failed to call ioctl MSM_ROTATOR_IOCTL_ROTATE err=%s",
140ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed                strerror(errno));
141befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed        return false;
142befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    }
143befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    return true;
144befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
145befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
146befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline bool setOverlay(int fd, mdp_overlay& ov) {
147ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    if (ioctl(fd, MSMFB_OVERLAY_SET, &ov) < 0) {
148ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed        ALOGE("Failed to call ioctl MSMFB_OVERLAY_SET err=%s",
149ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed                strerror(errno));
150befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed        return false;
151befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    }
152befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    return true;
153befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
154befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
15547377987cc4eef72ee3b0cdced8c3a15038b39ebNaseer Ahmedinline bool endRotator(int fd, uint32_t sessionId) {
156ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    if (ioctl(fd, MSM_ROTATOR_IOCTL_FINISH, &sessionId) < 0) {
157ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed        ALOGE("Failed to call ioctl MSM_ROTATOR_IOCTL_FINISH err=%s",
158ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed                strerror(errno));
159befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed        return false;
160befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    }
161befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    return true;
162befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
163befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
164befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline bool unsetOverlay(int fd, int ovId) {
165ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    if (ioctl(fd, MSMFB_OVERLAY_UNSET, &ovId) < 0) {
166ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed        ALOGE("Failed to call ioctl MSMFB_OVERLAY_UNSET err=%s",
167ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed                strerror(errno));
168befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed        return false;
169befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    }
170befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    return true;
171befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
172befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
173befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline bool getOverlay(int fd, mdp_overlay& ov) {
174ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    if (ioctl(fd, MSMFB_OVERLAY_GET, &ov) < 0) {
175ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed        ALOGE("Failed to call ioctl MSMFB_OVERLAY_GET err=%s",
176ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed                strerror(errno));
177befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed        return false;
178befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    }
179befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    return true;
180befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
181befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
182befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline bool play(int fd, msmfb_overlay_data& od) {
183ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    if (ioctl(fd, MSMFB_OVERLAY_PLAY, &od) < 0) {
184ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed        ALOGE("Failed to call ioctl MSMFB_OVERLAY_PLAY err=%s",
185ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed                strerror(errno));
186befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed        return false;
187befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    }
188befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    return true;
189befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
190befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
191befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline bool set3D(int fd, msmfb_overlay_3d& ov) {
192ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed    if (ioctl(fd, MSMFB_OVERLAY_3D, &ov) < 0) {
193ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed        ALOGE("Failed to call ioctl MSMFB_OVERLAY_3D err=%s",
194ee7fc0347e52276d43413e91f31d72d6db99dcfbNaseer Ahmed                strerror(errno));
195befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed        return false;
196befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    }
197befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    return true;
198befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
199befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
200befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed/* dump funcs */
201befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline void dump(const char* const s, const msmfb_overlay_data& ov) {
202befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    ALOGE("%s msmfb_overlay_data id=%d",
203befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed            s, ov.id);
204befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    dump("data", ov.data);
205befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
206befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline void dump(const char* const s, const msmfb_data& ov) {
207befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    ALOGE("%s msmfb_data offset=%d memid=%d id=%d flags=0x%x priv=%d",
208befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed            s, ov.offset, ov.memory_id, ov.id, ov.flags, ov.priv);
209befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
210befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline void dump(const char* const s, const mdp_overlay& ov) {
211befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    ALOGE("%s mdp_overlay z=%d fg=%d alpha=%d mask=%d flags=0x%x id=%d",
212befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed            s, ov.z_order, ov.is_fg, ov.alpha,
213befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed            ov.transp_mask, ov.flags, ov.id);
214befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    dump("src", ov.src);
215befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    dump("src_rect", ov.src_rect);
216befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    dump("dst_rect", ov.dst_rect);
21747377987cc4eef72ee3b0cdced8c3a15038b39ebNaseer Ahmed    /*
21847377987cc4eef72ee3b0cdced8c3a15038b39ebNaseer Ahmed    Commented off to prevent verbose logging, since user_data could have 8 or so
21947377987cc4eef72ee3b0cdced8c3a15038b39ebNaseer Ahmed    fields which are mostly 0
220befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    dump("user_data", ov.user_data,
221befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed            sizeof(ov.user_data)/sizeof(ov.user_data[0]));
22247377987cc4eef72ee3b0cdced8c3a15038b39ebNaseer Ahmed    */
223befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
224befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline void dump(const char* const s, const msmfb_img& ov) {
225befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    ALOGE("%s msmfb_img w=%d h=%d format=%d %s",
226befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed            s, ov.width, ov.height, ov.format,
227befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed            overlay::utils::getFormatString(ov.format));
228befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
229befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline void dump(const char* const s, const mdp_rect& ov) {
230befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    ALOGE("%s mdp_rect x=%d y=%d w=%d h=%d",
231befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed            s, ov.x, ov.y, ov.w, ov.h);
232befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
233befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
234befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline void dump(const char* const s, const msmfb_overlay_3d& ov) {
235befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    ALOGE("%s msmfb_overlay_3d 3d=%d w=%d h=%d",
236befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed            s, ov.is_3d, ov.width, ov.height);
237befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
238befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
239befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline void dump(const char* const s, const uint32_t u[], uint32_t cnt) {
240befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    ALOGE("%s user_data cnt=%d", s, cnt);
241befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    for(uint32_t i=0; i < cnt; ++i) {
242befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed        ALOGE("i=%d val=%d", i, u[i]);
243befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    }
244befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
245befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline void dump(const char* const s, const msm_rotator_img_info& rot) {
24647377987cc4eef72ee3b0cdced8c3a15038b39ebNaseer Ahmed    ALOGE("%s msm_rotator_img_info sessid=%u dstx=%d dsty=%d rot=%d, ena=%d",
247befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed            s, rot.session_id, rot.dst_x, rot.dst_y,
248befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed            rot.rotations, rot.enable);
249befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    dump("src", rot.src);
250befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    dump("dst", rot.dst);
251befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    dump("src_rect", rot.src_rect);
252befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
253befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline void dump(const char* const s, const msm_rotator_data_info& rot) {
25447377987cc4eef72ee3b0cdced8c3a15038b39ebNaseer Ahmed    ALOGE("%s msm_rotator_data_info sessid=%u verkey=%d",
255befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed            s, rot.session_id, rot.version_key);
256befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    dump("src", rot.src);
257befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    dump("dst", rot.dst);
258befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    dump("src_chroma", rot.src_chroma);
259befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    dump("dst_chroma", rot.dst_chroma);
260befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
261befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline void dump(const char* const s, const fb_fix_screeninfo& finfo) {
262befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    ALOGE("%s fb_fix_screeninfo type=%d", s, finfo.type);
263befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
264befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmedinline void dump(const char* const s, const fb_var_screeninfo& vinfo) {
265befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed    ALOGE("%s fb_var_screeninfo xres=%d yres=%d",
266befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed            s, vinfo.xres, vinfo.yres);
267befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed}
268befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
269befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed} // mdp_wrapper
270befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
271befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed} // overlay
272befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed
273befc466069680cb8a65b1f22ad44723d949128c8Naseer Ahmed#endif // MDP_WRAPPER_H
274