1326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams/* 2326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Copyright (C) 2009 The Android Open Source Project 3326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * 4326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * you may not use this file except in compliance with the License. 6326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * You may obtain a copy of the License at 7326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * 8326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * 10326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Unless required by applicable law or agreed to in writing, software 11326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * See the License for the specific language governing permissions and 14326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * limitations under the License. 15326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams */ 16326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 17326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#include "rsDevice.h" 18326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#include "rsContext.h" 19326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 20326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android; 21326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android::renderscript; 22326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 23afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukDevice::Device() { 245fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams mForceSW = false; 25326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 26326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 27afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukDevice::~Device() { 28326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 29326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 30afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Device::addContext(Context *rsc) { 31fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk mContexts.push(rsc); 32326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 33326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 34afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Device::removeContext(Context *rsc) { 35326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams for (size_t idx=0; idx < mContexts.size(); idx++) { 36326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams if (mContexts[idx] == rsc) { 37326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mContexts.removeAt(idx); 38326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 39326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 40326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 41326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 42326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 43c2ce707a3d1a8eae79bcf1c749afc6d6e7969ad9Tim Murrayextern "C" RsDevice rsDeviceCreate() { 44326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Device * d = new Device(); 45326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return d; 46326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 47326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 48c2ce707a3d1a8eae79bcf1c749afc6d6e7969ad9Tim Murrayextern "C" void rsDeviceDestroy(RsDevice dev) { 49326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Device * d = static_cast<Device *>(dev); 50326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams delete d; 51326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 52326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 53c2ce707a3d1a8eae79bcf1c749afc6d6e7969ad9Tim Murrayextern "C" void rsDeviceSetConfig(RsDevice dev, RsDeviceParam p, int32_t value) { 545fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams Device * d = static_cast<Device *>(dev); 555fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams if (p == RS_DEVICE_PARAM_FORCE_SOFTWARE_GL) { 565fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams d->mForceSW = value != 0; 575fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams return; 585fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams } 595fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams rsAssert(0); 605fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams} 615fd09d847586f9680b4f495413b6ca5fbb69af6eJason Sams 62