blob: bdfeae5c9d13e56e3738413899b9dfd74166485e [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>
34
35
36using namespace vpu;
37namespace qhwc {
38
39VPUClient::VPUClient()
40{
41 mVPULib = dlopen("libvpu.so", RTLD_NOW);
42 VPU* (*init)();
43 *(void **) &init = dlsym(mVPULib, "getObject");
44 if(init)
45 mVPU = init();
46 else
47 mVPU = NULL;
48}
49
50VPUClient::~VPUClient()
51{
52 void (*destroy) (VPU*);
53 *(void **) &destroy = dlsym(mVPULib, "deleteObject");
54 dlclose(mVPULib);
55}
56
57int VPUClient::prepare(hwc_context_t *ctx,
58 hwc_display_contents_1_t* list)
59{
60 int err = 0;
61 if(!mVPU)
62 return err;
63 // * Check VPU status
64 // * Check session availability
65 // * Other individual checks
66 // Do not pass hwc context/list
67 // Mark buffers to be drawn for VPU
68 return err;
69}
70
71int VPUClient::draw(hwc_context_t *ctx,
72 hwc_display_contents_1_t* list)
73{
74 int err = 0;
75 if(!mVPU)
76 return err;
77 // Queue buffers to VPU
78 return err;
79}
80
81int VPUClient::processCommand(uint32_t command, uint32_t setting)
82{
83 if(!mVPU)
84 return 0;
85 return mVPU->processCommand(command, setting);
86}
87
88}; // namespace qhwc