185d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni/*
285d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni * Copyright (C) 2016 The Android Open Source Project
385d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni *
485d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni * Licensed under the Apache License, Version 2.0 (the "License");
585d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni * you may not use this file except in compliance with the License.
685d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni * You may obtain a copy of the License at
785d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni *
885d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni *      http://www.apache.org/licenses/LICENSE-2.0
985d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni *
1085d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni * Unless required by applicable law or agreed to in writing, software
1185d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni * distributed under the License is distributed on an "AS IS" BASIS,
1285d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1385d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni * See the License for the specific language governing permissions and
1485d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni * limitations under the License.
1585d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni */
1685d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni
1785d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni#include "rsDevice.h"
1885d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni#include "rsContext.h"
1985d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni#include "rsThreadIO.h"
2085d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni#include "rsgApiStructs.h"
2185d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni#include "rsgApiFuncDecl.h"
2285d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni#include "rsFifo.h"
2385d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni
2411496ac131bb691edf5bdcab3029dceef5c1e4e1Chih-Hung Hsiehnamespace android {
2511496ac131bb691edf5bdcab3029dceef5c1e4e1Chih-Hung Hsiehnamespace renderscript {
2685d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni
2785d0cb112010781ad07b5979f0824b7f0ae3987eYang Niextern "C" RsDevice rsDeviceCreate() {
2885d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni    Device * d = new Device();
2985d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni    return d;
3085d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni}
3185d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni
3285d0cb112010781ad07b5979f0824b7f0ae3987eYang Niextern "C" void rsDeviceDestroy(RsDevice dev) {
338ca49acfcc784355bd806f87701747a4c1ab9749Yang Ni    // A Device should be destroyed in the destructor of the associated Context.
348ca49acfcc784355bd806f87701747a4c1ab9749Yang Ni    // Keep this empty function here even after calls to nDeviceDestroy() in
358ca49acfcc784355bd806f87701747a4c1ab9749Yang Ni    // RenderScript.helpDestroy() have been removed. This is necessary to keep
368ca49acfcc784355bd806f87701747a4c1ab9749Yang Ni    // existing apps running.
3785d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni}
3885d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni
3985d0cb112010781ad07b5979f0824b7f0ae3987eYang Niextern "C" void rsDeviceSetConfig(RsDevice dev, RsDeviceParam p, int32_t value) {
4085d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni    Device * d = static_cast<Device *>(dev);
4185d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni    if (p == RS_DEVICE_PARAM_FORCE_SOFTWARE_GL) {
4285d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni        d->mForceSW = value != 0;
4385d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni        return;
4485d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni    }
4585d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni    rsAssert(0);
4685d0cb112010781ad07b5979f0824b7f0ae3987eYang Ni}
4711496ac131bb691edf5bdcab3029dceef5c1e4e1Chih-Hung Hsieh
4811496ac131bb691edf5bdcab3029dceef5c1e4e1Chih-Hung Hsieh} // namespace renderscript
4911496ac131bb691edf5bdcab3029dceef5c1e4e1Chih-Hung Hsieh} // namespace android
50