rsAdapter.cpp revision 4edf030cbb7c6ac08dc563335c2af73c20f6e2e5
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; 37326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mFace = 0; 38326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 39326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 40afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid * Adapter1D::getElement(uint32_t x) { 41326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(mAllocation.get()); 42326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(mAllocation->getPtr()); 43326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(mAllocation->getType()); 44326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams uint8_t * ptr = static_cast<uint8_t *>(mAllocation->getPtr()); 45326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ptr += mAllocation->getType()->getLODOffset(mLOD, x, mY); 46326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return ptr; 47326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 48326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 49afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Adapter1D::subData(uint32_t xoff, uint32_t count, const void *data) { 50326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams if (mAllocation.get() && mAllocation.get()->getType()) { 51326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams void *ptr = getElement(xoff); 52326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams count *= mAllocation.get()->getType()->getElementSizeBytes(); 53326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams memcpy(ptr, data, count); 54326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 55326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 56326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 57afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Adapter1D::data(const void *data) { 58d3c8de2efc8f4f9287e0a8dfdeefb03ba6aaec98Jason Sams memcpy(getElement(0), 59d3c8de2efc8f4f9287e0a8dfdeefb03ba6aaec98Jason Sams data, 60326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mAllocation.get()->getType()->getSizeBytes()); 61326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 62326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 63afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Adapter1D::serialize(OStream *stream) const { 64fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 65fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 66afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukAdapter1D *Adapter1D::createFromStream(Context *rsc, IStream *stream) { 67fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk return NULL; 68fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 69fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 70326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace android { 71326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace renderscript { 72326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 73afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukRsAdapter1D rsi_Adapter1DCreate(Context *rsc) { 74e514b45de8561fbc6ef6770845102ca10b0a69d7Jason Sams Adapter1D *a = new Adapter1D(rsc); 759397e30ce5fe3f6af9212a93b490836b04fdfffaJason Sams a->incUserRef(); 76d3c8de2efc8f4f9287e0a8dfdeefb03ba6aaec98Jason Sams return a; 77326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 78326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 79afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_Adapter1DBindAllocation(Context *rsc, RsAdapter1D va, RsAllocation valloc) { 80326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Adapter1D * a = static_cast<Adapter1D *>(va); 81326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Allocation * alloc = static_cast<Allocation *>(valloc); 82326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setAllocation(alloc); 83326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 84326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 85afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_Adapter1DSetConstraint(Context *rsc, RsAdapter1D va, RsDimension dim, uint32_t value) { 86326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Adapter1D * a = static_cast<Adapter1D *>(va); 87afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchouk switch (dim) { 88326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_X: 89326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(!"Cannot contrain X in an 1D adapter"); 90326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return; 91326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_Y: 92326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setY(value); 93326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 94326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_Z: 95326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setZ(value); 96326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 97326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_LOD: 98326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setLOD(value); 99326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 100326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_FACE: 101326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setFace(value); 102326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 103326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams default: 104326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(!"Unimplemented constraint"); 105326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return; 106326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 107326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 108326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 109afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_Adapter1DSubData(Context *rsc, RsAdapter1D va, uint32_t xoff, uint32_t count, const void *data) { 110326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Adapter1D * a = static_cast<Adapter1D *>(va); 111326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->subData(xoff, count, data); 112326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 113326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 114afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_Adapter1DData(Context *rsc, RsAdapter1D va, const void *data) { 115326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Adapter1D * a = static_cast<Adapter1D *>(va); 116326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->data(data); 117326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 118326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 119326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 120326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 121326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 122326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams////////////////////////// 123326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 124afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukAdapter2D::Adapter2D(Context *rsc) : ObjectBase(rsc) { 125326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams reset(); 126326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 127326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 128afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukAdapter2D::Adapter2D(Context *rsc, Allocation *a) : ObjectBase(rsc) { 129326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams reset(); 130326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams setAllocation(a); 131326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 132326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 133afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Adapter2D::reset() { 134326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mZ = 0; 135326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mLOD = 0; 136326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mFace = 0; 137326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 138326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 139afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid * Adapter2D::getElement(uint32_t x, uint32_t y) const { 140326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(mAllocation.get()); 141326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(mAllocation->getPtr()); 142326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(mAllocation->getType()); 14384e4027f83b20af59f5b1fc52be6e45f159d3970Alex Sakhartchouk if (mFace != 0 && !mAllocation->getType()->getDimFaces()) { 144af12ac6a08651464f8d823add667c706f993b587Steve Block ALOGE("Adapter wants cubemap face, but allocation has none"); 14584e4027f83b20af59f5b1fc52be6e45f159d3970Alex Sakhartchouk return NULL; 14684e4027f83b20af59f5b1fc52be6e45f159d3970Alex Sakhartchouk } 14784e4027f83b20af59f5b1fc52be6e45f159d3970Alex Sakhartchouk 148326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams uint8_t * ptr = static_cast<uint8_t *>(mAllocation->getPtr()); 149326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ptr += mAllocation->getType()->getLODOffset(mLOD, x, y); 15084e4027f83b20af59f5b1fc52be6e45f159d3970Alex Sakhartchouk 15184e4027f83b20af59f5b1fc52be6e45f159d3970Alex Sakhartchouk if (mFace != 0) { 15284e4027f83b20af59f5b1fc52be6e45f159d3970Alex Sakhartchouk uint32_t totalSizeBytes = mAllocation->getType()->getSizeBytes(); 15384e4027f83b20af59f5b1fc52be6e45f159d3970Alex Sakhartchouk uint32_t faceOffset = totalSizeBytes / 6; 15484e4027f83b20af59f5b1fc52be6e45f159d3970Alex Sakhartchouk ptr += faceOffset * mFace; 15584e4027f83b20af59f5b1fc52be6e45f159d3970Alex Sakhartchouk } 156326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return ptr; 157326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 158326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 159afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Adapter2D::subData(uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, const void *data) { 160326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(mAllocation.get()); 161326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(mAllocation->getPtr()); 162326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(mAllocation->getType()); 163326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 164326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams uint32_t eSize = mAllocation.get()->getType()->getElementSizeBytes(); 165326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams uint32_t lineSize = eSize * w; 166326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 167326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams const uint8_t *src = static_cast<const uint8_t *>(data); 168326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams for (uint32_t line=yoff; line < (yoff+h); line++) { 169326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams memcpy(getElement(xoff, line), src, lineSize); 170326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams src += lineSize; 171326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 172326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 173326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 174afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Adapter2D::data(const void *data) { 175d3c8de2efc8f4f9287e0a8dfdeefb03ba6aaec98Jason Sams memcpy(getElement(0,0), 176d3c8de2efc8f4f9287e0a8dfdeefb03ba6aaec98Jason Sams data, 177326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mAllocation.get()->getType()->getSizeBytes()); 178326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 179326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 180afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Adapter2D::serialize(OStream *stream) const { 181fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 182fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 183afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukAdapter2D *Adapter2D::createFromStream(Context *rsc, IStream *stream) { 184fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk return NULL; 185fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 186326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 187326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 188326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace android { 189326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace renderscript { 190326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 191afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukRsAdapter2D rsi_Adapter2DCreate(Context *rsc) { 192e514b45de8561fbc6ef6770845102ca10b0a69d7Jason Sams Adapter2D *a = new Adapter2D(rsc); 1939397e30ce5fe3f6af9212a93b490836b04fdfffaJason Sams a->incUserRef(); 194d3c8de2efc8f4f9287e0a8dfdeefb03ba6aaec98Jason Sams return a; 195326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 196326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 197afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_Adapter2DBindAllocation(Context *rsc, RsAdapter2D va, RsAllocation valloc) { 198326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Adapter2D * a = static_cast<Adapter2D *>(va); 199326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Allocation * alloc = static_cast<Allocation *>(valloc); 200326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setAllocation(alloc); 201326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 202326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 203afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_Adapter2DSetConstraint(Context *rsc, RsAdapter2D va, RsDimension dim, uint32_t value) { 204326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Adapter2D * a = static_cast<Adapter2D *>(va); 205afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchouk switch (dim) { 206326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_X: 207326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(!"Cannot contrain X in an 2D adapter"); 208326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return; 209326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_Y: 210326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(!"Cannot contrain Y in an 2D adapter"); 211326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 212326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_Z: 213326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setZ(value); 214326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 215326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_LOD: 216326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setLOD(value); 217326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 218326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams case RS_DIMENSION_FACE: 219326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->setFace(value); 220326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams break; 221326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams default: 222326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsAssert(!"Unimplemented constraint"); 223326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return; 224326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams } 225326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 226326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 227afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_Adapter2DData(Context *rsc, RsAdapter2D va, const void *data) { 228326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Adapter2D * a = static_cast<Adapter2D *>(va); 229326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->data(data); 230326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 231326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 232afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid rsi_Adapter2DSubData(Context *rsc, RsAdapter2D va, uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, const void *data) { 233326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Adapter2D * a = static_cast<Adapter2D *>(va); 234326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams a->subData(xoff, yoff, w, h, data); 235326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 236326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 237326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 238326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 239