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;
3761a4bb734b91ced09fbfee4214c6f253cb66e5f0Jason Sams    mFace = RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X;
38326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}
39326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
4061a4bb734b91ced09fbfee4214c6f253cb66e5f0Jason Samsvoid Adapter1D::data(Context *rsc, uint32_t x, uint32_t count, const void *data, size_t sizeBytes) {
4161a4bb734b91ced09fbfee4214c6f253cb66e5f0Jason Sams    mAllocation->data(rsc, x, mY, mLOD, mFace, count, 1, data, sizeBytes);
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:
8261a4bb734b91ced09fbfee4214c6f253cb66e5f0Jason 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;
10761a4bb734b91ced09fbfee4214c6f253cb66e5f0Jason Sams    mFace = RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X;
108326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}
109326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
11084e4027f83b20af59f5b1fc52be6e45f159d3970Alex Sakhartchouk
11161a4bb734b91ced09fbfee4214c6f253cb66e5f0Jason Samsvoid Adapter2D::data(Context *rsc, uint32_t x, uint32_t y, uint32_t w, uint32_t h,
11261a4bb734b91ced09fbfee4214c6f253cb66e5f0Jason Sams                     const void *data, size_t sizeBytes) {
11361a4bb734b91ced09fbfee4214c6f253cb66e5f0Jason Sams    mAllocation->data(rsc, x, y, mLOD, mFace, w, h, data, sizeBytes);
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:
15661a4bb734b91ced09fbfee4214c6f253cb66e5f0Jason 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