14772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang#ifndef ANDROID_HARDWARE_RENDERSCRIPT_V1_0_DEVICE_H
24772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang#define ANDROID_HARDWARE_RENDERSCRIPT_V1_0_DEVICE_H
34772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang
44772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang#include "cpp/rsDispatch.h"
54772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang#include "dlfcn.h"
64772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang#include <android/hardware/renderscript/1.0/IDevice.h>
74772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang#include <hidl/MQDescriptor.h>
84772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang#include <hidl/Status.h>
94772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang
104772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wangnamespace android {
114772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wangnamespace hardware {
124772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wangnamespace renderscript {
134772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wangnamespace V1_0 {
144772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wangnamespace implementation {
154772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang
164772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wangusing ::android::hardware::renderscript::V1_0::ContextType;
174772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wangusing ::android::hardware::renderscript::V1_0::IContext;
184772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wangusing ::android::hardware::renderscript::V1_0::IDevice;
194772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wangusing ::android::hidl::base::V1_0::IBase;
204772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wangusing ::android::hardware::Return;
214772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wangusing ::android::sp;
224772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang
234772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wangstruct Device : public IDevice {
244772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang    Device();
254772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang    static dispatchTable& getHal();
264772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang
274772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang    // Methods from ::android::hardware::renderscript::V1_0::IDevice follow.
284772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang    Return<sp<IContext>> contextCreate(uint32_t sdkVersion, ContextType ct, int32_t flags) override;
294772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang
304772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang    // Methods from ::android::hidl::base::V1_0::IBase follow.
314772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang
324772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang private:
334772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang    static dispatchTable mDispatchHal;
344772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang};
354772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang
364772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wangextern "C" IDevice* HIDL_FETCH_IDevice(const char* name);
374772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang
384772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang}  // namespace implementation
394772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang}  // namespace V1_0
404772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang}  // namespace renderscript
414772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang}  // namespace hardware
424772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang}  // namespace android
434772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang
444772b6088a7d6faa6ac481bf2dd83633c9779d2fMiao Wang#endif  // ANDROID_HARDWARE_RENDERSCRIPT_V1_0_DEVICE_H
45