rsApiContext.cpp revision dd4c8f195233eeebc55c94da082da17973e6ca61
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
2411496ac131bb691edf5bdcab3029dceef5c1e4e1Chih-Hung Hsiehusing android::renderscript::Context;
2511496ac131bb691edf5bdcab3029dceef5c1e4e1Chih-Hung Hsiehusing android::renderscript::Device;
2611496ac131bb691edf5bdcab3029dceef5c1e4e1Chih-Hung Hsiehusing android::renderscript::ObjectBase;
273df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni
283df9bb0bd784bd9d01653de4de13af0982528a44Yang Niextern "C" RsContext rsContextCreate(RsDevice vdev, uint32_t version, uint32_t sdkVersion,
293df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni                                      RsContextType ct, uint32_t flags) {
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
45dd4c8f195233eeebc55c94da082da17973e6ca61Miao Wang// TODO: Figure out better naming schemes for all the rs* functions.
46dd4c8f195233eeebc55c94da082da17973e6ca61Miao Wang// Currently they share the same names as the NDK counterparts, and that is
47dd4c8f195233eeebc55c94da082da17973e6ca61Miao Wang// causing lots of confusion.
483df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni#ifndef RS_COMPATIBILITY_LIB
49dd4c8f195233eeebc55c94da082da17973e6ca61Miao Wangextern "C" RsContext rsContextCreateGL(RsDevice vdev, uint32_t version,
50dd4c8f195233eeebc55c94da082da17973e6ca61Miao Wang                                       uint32_t sdkVersion, RsSurfaceConfig sc,
51dd4c8f195233eeebc55c94da082da17973e6ca61Miao Wang                                       uint32_t dpi) {
523df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    //ALOGV("rsContextCreateGL dev=%p", vdev);
533df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    Device * dev = static_cast<Device *>(vdev);
543df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    Context *rsc = Context::createContext(dev, &sc);
553df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    if (rsc) {
563df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni        rsc->setTargetSdkVersion(sdkVersion);
573df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni        rsc->setDPI(dpi);
583df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    }
593df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    //ALOGV("%p rsContextCreateGL ret", rsc);
603df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    return rsc;
613df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni}
623df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni#endif
633df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni
643df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni// Only to be called at a3d load time, before object is visible to user
653df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni// not thread safe
663df9bb0bd784bd9d01653de4de13af0982528a44Yang Niextern "C" void rsaGetName(RsContext con, void * obj, const char **name) {
673df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    ObjectBase *ob = static_cast<ObjectBase *>(obj);
683df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni    (*name) = ob->getName();
693df9bb0bd784bd9d01653de4de13af0982528a44Yang Ni}
70