187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams/*
287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * Copyright (C) 2009 The Android Open Source Project
387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams *
487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * Licensed under the Apache License, Version 2.0 (the "License");
587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * you may not use this file except in compliance with the License.
687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * You may obtain a copy of the License at
787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams *
887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams *      http://www.apache.org/licenses/LICENSE-2.0
987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams *
1087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * Unless required by applicable law or agreed to in writing, software
1187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * distributed under the License is distributed on an "AS IS" BASIS,
1287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * See the License for the specific language governing permissions and
1487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams * limitations under the License.
1587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams */
1687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include "rsContext.h"
1887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include "rsScriptC.h"
1987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
2087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include <time.h>
2187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
2287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsnamespace android {
2387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsnamespace renderscript {
2487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
2587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
2687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
2787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Context
2887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
2987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
3093eacc7ce0aad4314b4cb41a281f59ce54bb3286Jason Samsvoid rsrAllocationSyncAll(Context *, Script *, Allocation *);
3193eacc7ce0aad4314b4cb41a281f59ce54bb3286Jason Sams
3293eacc7ce0aad4314b4cb41a281f59ce54bb3286Jason Sams#ifndef RS_COMPATIBILITY_LIB
33709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrBindTexture(Context *, ProgramFragment *, uint32_t slot, Allocation *);
34709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrBindConstant(Context *, ProgramFragment *, uint32_t slot, Allocation *);
35709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrBindConstant(Context *, ProgramVertex*, uint32_t slot, Allocation *);
36709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrBindSampler(Context *, ProgramFragment *, uint32_t slot, Sampler *);
37709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrBindProgramStore(Context *, ProgramStore *);
38709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrBindProgramFragment(Context *, ProgramFragment *);
39709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrBindProgramVertex(Context *, ProgramVertex *);
40709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrBindProgramRaster(Context *, ProgramRaster *);
41709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrBindFrameBufferObjectColorTarget(Context *, Allocation *, uint32_t slot);
42709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrBindFrameBufferObjectDepthTarget(Context *, Allocation *);
43709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrClearFrameBufferObjectColorTarget(Context *, uint32_t slot);
44709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrClearFrameBufferObjectDepthTarget(Context *);
45709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrClearFrameBufferObjectTargets(Context *);
4687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
4787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
4887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// VP
4987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
5087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
51709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrVpLoadProjectionMatrix(Context *, const rsc_Matrix *m);
52709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrVpLoadModelMatrix(Context *, const rsc_Matrix *m);
53709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrVpLoadTextureMatrix(Context *, const rsc_Matrix *m);
54709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrPfConstantColor(Context *, ProgramFragment *, float r, float g, float b, float a);
55709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrVpGetProjectionMatrix(Context *, rsc_Matrix *m);
5687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
5787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
5887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Drawing
5987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
6087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
61709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrDrawPath(Context *, Path *);
62709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrDrawMesh(Context *, Mesh *);
63709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrDrawMeshPrimitive(Context *, Mesh *, uint32_t primIndex);
64709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrDrawMeshPrimitiveRange(Context *, Mesh *,
6587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               uint32_t primIndex, uint32_t start, uint32_t len);
66709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrMeshComputeBoundingBox(Context *, Mesh *,
6787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               float *minX, float *minY, float *minZ,
6887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               float *maxX, float *maxY, float *maxZ);
6987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
7087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
7187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
7287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//
7387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
7487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
7587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
76709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrColor(Context *, float r, float g, float b, float a);
7793eacc7ce0aad4314b4cb41a281f59ce54bb3286Jason Sams#endif
7874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
7974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchoukvoid rsrAllocationCopy1DRange(Context *, Allocation *dstAlloc,
8074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t dstOff,
8174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t dstMip,
8274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t count,
8374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              Allocation *srcAlloc,
8474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t srcOff, uint32_t srcMip);
8574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchoukvoid rsrAllocationCopy2DRange(Context *, Allocation *dstAlloc,
8674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t dstXoff, uint32_t dstYoff,
8774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t dstMip, uint32_t dstFace,
8874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t width, uint32_t height,
8974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              Allocation *srcAlloc,
9074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t srcXoff, uint32_t srcYoff,
9174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t srcMip, uint32_t srcFace);
9274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
9393eacc7ce0aad4314b4cb41a281f59ce54bb3286Jason Sams#ifndef RS_COMPATIBILITY_LIB
94709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrPrepareClear(Context *);
95709a0978ae141198018ca9769f8d96292a8928e6Jason Samsuint32_t rsrGetWidth(Context *);
96709a0978ae141198018ca9769f8d96292a8928e6Jason Samsuint32_t rsrGetHeight(Context *);
97709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrDrawTextAlloc(Context *, Allocation *, int x, int y);
98709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrDrawText(Context *, const char *text, int x, int y);
99709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrSetMetrics(Context *, Font::Rect *metrics,
10087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                   int32_t *left, int32_t *right, int32_t *top, int32_t *bottom);
101709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrMeasureTextAlloc(Context *, Allocation *,
10287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                         int32_t *left, int32_t *right, int32_t *top, int32_t *bottom);
103709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrMeasureText(Context *, const char *text,
10487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                    int32_t *left, int32_t *right, int32_t *top, int32_t *bottom);
105709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrBindFont(Context *, Font *);
106709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrFontColor(Context *, float r, float g, float b, float a);
107ddceab9a001f07a3395226c5e06e3b420720af0fJason Sams
1087a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines#endif
1097a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
110ddceab9a001f07a3395226c5e06e3b420720af0fJason Samsvoid rsrAllocationIoSend(Context *, Allocation *);
111ddceab9a001f07a3395226c5e06e3b420720af0fJason Samsvoid rsrAllocationIoReceive(Context *, Allocation *);
112ddceab9a001f07a3395226c5e06e3b420720af0fJason Sams
11387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
11487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Time routines
11587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
11687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
117709a0978ae141198018ca9769f8d96292a8928e6Jason Samsfloat rsrGetDt(Context *, const Script *sc);
118709a0978ae141198018ca9769f8d96292a8928e6Jason Samstime_t rsrTime(Context *, time_t *timer);
119709a0978ae141198018ca9769f8d96292a8928e6Jason Samstm* rsrLocalTime(Context *, tm *local, time_t *timer);
120709a0978ae141198018ca9769f8d96292a8928e6Jason Samsint64_t rsrUptimeMillis(Context *);
121709a0978ae141198018ca9769f8d96292a8928e6Jason Samsint64_t rsrUptimeNanos(Context *);
12287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
12387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
12487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Message routines
12587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
12687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
12770537f52bdc6e8702db03cc91fe511371fb31267Stephen Hines// Keep existing routines to not break current GPU drivers.
12870537f52bdc6e8702db03cc91fe511371fb31267Stephen Hinesuint32_t __attribute((used)) rsrToClient(Context *, int cmdID, void *data, int len);
12970537f52bdc6e8702db03cc91fe511371fb31267Stephen Hinesuint32_t __attribute((used)) rsrToClientBlocking(Context *, int cmdID, void *data, int len);
13070537f52bdc6e8702db03cc91fe511371fb31267Stephen Hines
131276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesuint32_t rsrToClient(Context *, int cmdID, const void *data, int len);
132276000a3673e639f9abc41db4709c1b0a96c1bf9Stephen Hinesuint32_t rsrToClientBlocking(Context *, int cmdID, const void *data, int len);
13387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
13487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
13587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//
13687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
13787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
13805ef73f2d934f1083cc3b8aeb33fe21de9d6e88fJason Samsvoid rsrSetObject(const Context *, rs_object_base *dst, const ObjectBase *src);
139ade3137c22dd91694742145c2d5fe9d6bae17516Yang Nivoid rsrClearObject(rs_object_base *dst);
1406a45ddb32f391060aa05da6ff09c4814d450586eTim Murray
14105ef73f2d934f1083cc3b8aeb33fe21de9d6e88fJason Samsbool rsrIsObject(const Context *, rs_object_base src);
1426a45ddb32f391060aa05da6ff09c4814d450586eTim Murraybool rsrIsObject(const Context *, ObjectBase* src);
14387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
144eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Samsvoid rsrAllocationIncRefs(const Context *, const Allocation *, void *ptr,
145eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams                          size_t elementCount, size_t startOffset);
146eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Samsvoid rsrAllocationDecRefs(const Context *, const Allocation *, void *ptr,
147eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams                          size_t elementCount, size_t startOffset);
148eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams
149eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams
150709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrAllocationSyncAll(Context *, Allocation *a, RsAllocationUsageType source);
15187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
15287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
153709a0978ae141198018ca9769f8d96292a8928e6Jason Samsvoid rsrForEach(Context *, Script *target,
15412398d81f32e5e0479d02b8608a83c75cd991bb3Yang Ni                uint32_t slot,
155dda5cb5b59ae02ec03001ea12c374413714f3d38Yang Ni                uint32_t numInputs,
156dda5cb5b59ae02ec03001ea12c374413714f3d38Yang Ni                Allocation **in,
15787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                Allocation *out,
15887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                const void *usr,
159f37121300217d3b39ab66dd9c8881bcbcad932dfChris Wailes                uint32_t usrBytes,
1609479e5bf0152ecff022cd374e2e80905f88b1a5dPirama Arumuga Nainar                const RsScriptCall *call);
16187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
1626b387c1e466b507007f0b388da8b037362154e9aPirama Arumuga NainarRsElement rsrElementCreate(Context *rsc, RsDataType dt, RsDataKind dk,
1636b387c1e466b507007f0b388da8b037362154e9aPirama Arumuga Nainar                           bool norm, uint32_t vecSize);
1646b387c1e466b507007f0b388da8b037362154e9aPirama Arumuga Nainar
1656b387c1e466b507007f0b388da8b037362154e9aPirama Arumuga NainarRsType rsrTypeCreate(Context *, const RsElement element, uint32_t dimX,
1666b387c1e466b507007f0b388da8b037362154e9aPirama Arumuga Nainar                     uint32_t dimY, uint32_t dimZ, bool mipmaps, bool faces,
1676b387c1e466b507007f0b388da8b037362154e9aPirama Arumuga Nainar                     uint32_t yuv);
1686b387c1e466b507007f0b388da8b037362154e9aPirama Arumuga Nainar
1696b387c1e466b507007f0b388da8b037362154e9aPirama Arumuga NainarRsAllocation rsrAllocationCreateTyped(Context *, const RsType type,
1706b387c1e466b507007f0b388da8b037362154e9aPirama Arumuga Nainar                                      RsAllocationMipmapControl mipmaps,
1716b387c1e466b507007f0b388da8b037362154e9aPirama Arumuga Nainar                                      uint32_t usages, uintptr_t ptr);
17287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
17387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
17487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Heavy math functions
17587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
17687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
17787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
17887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixSet(rs_matrix4x4 *m, uint32_t row, uint32_t col, float v);
17987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsfloat rsrMatrixGet(const rs_matrix4x4 *m, uint32_t row, uint32_t col);
18087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixSet(rs_matrix3x3 *m, uint32_t row, uint32_t col, float v);
18187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsfloat rsrMatrixGet(const rs_matrix3x3 *m, uint32_t row, uint32_t col);
18287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixSet(rs_matrix2x2 *m, uint32_t row, uint32_t col, float v);
18387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsfloat rsrMatrixGet(const rs_matrix2x2 *m, uint32_t row, uint32_t col);
18487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadIdentity_4x4(rs_matrix4x4 *m);
18587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadIdentity_3x3(rs_matrix3x3 *m);
18687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadIdentity_2x2(rs_matrix2x2 *m);
18787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_4x4_f(rs_matrix4x4 *m, const float *v);
18887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_3x3_f(rs_matrix3x3 *m, const float *v);
18987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_2x2_f(rs_matrix2x2 *m, const float *v);
19087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_4x4_4x4(rs_matrix4x4 *m, const rs_matrix4x4 *v);
19187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_4x4_3x3(rs_matrix4x4 *m, const rs_matrix3x3 *v);
19287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_4x4_2x2(rs_matrix4x4 *m, const rs_matrix2x2 *v);
19387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_3x3_3x3(rs_matrix3x3 *m, const rs_matrix3x3 *v);
19487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_2x2_2x2(rs_matrix2x2 *m, const rs_matrix2x2 *v);
19587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadRotate(rs_matrix4x4 *m, float rot, float x, float y, float z);
19687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadScale(rs_matrix4x4 *m, float x, float y, float z);
19787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadTranslate(rs_matrix4x4 *m, float x, float y, float z);
19887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadMultiply_4x4_4x4_4x4(rs_matrix4x4 *m, const rs_matrix4x4 *lhs,
19987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                       const rs_matrix4x4 *rhs);
20087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixMultiply_4x4_4x4(rs_matrix4x4 *m, const rs_matrix4x4 *rhs);
20187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadMultiply_3x3_3x3_3x3(rs_matrix3x3 *m, const rs_matrix3x3 *lhs,
20287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                       const rs_matrix3x3 *rhs);
20387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixMultiply_3x3_3x3(rs_matrix3x3 *m, const rs_matrix3x3 *rhs);
20487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadMultiply_2x2_2x2_2x2(rs_matrix2x2 *m, const rs_matrix2x2 *lhs,
20587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                       const rs_matrix2x2 *rhs);
20687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixMultiply_2x2_2x2(rs_matrix2x2 *m, const rs_matrix2x2 *rhs);
20787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixRotate(rs_matrix4x4 *m, float rot, float x, float y, float z);
20887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixScale(rs_matrix4x4 *m, float x, float y, float z);
20987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixTranslate(rs_matrix4x4 *m, float x, float y, float z);
21087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadOrtho(rs_matrix4x4 *m, float left, float right,
21187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float bottom, float top, float near, float far);
21287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadFrustum(rs_matrix4x4 *m, float left, float right,
21387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                          float bottom, float top, float near, float far);
21487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadPerspective(rs_matrix4x4* m, float fovy, float aspect, float near, float far);
21587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
21687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Returns true if the matrix was successfully inversed
21787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsbool rsrMatrixInverse_4x4(rs_matrix4x4 *m);
21887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Returns true if the matrix was successfully inversed
21987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsbool rsrMatrixInverseTranspose_4x4(rs_matrix4x4 *m);
22087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
22187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixTranspose_4x4(rs_matrix4x4 *m);
22287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixTranspose_3x3(rs_matrix3x3 *m);
22387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixTranspose_2x2(rs_matrix2x2 *m);
22487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
2257974fc03e11f3a8dd40f794f3b33b4889483090cRahul Chaudhry} // namespace renderscript
2267974fc03e11f3a8dd40f794f3b33b4889483090cRahul Chaudhry} // namespace android
227