rs_hal.h revision 2980f07d3dbbca727e8efe24ace7e7928a935648
1bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams/* 22980f07d3dbbca727e8efe24ace7e7928a935648Stephen Hines * Copyright (C) 2011-2012 The Android Open Source Project 3bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * 4bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * you may not use this file except in compliance with the License. 6bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * You may obtain a copy of the License at 7bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * 8bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * 10bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * Unless required by applicable law or agreed to in writing, software 11bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * See the License for the specific language governing permissions and 14bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * limitations under the License. 15bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams */ 16bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 17bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams#ifndef RS_HAL_H 18bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams#define RS_HAL_H 19bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 203715b00e7b10a2624c1d5c696186c7a2f4a75a91Jason Sams#include <rsDefines.h> 21bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 227ac2a4dda4d20ca1f1b714e129a3a08f63178c18Jason Samsstruct ANativeWindow; 237ac2a4dda4d20ca1f1b714e129a3a08f63178c18Jason Sams 24bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsnamespace android { 25bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsnamespace renderscript { 26bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 27bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsclass Context; 28bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsclass ObjectBase; 29bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsclass Element; 30bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsclass Type; 31bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsclass Allocation; 32bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsclass Script; 33bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsclass ScriptC; 349e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsclass Path; 357f126c78a107257090c6675ea40ffac41516a9dcAlex Sakhartchoukclass Program; 368feea4e0dec48ea03bd6d32706d058b86dddc5baJason Samsclass ProgramStore; 37721acc495b859c6d884725a4f9b5523583dd11c7Jason Samsclass ProgramRaster; 38a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchoukclass ProgramVertex; 39a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchoukclass ProgramFragment; 40a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchoukclass Mesh; 417f126c78a107257090c6675ea40ffac41516a9dcAlex Sakhartchoukclass Sampler; 42da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchoukclass FBOCache; 43bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 44bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samstypedef void *(*RsHalSymbolLookupFunc)(void *usrptr, char const *symbolName); 45bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 46451cf2e16555c96eaaf9d8180e29dd97a5d6cbd7Jason Samstypedef struct { 47451cf2e16555c96eaaf9d8180e29dd97a5d6cbd7Jason Sams const void *in; 48451cf2e16555c96eaaf9d8180e29dd97a5d6cbd7Jason Sams void *out; 49451cf2e16555c96eaaf9d8180e29dd97a5d6cbd7Jason Sams const void *usr; 50451cf2e16555c96eaaf9d8180e29dd97a5d6cbd7Jason Sams size_t usr_len; 51451cf2e16555c96eaaf9d8180e29dd97a5d6cbd7Jason Sams uint32_t x; 52451cf2e16555c96eaaf9d8180e29dd97a5d6cbd7Jason Sams uint32_t y; 53451cf2e16555c96eaaf9d8180e29dd97a5d6cbd7Jason Sams uint32_t z; 54451cf2e16555c96eaaf9d8180e29dd97a5d6cbd7Jason Sams uint32_t lod; 55451cf2e16555c96eaaf9d8180e29dd97a5d6cbd7Jason Sams RsAllocationCubemapFace face; 56451cf2e16555c96eaaf9d8180e29dd97a5d6cbd7Jason Sams uint32_t ar[16]; 57451cf2e16555c96eaaf9d8180e29dd97a5d6cbd7Jason Sams} RsForEachStubParamStruct; 58451cf2e16555c96eaaf9d8180e29dd97a5d6cbd7Jason Sams 59bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams/** 60bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams * Script management functions 61bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams */ 62bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samstypedef struct { 634b3de47071d875faaa7d419d050a464b09538797Jason Sams bool (*initGraphics)(const Context *); 644b3de47071d875faaa7d419d050a464b09538797Jason Sams void (*shutdownGraphics)(const Context *); 657257c7ee4b66f00c43d9235f3ac600061ae79968Alex Sakhartchouk bool (*setSurface)(const Context *, uint32_t w, uint32_t h, RsNativeWindow); 664b3de47071d875faaa7d419d050a464b09538797Jason Sams void (*swap)(const Context *); 674b3de47071d875faaa7d419d050a464b09538797Jason Sams 68cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams void (*shutdownDriver)(Context *); 69bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*getVersion)(unsigned int *major, unsigned int *minor); 70cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams void (*setPriority)(const Context *, int32_t priority); 71bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 72bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 73bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 74bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams struct { 758feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool (*init)(const Context *rsc, ScriptC *s, 768feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams char const *resName, 778feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams char const *cacheDir, 788feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams uint8_t const *bitcode, 798feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams size_t bitcodeSize, 8087fe59a2f4d4c74539bfa0bff5f9a7e320e99415Jason Sams uint32_t flags); 81bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 82cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams void (*invokeFunction)(const Context *rsc, Script *s, 83bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams uint32_t slot, 84bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams const void *params, 85bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams size_t paramLength); 86cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams int (*invokeRoot)(const Context *rsc, Script *s); 87cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams void (*invokeForEach)(const Context *rsc, 88cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams Script *s, 8935e429ebf817130d8590d11d441a77aa697bd7d4Jason Sams uint32_t slot, 90cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams const Allocation * ain, 91cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams Allocation * aout, 92cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams const void * usr, 93cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams uint32_t usrLen, 94cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams const RsScriptCall *sc); 95cdfdb8f2cdf4668c476cac842212892b2505ff3fJason Sams void (*invokeInit)(const Context *rsc, Script *s); 964ee16ffbd9d1d72e1757c9b26715597fdc044117Stephen Hines void (*invokeFreeChildren)(const Context *rsc, Script *s); 97bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 98bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*setGlobalVar)(const Context *rsc, const Script *s, 99bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams uint32_t slot, 100bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void *data, 101bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams size_t dataLength); 1022980f07d3dbbca727e8efe24ace7e7928a935648Stephen Hines void (*setGlobalVarWithElemDims)(const Context *rsc, const Script *s, 1032980f07d3dbbca727e8efe24ace7e7928a935648Stephen Hines uint32_t slot, 1042980f07d3dbbca727e8efe24ace7e7928a935648Stephen Hines void *data, 1052980f07d3dbbca727e8efe24ace7e7928a935648Stephen Hines size_t dataLength, 1062980f07d3dbbca727e8efe24ace7e7928a935648Stephen Hines const Element *e, 1072980f07d3dbbca727e8efe24ace7e7928a935648Stephen Hines const size_t *dims, 1082980f07d3dbbca727e8efe24ace7e7928a935648Stephen Hines size_t dimLength); 109bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*setGlobalBind)(const Context *rsc, const Script *s, 110bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams uint32_t slot, 111bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void *data); 112bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*setGlobalObj)(const Context *rsc, const Script *s, 113bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams uint32_t slot, 114bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams ObjectBase *data); 115bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 116bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams void (*destroy)(const Context *rsc, Script *s); 117bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams } script; 118bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 1198feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams struct { 120eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams bool (*init)(const Context *rsc, Allocation *alloc, bool forceZero); 121eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams void (*destroy)(const Context *rsc, Allocation *alloc); 122eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 123eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams void (*resize)(const Context *rsc, const Allocation *alloc, const Type *newType, 124eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams bool zeroNew); 125eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams void (*syncAll)(const Context *rsc, const Allocation *alloc, RsAllocationUsageType src); 126eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams void (*markDirty)(const Context *rsc, const Allocation *alloc); 1277ac2a4dda4d20ca1f1b714e129a3a08f63178c18Jason Sams 12841e373d91a60043afa0f9abd026218b49cbc1201Jason Sams int32_t (*initSurfaceTexture)(const Context *rsc, const Allocation *alloc); 1297ac2a4dda4d20ca1f1b714e129a3a08f63178c18Jason Sams void (*setSurfaceTexture)(const Context *rsc, Allocation *alloc, ANativeWindow *sur); 1307ac2a4dda4d20ca1f1b714e129a3a08f63178c18Jason Sams void (*ioSend)(const Context *rsc, Allocation *alloc); 1317ac2a4dda4d20ca1f1b714e129a3a08f63178c18Jason Sams void (*ioReceive)(const Context *rsc, Allocation *alloc); 132eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 133eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams void (*data1D)(const Context *rsc, const Allocation *alloc, 134eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams uint32_t xoff, uint32_t lod, uint32_t count, 135c794cd56e46408e08862c42a022090e323684197Alex Sakhartchouk const void *data, size_t sizeBytes); 136eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams void (*data2D)(const Context *rsc, const Allocation *alloc, 137eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams uint32_t xoff, uint32_t yoff, uint32_t lod, 138eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams RsAllocationCubemapFace face, uint32_t w, uint32_t h, 139c794cd56e46408e08862c42a022090e323684197Alex Sakhartchouk const void *data, size_t sizeBytes); 140eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams void (*data3D)(const Context *rsc, const Allocation *alloc, 141eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams uint32_t xoff, uint32_t yoff, uint32_t zoff, 142eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams uint32_t lod, RsAllocationCubemapFace face, 143c794cd56e46408e08862c42a022090e323684197Alex Sakhartchouk uint32_t w, uint32_t h, uint32_t d, const void *data, size_t sizeBytes); 144eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 14574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk // Allocation to allocation copies 14674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk void (*allocData1D)(const Context *rsc, 14774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk const Allocation *dstAlloc, 14874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstXoff, uint32_t dstLod, uint32_t count, 14974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk const Allocation *srcAlloc, uint32_t srcXoff, uint32_t srcLod); 15074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk void (*allocData2D)(const Context *rsc, 15174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk const Allocation *dstAlloc, 15274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstXoff, uint32_t dstYoff, uint32_t dstLod, 15374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk RsAllocationCubemapFace dstFace, uint32_t w, uint32_t h, 15474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk const Allocation *srcAlloc, 15574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcXoff, uint32_t srcYoff, uint32_t srcLod, 15674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk RsAllocationCubemapFace srcFace); 15774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk void (*allocData3D)(const Context *rsc, 15874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk const Allocation *dstAlloc, 15974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstXoff, uint32_t dstYoff, uint32_t dstZoff, 16074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t dstLod, RsAllocationCubemapFace dstFace, 16174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t w, uint32_t h, uint32_t d, 16274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk const Allocation *srcAlloc, 16374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcXoff, uint32_t srcYoff, uint32_t srcZoff, 16474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk uint32_t srcLod, RsAllocationCubemapFace srcFace); 16574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk 166eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams void (*elementData1D)(const Context *rsc, const Allocation *alloc, uint32_t x, 167c794cd56e46408e08862c42a022090e323684197Alex Sakhartchouk const void *data, uint32_t elementOff, size_t sizeBytes); 168eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams void (*elementData2D)(const Context *rsc, const Allocation *alloc, uint32_t x, uint32_t y, 169c794cd56e46408e08862c42a022090e323684197Alex Sakhartchouk const void *data, uint32_t elementOff, size_t sizeBytes); 170eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 171eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 172eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams } allocation; 173eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams 174eb4fe18dd88634330f9566cbb9e785d8c7ec5813Jason Sams struct { 1758feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams bool (*init)(const Context *rsc, const ProgramStore *ps); 1768feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams void (*setActive)(const Context *rsc, const ProgramStore *ps); 1778feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams void (*destroy)(const Context *rsc, const ProgramStore *ps); 1788feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams } store; 1798feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams 180721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams struct { 181721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams bool (*init)(const Context *rsc, const ProgramRaster *ps); 182721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams void (*setActive)(const Context *rsc, const ProgramRaster *ps); 183721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams void (*destroy)(const Context *rsc, const ProgramRaster *ps); 184721acc495b859c6d884725a4f9b5523583dd11c7Jason Sams } raster; 1858feea4e0dec48ea03bd6d32706d058b86dddc5baJason Sams 186a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk struct { 187a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk bool (*init)(const Context *rsc, const ProgramVertex *pv, 188748eb07e805b93c2bf79340d4937963ab739d17cAlex Sakhartchouk const char* shader, size_t shaderLen, 189748eb07e805b93c2bf79340d4937963ab739d17cAlex Sakhartchouk const char** textureNames, size_t textureNamesCount, 190748eb07e805b93c2bf79340d4937963ab739d17cAlex Sakhartchouk const size_t *textureNamesLength); 191a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk void (*setActive)(const Context *rsc, const ProgramVertex *pv); 192a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk void (*destroy)(const Context *rsc, const ProgramVertex *pv); 193a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk } vertex; 194a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 195a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk struct { 196a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk bool (*init)(const Context *rsc, const ProgramFragment *pf, 197748eb07e805b93c2bf79340d4937963ab739d17cAlex Sakhartchouk const char* shader, size_t shaderLen, 198748eb07e805b93c2bf79340d4937963ab739d17cAlex Sakhartchouk const char** textureNames, size_t textureNamesCount, 199748eb07e805b93c2bf79340d4937963ab739d17cAlex Sakhartchouk const size_t *textureNamesLength); 200a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk void (*setActive)(const Context *rsc, const ProgramFragment *pf); 201a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk void (*destroy)(const Context *rsc, const ProgramFragment *pf); 202a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk } fragment; 203a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk 204a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk struct { 205a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk bool (*init)(const Context *rsc, const Mesh *m); 206a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk void (*draw)(const Context *rsc, const Mesh *m, uint32_t primIndex, uint32_t start, uint32_t len); 207a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk void (*destroy)(const Context *rsc, const Mesh *m); 208a04e30dbb5ab11592b03666bb3d102070759c58eAlex Sakhartchouk } mesh; 209bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 2107f126c78a107257090c6675ea40ffac41516a9dcAlex Sakhartchouk struct { 2119e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams bool (*initStatic)(const Context *rsc, const Path *m, const Allocation *vtx, const Allocation *loops); 2129e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams bool (*initDynamic)(const Context *rsc, const Path *m); 2139e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams void (*draw)(const Context *rsc, const Path *m); 2149e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams void (*destroy)(const Context *rsc, const Path *m); 2159e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams } path; 2169e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams 2179e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams struct { 2187f126c78a107257090c6675ea40ffac41516a9dcAlex Sakhartchouk bool (*init)(const Context *rsc, const Sampler *m); 2197f126c78a107257090c6675ea40ffac41516a9dcAlex Sakhartchouk void (*destroy)(const Context *rsc, const Sampler *m); 2207f126c78a107257090c6675ea40ffac41516a9dcAlex Sakhartchouk } sampler; 2217f126c78a107257090c6675ea40ffac41516a9dcAlex Sakhartchouk 222da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk struct { 223da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk bool (*init)(const Context *rsc, const FBOCache *fb); 224da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk void (*setActive)(const Context *rsc, const FBOCache *fb); 225da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk void (*destroy)(const Context *rsc, const FBOCache *fb); 226da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk } framebuffer; 227da6d34a5a6ece8c30d20673b9b6ff07d8c91768bAlex Sakhartchouk 228bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams} RsdHalFunctions; 229bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 230bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 231bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams} 232bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams} 233bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 234bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 235bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Samsbool rsdHalInit(android::renderscript::Context *, uint32_t version_major, uint32_t version_minor); 236bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 237bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams#endif 238bad807405b2b9764372af1ad24bcfd4fb1f33d8eJason Sams 239