1
2 /*
3 * Copyright (C) 2009 The Android Open Source Project
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 #include "rsContext.h"
19 #include "rsAdapter.h"
20
21 using namespace android;
22 using namespace android::renderscript;
23
Adapter1D(Context * rsc)24 Adapter1D::Adapter1D(Context *rsc) : ObjectBase(rsc) {
25 reset();
26 }
27
Adapter1D(Context * rsc,Allocation * a)28 Adapter1D::Adapter1D(Context *rsc, Allocation *a) : ObjectBase(rsc) {
29 reset();
30 setAllocation(a);
31 }
32
reset()33 void Adapter1D::reset() {
34 mY = 0;
35 mZ = 0;
36 mLOD = 0;
37 mFace = RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X;
38 }
39
data(Context * rsc,uint32_t x,uint32_t count,const void * data,size_t sizeBytes)40 void Adapter1D::data(Context *rsc, uint32_t x, uint32_t count, const void *data, size_t sizeBytes) {
41 mAllocation->data(rsc, x, mY, mLOD, mFace, count, 1, data, sizeBytes, 0);
42 }
43
serialize(Context * rsc,OStream * stream) const44 void Adapter1D::serialize(Context *rsc, OStream *stream) const {
45 }
46
createFromStream(Context * rsc,IStream * stream)47 Adapter1D *Adapter1D::createFromStream(Context *rsc, IStream *stream) {
48 return nullptr;
49 }
50
51 namespace android {
52 namespace renderscript {
53
rsi_Adapter1DCreate(Context * rsc)54 RsAdapter1D rsi_Adapter1DCreate(Context *rsc) {
55 Adapter1D *a = new Adapter1D(rsc);
56 a->incUserRef();
57 return a;
58 }
59
rsi_Adapter1DBindAllocation(Context * rsc,RsAdapter1D va,RsAllocation valloc)60 void rsi_Adapter1DBindAllocation(Context *rsc, RsAdapter1D va, RsAllocation valloc) {
61 Adapter1D * a = static_cast<Adapter1D *>(va);
62 Allocation * alloc = static_cast<Allocation *>(valloc);
63 a->setAllocation(alloc);
64 }
65
rsi_Adapter1DSetConstraint(Context * rsc,RsAdapter1D va,RsDimension dim,uint32_t value)66 void rsi_Adapter1DSetConstraint(Context *rsc, RsAdapter1D va, RsDimension dim, uint32_t value) {
67 Adapter1D * a = static_cast<Adapter1D *>(va);
68 switch (dim) {
69 case RS_DIMENSION_X:
70 rsAssert(!"Cannot contrain X in an 1D adapter");
71 return;
72 case RS_DIMENSION_Y:
73 a->setY(value);
74 break;
75 case RS_DIMENSION_Z:
76 a->setZ(value);
77 break;
78 case RS_DIMENSION_LOD:
79 a->setLOD(value);
80 break;
81 case RS_DIMENSION_FACE:
82 a->setFace((RsAllocationCubemapFace)value);
83 break;
84 default:
85 rsAssert(!"Unimplemented constraint");
86 return;
87 }
88 }
89
90 }
91 }
92
93 //////////////////////////
94
Adapter2D(Context * rsc)95 Adapter2D::Adapter2D(Context *rsc) : ObjectBase(rsc) {
96 reset();
97 }
98
Adapter2D(Context * rsc,Allocation * a)99 Adapter2D::Adapter2D(Context *rsc, Allocation *a) : ObjectBase(rsc) {
100 reset();
101 setAllocation(a);
102 }
103
reset()104 void Adapter2D::reset() {
105 mZ = 0;
106 mLOD = 0;
107 mFace = RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X;
108 }
109
110
data(Context * rsc,uint32_t x,uint32_t y,uint32_t w,uint32_t h,const void * data,size_t sizeBytes)111 void Adapter2D::data(Context *rsc, uint32_t x, uint32_t y, uint32_t w, uint32_t h,
112 const void *data, size_t sizeBytes) {
113 mAllocation->data(rsc, x, y, mLOD, mFace, w, h, data, sizeBytes, 0);
114 }
115
116
serialize(Context * rsc,OStream * stream) const117 void Adapter2D::serialize(Context *rsc, OStream *stream) const {
118 }
119
createFromStream(Context * rsc,IStream * stream)120 Adapter2D *Adapter2D::createFromStream(Context *rsc, IStream *stream) {
121 return nullptr;
122 }
123
124
125 namespace android {
126 namespace renderscript {
127
rsi_Adapter2DCreate(Context * rsc)128 RsAdapter2D rsi_Adapter2DCreate(Context *rsc) {
129 Adapter2D *a = new Adapter2D(rsc);
130 a->incUserRef();
131 return a;
132 }
133
rsi_Adapter2DBindAllocation(Context * rsc,RsAdapter2D va,RsAllocation valloc)134 void rsi_Adapter2DBindAllocation(Context *rsc, RsAdapter2D va, RsAllocation valloc) {
135 Adapter2D * a = static_cast<Adapter2D *>(va);
136 Allocation * alloc = static_cast<Allocation *>(valloc);
137 a->setAllocation(alloc);
138 }
139
rsi_Adapter2DSetConstraint(Context * rsc,RsAdapter2D va,RsDimension dim,uint32_t value)140 void rsi_Adapter2DSetConstraint(Context *rsc, RsAdapter2D va, RsDimension dim, uint32_t value) {
141 Adapter2D * a = static_cast<Adapter2D *>(va);
142 switch (dim) {
143 case RS_DIMENSION_X:
144 rsAssert(!"Cannot contrain X in an 2D adapter");
145 return;
146 case RS_DIMENSION_Y:
147 rsAssert(!"Cannot contrain Y in an 2D adapter");
148 break;
149 case RS_DIMENSION_Z:
150 a->setZ(value);
151 break;
152 case RS_DIMENSION_LOD:
153 a->setLOD(value);
154 break;
155 case RS_DIMENSION_FACE:
156 a->setFace((RsAllocationCubemapFace)value);
157 break;
158 default:
159 rsAssert(!"Unimplemented constraint");
160 return;
161 }
162 }
163
164
165 }
166 }
167