blob: 23c684174168acb9527e4375a32124f5e98c1d30 [file] [log] [blame]
Naseer Ahmed58780b92013-07-29 17:41:40 -04001/*
2* Copyright (c) 2013 The Linux Foundation. All rights reserved.
3*
4* Redistribution and use in source and binary forms, with or without
5* modification, are permitted provided that the following conditions are
6* met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above
10* copyright notice, this list of conditions and the following
11* disclaimer in the documentation and/or other materials provided
12* with the distribution.
13* * Neither the name of The Linux Foundation. nor the names of its
14* contributors may be used to endorse or promote products derived
15* from this software without specific prior written permission.
16*
17* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28*/
29
30#include <dlfcn.h>
31#include "hwc_vpuclient.h"
32#include "hwc_utils.h"
33#include <vpu/vpu.h>
Naseer Ahmed4957c522013-11-12 18:07:15 -050034#include <binder/Parcel.h>
Naseer Ahmed58780b92013-07-29 17:41:40 -040035
36
37using namespace vpu;
Naseer Ahmed4957c522013-11-12 18:07:15 -050038using namespace android;
Naseer Ahmed58780b92013-07-29 17:41:40 -040039namespace qhwc {
40
41VPUClient::VPUClient()
42{
43 mVPULib = dlopen("libvpu.so", RTLD_NOW);
44 VPU* (*init)();
45 *(void **) &init = dlsym(mVPULib, "getObject");
46 if(init)
47 mVPU = init();
48 else
49 mVPU = NULL;
50}
51
52VPUClient::~VPUClient()
53{
54 void (*destroy) (VPU*);
55 *(void **) &destroy = dlsym(mVPULib, "deleteObject");
56 dlclose(mVPULib);
57}
58
59int VPUClient::prepare(hwc_context_t *ctx,
60 hwc_display_contents_1_t* list)
61{
62 int err = 0;
63 if(!mVPU)
64 return err;
65 // * Check VPU status
66 // * Check session availability
67 // * Other individual checks
68 // Do not pass hwc context/list
69 // Mark buffers to be drawn for VPU
70 return err;
71}
72
73int VPUClient::draw(hwc_context_t *ctx,
74 hwc_display_contents_1_t* list)
75{
76 int err = 0;
77 if(!mVPU)
78 return err;
79 // Queue buffers to VPU
80 return err;
81}
82
Naseer Ahmed4957c522013-11-12 18:07:15 -050083int VPUClient::processCommand(uint32_t command,
84 const Parcel* inParcel, Parcel* outParcel)
Naseer Ahmed58780b92013-07-29 17:41:40 -040085{
86 if(!mVPU)
87 return 0;
Naseer Ahmed4957c522013-11-12 18:07:15 -050088 //XXX: Enable when VPU enables it
89 //return mVPU->processCommand(command, inParcel, outParcel);
90 return 0;
Naseer Ahmed58780b92013-07-29 17:41:40 -040091}
92
93}; // namespace qhwc