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 "utils/Timers.h"
2187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
2287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams#include <time.h>
2387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
2487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsnamespace android {
2587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsnamespace renderscript {
2687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
2787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
2887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
2987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Context
3087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
3187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
3287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrBindTexture(Context *, Script *, ProgramFragment *, uint32_t slot, Allocation *);
33a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukvoid rsrBindConstant(Context *, Script *, ProgramFragment *, uint32_t slot, Allocation *);
34a720a144508edd91e4790b23eadd6cd270368df9Alex Sakhartchoukvoid rsrBindConstant(Context *, Script *, ProgramVertex*, uint32_t slot, Allocation *);
3587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrBindSampler(Context *, Script *, ProgramFragment *, uint32_t slot, Sampler *);
3687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrBindProgramStore(Context *, Script *, ProgramStore *);
3787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrBindProgramFragment(Context *, Script *, ProgramFragment *);
3887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrBindProgramVertex(Context *, Script *, ProgramVertex *);
3987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrBindProgramRaster(Context *, Script *, ProgramRaster *);
4087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrBindFrameBufferObjectColorTarget(Context *, Script *, Allocation *, uint32_t slot);
4187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrBindFrameBufferObjectDepthTarget(Context *, Script *, Allocation *);
4287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrClearFrameBufferObjectColorTarget(Context *, Script *, uint32_t slot);
4387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrClearFrameBufferObjectDepthTarget(Context *, Script *);
4487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrClearFrameBufferObjectTargets(Context *, Script *);
4587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
4687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
4787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// VP
4887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
4987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
5087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrVpLoadProjectionMatrix(Context *, Script *, const rsc_Matrix *m);
5187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrVpLoadModelMatrix(Context *, Script *, const rsc_Matrix *m);
5287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrVpLoadTextureMatrix(Context *, Script *, const rsc_Matrix *m);
5387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrPfConstantColor(Context *, Script *, ProgramFragment *, float r, float g, float b, float a);
5487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrVpGetProjectionMatrix(Context *, Script *, rsc_Matrix *m);
5587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
5687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
5787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Drawing
5887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
5987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
6087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrDrawQuadTexCoords(Context *, Script *,
6187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                          float x1, float y1, float z1, float u1, float v1,
6287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                          float x2, float y2, float z2, float u2, float v2,
6387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                          float x3, float y3, float z3, float u3, float v3,
6487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                          float x4, float y4, float z4, float u4, float v4);
6587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrDrawQuad(Context *, Script *,
6687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                 float x1, float y1, float z1,
6787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                 float x2, float y2, float z2,
6887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                 float x3, float y3, float z3,
6987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                 float x4, float y4, float z4);
7087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrDrawSpriteScreenspace(Context *, Script *,
7187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                              float x, float y, float z, float w, float h);
7287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrDrawRect(Context *, Script *, float x1, float y1, float x2, float y2, float z);
739e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsvoid rsrDrawPath(Context *, Script *, Path *);
7487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrDrawMesh(Context *, Script *, Mesh *);
7587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrDrawMeshPrimitive(Context *, Script *, Mesh *, uint32_t primIndex);
7687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrDrawMeshPrimitiveRange(Context *, Script *, Mesh *,
7787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               uint32_t primIndex, uint32_t start, uint32_t len);
7887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMeshComputeBoundingBox(Context *, Script *, Mesh *,
7987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               float *minX, float *minY, float *minZ,
8087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                               float *maxX, float *maxY, float *maxZ);
8187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
8287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
8387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
8487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//
8587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
8687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
8787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
8887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrColor(Context *, Script *, float r, float g, float b, float a);
8987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrAllocationSyncAll(Context *, Script *, Allocation *);
9074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
9174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchoukvoid rsrAllocationCopy1DRange(Context *, Allocation *dstAlloc,
9274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t dstOff,
9374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t dstMip,
9474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t count,
9574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              Allocation *srcAlloc,
9674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t srcOff, uint32_t srcMip);
9774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchoukvoid rsrAllocationCopy2DRange(Context *, Allocation *dstAlloc,
9874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t dstXoff, uint32_t dstYoff,
9974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t dstMip, uint32_t dstFace,
10074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t width, uint32_t height,
10174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              Allocation *srcAlloc,
10274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t srcXoff, uint32_t srcYoff,
10374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk                              uint32_t srcMip, uint32_t srcFace);
10474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
105653b53ebcd2bedc94ac486080d2e82e1920232e3Alex Sakhartchoukvoid rsrPrepareClear(Context *, Script *);
10687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsuint32_t rsrGetWidth(Context *, Script *);
10787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsuint32_t rsrGetHeight(Context *, Script *);
10887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrDrawTextAlloc(Context *, Script *, Allocation *, int x, int y);
10987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrDrawText(Context *, Script *, const char *text, int x, int y);
11087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrSetMetrics(Context *, Script *, Font::Rect *metrics,
11187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                   int32_t *left, int32_t *right, int32_t *top, int32_t *bottom);
11287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMeasureTextAlloc(Context *, Script *, Allocation *,
11387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                         int32_t *left, int32_t *right, int32_t *top, int32_t *bottom);
11487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMeasureText(Context *, Script *, const char *text,
11587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                    int32_t *left, int32_t *right, int32_t *top, int32_t *bottom);
11687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrBindFont(Context *, Script *, Font *);
11787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrFontColor(Context *, Script *, float r, float g, float b, float a);
11887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
11987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
12087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Time routines
12187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
12287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
12387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsfloat rsrGetDt(Context *, Script *);
12487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstime_t rsrTime(Context *, Script *, time_t *timer);
12587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samstm* rsrLocalTime(Context *, Script *, tm *local, time_t *timer);
12687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t rsrUptimeMillis(Context *, Script *);
12787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsint64_t rsrUptimeNanos(Context *, Script *);
12887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
12987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
13087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Message routines
13187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
13287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
13387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsuint32_t rsrToClient(Context *, Script *, int cmdID, void *data, int len);
13487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsuint32_t rsrToClientBlocking(Context *, Script *, int cmdID, void *data, int len);
13587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
13687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
13787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//
13887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
13987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
14087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrSetObject(const Context *, const Script *, ObjectBase **dst, ObjectBase * src);
14187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrClearObject(const Context *, const Script *, ObjectBase **dst);
14287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsbool rsrIsObject(const Context *, const Script *, const 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
15087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsuint32_t rsrToClient(Context *, Script *, int cmdID, void *data, int len);
15187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsuint32_t rsrToClientBlocking(Context *, Script *, int cmdID, void *data, int len);
15287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsconst Allocation * rsrGetAllocation(Context *, Script *, const void *ptr);
15387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
15487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrAllocationMarkDirty(Context *, Script *, RsAllocation a);
15587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrAllocationSyncAll(Context *, Script *, Allocation *a, RsAllocationUsageType source);
15687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
15787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
15887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrForEach(Context *, Script *, Script *target,
15987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                Allocation *in,
16087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                Allocation *out,
16187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                const void *usr,
16287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                 uint32_t usrBytes,
16387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                const RsScriptCall *call);
16487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
16587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
16687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
16787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Heavy math functions
16887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams//////////////////////////////////////////////////////////////////////////////
16987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
17087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
17187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixSet(rs_matrix4x4 *m, uint32_t row, uint32_t col, float v);
17287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsfloat rsrMatrixGet(const rs_matrix4x4 *m, uint32_t row, uint32_t col);
17387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixSet(rs_matrix3x3 *m, uint32_t row, uint32_t col, float v);
17487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsfloat rsrMatrixGet(const rs_matrix3x3 *m, uint32_t row, uint32_t col);
17587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixSet(rs_matrix2x2 *m, uint32_t row, uint32_t col, float v);
17687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsfloat rsrMatrixGet(const rs_matrix2x2 *m, uint32_t row, uint32_t col);
17787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadIdentity_4x4(rs_matrix4x4 *m);
17887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadIdentity_3x3(rs_matrix3x3 *m);
17987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadIdentity_2x2(rs_matrix2x2 *m);
18087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_4x4_f(rs_matrix4x4 *m, const float *v);
18187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_3x3_f(rs_matrix3x3 *m, const float *v);
18287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_2x2_f(rs_matrix2x2 *m, const float *v);
18387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_4x4_4x4(rs_matrix4x4 *m, const rs_matrix4x4 *v);
18487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_4x4_3x3(rs_matrix4x4 *m, const rs_matrix3x3 *v);
18587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_4x4_2x2(rs_matrix4x4 *m, const rs_matrix2x2 *v);
18687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_3x3_3x3(rs_matrix3x3 *m, const rs_matrix3x3 *v);
18787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoad_2x2_2x2(rs_matrix2x2 *m, const rs_matrix2x2 *v);
18887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadRotate(rs_matrix4x4 *m, float rot, float x, float y, float z);
18987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadScale(rs_matrix4x4 *m, float x, float y, float z);
19087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadTranslate(rs_matrix4x4 *m, float x, float y, float z);
19187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadMultiply_4x4_4x4_4x4(rs_matrix4x4 *m, const rs_matrix4x4 *lhs,
19287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                       const rs_matrix4x4 *rhs);
19387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixMultiply_4x4_4x4(rs_matrix4x4 *m, const rs_matrix4x4 *rhs);
19487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadMultiply_3x3_3x3_3x3(rs_matrix3x3 *m, const rs_matrix3x3 *lhs,
19587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                       const rs_matrix3x3 *rhs);
19687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixMultiply_3x3_3x3(rs_matrix3x3 *m, const rs_matrix3x3 *rhs);
19787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadMultiply_2x2_2x2_2x2(rs_matrix2x2 *m, const rs_matrix2x2 *lhs,
19887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                                       const rs_matrix2x2 *rhs);
19987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixMultiply_2x2_2x2(rs_matrix2x2 *m, const rs_matrix2x2 *rhs);
20087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixRotate(rs_matrix4x4 *m, float rot, float x, float y, float z);
20187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixScale(rs_matrix4x4 *m, float x, float y, float z);
20287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixTranslate(rs_matrix4x4 *m, float x, float y, float z);
20387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadOrtho(rs_matrix4x4 *m, float left, float right,
20487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                        float bottom, float top, float near, float far);
20587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadFrustum(rs_matrix4x4 *m, float left, float right,
20687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams                          float bottom, float top, float near, float far);
20787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixLoadPerspective(rs_matrix4x4* m, float fovy, float aspect, float near, float far);
20887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
20987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Returns true if the matrix was successfully inversed
21087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsbool rsrMatrixInverse_4x4(rs_matrix4x4 *m);
21187fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams// Returns true if the matrix was successfully inversed
21287fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsbool rsrMatrixInverseTranspose_4x4(rs_matrix4x4 *m);
21387fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
21487fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixTranspose_4x4(rs_matrix4x4 *m);
21587fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixTranspose_3x3(rs_matrix3x3 *m);
21687fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Samsvoid rsrMatrixTranspose_2x2(rs_matrix2x2 *m);
21787fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams
21887fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
21987fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams}
220