rsDevice.cpp revision ed9f210568082dd6d1d8a0c92c693d574d87d545
1d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams/* 2d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Copyright (C) 2009 The Android Open Source Project 3d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 4d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * you may not use this file except in compliance with the License. 6d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * You may obtain a copy of the License at 7d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 8d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 10d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Unless required by applicable law or agreed to in writing, software 11d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * See the License for the specific language governing permissions and 14d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * limitations under the License. 15d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams */ 16d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 17d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsDevice.h" 18aa7d2884cb563f87294003981e03e37a1abeb961Alex Sakhartchouk#ifndef ANDROID_RS_BUILD_FOR_HOST 19d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsContext.h" 20aa7d2884cb563f87294003981e03e37a1abeb961Alex Sakhartchouk#else 21aa7d2884cb563f87294003981e03e37a1abeb961Alex Sakhartchouk#include "rsContextHostStub.h" 22aa7d2884cb563f87294003981e03e37a1abeb961Alex Sakhartchouk#endif 23d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 24d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsusing namespace android; 25d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsusing namespace android::renderscript; 26d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 27ed9f210568082dd6d1d8a0c92c693d574d87d545Alex SakhartchoukDevice::Device() { 28ebfb436a49673693b98469683451bd9ede797557Jason Sams mForceSW = false; 29d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 30d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 31ed9f210568082dd6d1d8a0c92c693d574d87d545Alex SakhartchoukDevice::~Device() { 32d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 33d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 34ed9f210568082dd6d1d8a0c92c693d574d87d545Alex Sakhartchoukvoid Device::addContext(Context *rsc) { 35aa7d2884cb563f87294003981e03e37a1abeb961Alex Sakhartchouk mContexts.push(rsc); 36d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 37d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 38ed9f210568082dd6d1d8a0c92c693d574d87d545Alex Sakhartchoukvoid Device::removeContext(Context *rsc) { 39d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams for (size_t idx=0; idx < mContexts.size(); idx++) { 40d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams if (mContexts[idx] == rsc) { 41d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams mContexts.removeAt(idx); 42d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams break; 43d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 44d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams } 45d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 46d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 47ed9f210568082dd6d1d8a0c92c693d574d87d545Alex SakhartchoukRsDevice rsDeviceCreate() { 48d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams Device * d = new Device(); 49d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams return d; 50d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 51d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 52ed9f210568082dd6d1d8a0c92c693d574d87d545Alex Sakhartchoukvoid rsDeviceDestroy(RsDevice dev) { 53d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams Device * d = static_cast<Device *>(dev); 54d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams delete d; 55d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 56d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 57ed9f210568082dd6d1d8a0c92c693d574d87d545Alex Sakhartchoukvoid rsDeviceSetConfig(RsDevice dev, RsDeviceParam p, int32_t value) { 58ebfb436a49673693b98469683451bd9ede797557Jason Sams Device * d = static_cast<Device *>(dev); 59ebfb436a49673693b98469683451bd9ede797557Jason Sams if (p == RS_DEVICE_PARAM_FORCE_SOFTWARE_GL) { 60ebfb436a49673693b98469683451bd9ede797557Jason Sams d->mForceSW = value != 0; 61ebfb436a49673693b98469683451bd9ede797557Jason Sams return; 62ebfb436a49673693b98469683451bd9ede797557Jason Sams } 63ebfb436a49673693b98469683451bd9ede797557Jason Sams rsAssert(0); 64ebfb436a49673693b98469683451bd9ede797557Jason Sams} 65ebfb436a49673693b98469683451bd9ede797557Jason Sams 66