1326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 2326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams/* 3326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Copyright (C) 2009 The Android Open Source Project 4326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * 5326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 6326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * you may not use this file except in compliance with the License. 7326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * You may obtain a copy of the License at 8326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * 9326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * http://www.apache.org/licenses/LICENSE-2.0 10326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * 11326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Unless required by applicable law or agreed to in writing, software 12326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 13326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * See the License for the specific language governing permissions and 15326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * limitations under the License. 16326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams */ 17326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 18326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#include "rsContext.h" 194edf030cbb7c6ac08dc563335c2af73c20f6e2e5Alex Sakhartchouk#include "rsAdapter.h" 20326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 21326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android; 22326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android::renderscript; 23326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 24afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukAdapter1D::Adapter1D(Context *rsc) : ObjectBase(rsc) { 25326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams reset(); 26326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 27326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 28afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukAdapter1D::Adapter1D(Context *rsc, Allocation *a) : ObjectBase(rsc) { 29326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams reset(); 30326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams setAllocation(a); 31326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 32326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 33afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Adapter1D::reset() { 34326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mY = 0; 35326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mZ = 0; 36326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mLOD = 0; 37a6dd823b9dcbd7ce7dfc34eda52a1e4104771f79Jason Sams mFace = RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X; 38326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 39326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 40a6dd823b9dcbd7ce7dfc34eda52a1e4104771f79Jason Samsvoid Adapter1D::data(Context *rsc, uint32_t x, uint32_t count, const void *data, size_t sizeBytes) { 4160c2796d821d9296003d4e5db025f8734d971a71Tim Murray mAllocation->data(rsc, x, mY, mLOD, mFace, count, 1, data, sizeBytes, 0); 42326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 43326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 44e3150cfb3edb028407669e4a65e087eae77e718cJason Samsvoid Adapter1D::serialize(Context *rsc, OStream *stream) const { 45fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 46fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 47afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukAdapter1D *Adapter1D::createFromStream(Context *rsc, IStream *stream) { 48fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk return NULL; 49fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 50fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 51326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace android { 52326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace renderscript { 53326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 54afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukRsAdapter1D rsi_Adapter1DCreate(Context *rsc) { 55e514b45de8561fbc6ef6770845102ca10b0a69d7Jason Sams Adapter1D *a = new Adapter1D(rsc); 569397e30ce5fe3f6af9212a93b490836b04fdfffaJason Sams a->incUserRef(); 57d3c8de2efc8f4f9287e0a8dfdeefb03ba6aaec98Jason Sams return a; 58326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 59326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 60afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_Adapter1DBindAllocation(Context *rsc, RsAdapter1D va, RsAllocation valloc) { 61326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Adapter1D * a = static_cast<Adapter1D *>(va); 62326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Allocation * alloc = static_cast<Allocation *>(valloc); 63326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setAllocation(alloc); 64326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 65326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 66afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_Adapter1DSetConstraint(Context *rsc, RsAdapter1D va, RsDimension dim, uint32_t value) { 67326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Adapter1D * a = static_cast<Adapter1D *>(va); 68afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchouk switch (dim) { 69326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_X: 70326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(!"Cannot contrain X in an 1D adapter"); 71326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return; 72326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_Y: 73326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setY(value); 74326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 75326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_Z: 76326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setZ(value); 77326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 78326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_LOD: 79326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setLOD(value); 80326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 81326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_FACE: 82a6dd823b9dcbd7ce7dfc34eda52a1e4104771f79Jason Sams a->setFace((RsAllocationCubemapFace)value); 83326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 84326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams default: 85326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(!"Unimplemented constraint"); 86326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return; 87326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 88326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 89326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 90326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 91326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 92326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 93326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams////////////////////////// 94326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 95afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukAdapter2D::Adapter2D(Context *rsc) : ObjectBase(rsc) { 96326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams reset(); 97326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 98326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 99afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukAdapter2D::Adapter2D(Context *rsc, Allocation *a) : ObjectBase(rsc) { 100326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams reset(); 101326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams setAllocation(a); 102326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 103326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 104afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Adapter2D::reset() { 105326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mZ = 0; 106326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mLOD = 0; 107a6dd823b9dcbd7ce7dfc34eda52a1e4104771f79Jason Sams mFace = RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X; 108326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 109326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 11084e4027f83b20af59f5b1fc52be6e45f159d3970Alex Sakhartchouk 111a6dd823b9dcbd7ce7dfc34eda52a1e4104771f79Jason Samsvoid Adapter2D::data(Context *rsc, uint32_t x, uint32_t y, uint32_t w, uint32_t h, 112a6dd823b9dcbd7ce7dfc34eda52a1e4104771f79Jason Sams const void *data, size_t sizeBytes) { 11360c2796d821d9296003d4e5db025f8734d971a71Tim Murray mAllocation->data(rsc, x, y, mLOD, mFace, w, h, data, sizeBytes, 0); 114326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 115326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 116326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 117e3150cfb3edb028407669e4a65e087eae77e718cJason Samsvoid Adapter2D::serialize(Context *rsc, OStream *stream) const { 118fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 119fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 120afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukAdapter2D *Adapter2D::createFromStream(Context *rsc, IStream *stream) { 121fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk return NULL; 122fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 123326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 124326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 125326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace android { 126326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace renderscript { 127326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 128afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukRsAdapter2D rsi_Adapter2DCreate(Context *rsc) { 129e514b45de8561fbc6ef6770845102ca10b0a69d7Jason Sams Adapter2D *a = new Adapter2D(rsc); 1309397e30ce5fe3f6af9212a93b490836b04fdfffaJason Sams a->incUserRef(); 131d3c8de2efc8f4f9287e0a8dfdeefb03ba6aaec98Jason Sams return a; 132326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 133326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 134afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_Adapter2DBindAllocation(Context *rsc, RsAdapter2D va, RsAllocation valloc) { 135326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Adapter2D * a = static_cast<Adapter2D *>(va); 136326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Allocation * alloc = static_cast<Allocation *>(valloc); 137326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setAllocation(alloc); 138326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 139326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 140afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_Adapter2DSetConstraint(Context *rsc, RsAdapter2D va, RsDimension dim, uint32_t value) { 141326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Adapter2D * a = static_cast<Adapter2D *>(va); 142afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchouk switch (dim) { 143326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_X: 144326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(!"Cannot contrain X in an 2D adapter"); 145326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return; 146326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_Y: 147326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(!"Cannot contrain Y in an 2D adapter"); 148326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 149326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_Z: 150326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setZ(value); 151326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 152326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_LOD: 153326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setLOD(value); 154326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 155326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_FACE: 156a6dd823b9dcbd7ce7dfc34eda52a1e4104771f79Jason Sams a->setFace((RsAllocationCubemapFace)value); 157326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 158326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams default: 159326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(!"Unimplemented constraint"); 160326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return; 161326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 162326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 163326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 164326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 165326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 166326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 167