rsApiContext.cpp revision 3df9bb0bd784bd9d01653de4de13af0982528a44
13df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni/*
23df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni * Copyright (C) 2016 The Android Open Source Project
33df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni *
43df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni * Licensed under the Apache License, Version 2.0 (the "License");
53df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni * you may not use this file except in compliance with the License.
63df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni * You may obtain a copy of the License at
73df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni *
83df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni *      http://www.apache.org/licenses/LICENSE-2.0
93df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni *
103df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni * Unless required by applicable law or agreed to in writing, software
113df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni * distributed under the License is distributed on an "AS IS" BASIS,
123df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni * See the License for the specific language governing permissions and
143df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni * limitations under the License.
153df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni */
163df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni
173df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni#include "rsDevice.h"
183df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni#include "rsContext.h"
193df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni#include "rsThreadIO.h"
203df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni#include "rsgApiStructs.h"
213df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni#include "rsgApiFuncDecl.h"
223df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni#include "rsFifo.h"
233df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni
243df9bb0bd784bd9d01653de4de13af0982528a44Yang Niusing namespace android;
253df9bb0bd784bd9d01653de4de13af0982528a44Yang Niusing namespace android::renderscript;
263df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni
273df9bb0bd784bd9d01653de4de13af0982528a44Yang Niextern "C" RsContext rsContextCreate(RsDevice vdev, uint32_t version, uint32_t sdkVersion,
283df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni                                      RsContextType ct, uint32_t flags) {
293df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    //ALOGV("rsContextCreate dev=%p", vdev);
303df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    Device * dev = static_cast<Device *>(vdev);
313df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    Context *rsc = Context::createContext(dev, nullptr, ct, flags);
323df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    if (rsc) {
333df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni        rsc->setTargetSdkVersion(sdkVersion);
343df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    }
353df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    return rsc;
363df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni}
373df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni
383df9bb0bd784bd9d01653de4de13af0982528a44Yang Niextern "C" void rsaContextSetNativeLibDir(RsContext con, char *libDir, size_t length) {
393df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni#ifdef RS_COMPATIBILITY_LIB
403df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    Context *rsc = static_cast<Context *>(con);
413df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    rsc->setNativeLibDir(libDir, length);
423df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni#endif
433df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni}
443df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni
453df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni#ifndef RS_COMPATIBILITY_LIB
463df9bb0bd784bd9d01653de4de13af0982528a44Yang NiRsContext rsContextCreateGL(RsDevice vdev, uint32_t version,
473df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni                            uint32_t sdkVersion, RsSurfaceConfig sc,
483df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni                            uint32_t dpi) {
493df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    //ALOGV("rsContextCreateGL dev=%p", vdev);
503df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    Device * dev = static_cast<Device *>(vdev);
513df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    Context *rsc = Context::createContext(dev, &sc);
523df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    if (rsc) {
533df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni        rsc->setTargetSdkVersion(sdkVersion);
543df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni        rsc->setDPI(dpi);
553df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    }
563df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    //ALOGV("%p rsContextCreateGL ret", rsc);
573df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    return rsc;
583df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni}
593df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni#endif
603df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni
613df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni// Only to be called at a3d load time, before object is visible to user
623df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni// not thread safe
633df9bb0bd784bd9d01653de4de13af0982528a44Yang Niextern "C" void rsaGetName(RsContext con, void * obj, const char **name) {
643df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    ObjectBase *ob = static_cast<ObjectBase *>(obj);
653df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    (*name) = ob->getName();
663df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni}
67