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