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