10f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/*
20f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Copyright (C) 2009 The Android Open Source Project
30f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines *
40f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Licensed under the Apache License, Version 2.0 (the "License");
50f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * you may not use this file except in compliance with the License.
60f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * You may obtain a copy of the License at
70f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines *
80f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines *      http://www.apache.org/licenses/LICENSE-2.0
90f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines *
100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Unless required by applicable law or agreed to in writing, software
110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * distributed under the License is distributed on an "AS IS" BASIS,
120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See the License for the specific language governing permissions and
140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * limitations under the License.
150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */
160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsDevice.h"
180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsContext.h"
190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesusing namespace android;
210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesusing namespace android::renderscript;
220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesDevice::Device() {
240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    mForceSW = false;
250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}
260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesDevice::~Device() {
280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}
290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesvoid Device::addContext(Context *rsc) {
310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    mContexts.push(rsc);
320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}
330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesvoid Device::removeContext(Context *rsc) {
350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    for (size_t idx=0; idx < mContexts.size(); idx++) {
360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines        if (mContexts[idx] == rsc) {
370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines            mContexts.removeAt(idx);
380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines            break;
390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines        }
400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    }
410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}
420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesRsDevice rsDeviceCreate() {
440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    Device * d = new Device();
450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    return d;
460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}
470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesvoid rsDeviceDestroy(RsDevice dev) {
490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    Device * d = static_cast<Device *>(dev);
500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    delete d;
510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}
520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesvoid rsDeviceSetConfig(RsDevice dev, RsDeviceParam p, int32_t value) {
540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    Device * d = static_cast<Device *>(dev);
550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    if (p == RS_DEVICE_PARAM_FORCE_SOFTWARE_GL) {
560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines        d->mForceSW = value != 0;
570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines        return;
580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    }
590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    rsAssert(0);
600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}
610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
62