compute.cpp revision 0b93e30c8c64fb2f985218adfaceff777f62a42f
1704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 2704616e76e43c827ed554b797151a996bcbf3a77Tim Murray#include "RenderScript.h" 3704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 4704616e76e43c827ed554b797151a996bcbf3a77Tim Murray#include "ScriptC_multiply.h" 5704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 6704616e76e43c827ed554b797151a996bcbf3a77Tim Murrayusing namespace android; 79eb7f4b90120ebe4be74343856e86b46495f72dfTim Murrayusing namespace RSC; 8704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 9704616e76e43c827ed554b797151a996bcbf3a77Tim Murrayint main(int argc, char** argv) 10704616e76e43c827ed554b797151a996bcbf3a77Tim Murray{ 11704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 12704616e76e43c827ed554b797151a996bcbf3a77Tim Murray uint32_t numElems = 1024; 13704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 14704616e76e43c827ed554b797151a996bcbf3a77Tim Murray if (argc >= 2) { 15704616e76e43c827ed554b797151a996bcbf3a77Tim Murray int tempNumElems = atoi(argv[1]); 16704616e76e43c827ed554b797151a996bcbf3a77Tim Murray if (tempNumElems < 1) { 17704616e76e43c827ed554b797151a996bcbf3a77Tim Murray printf("numElems must be greater than 0\n"); 18704616e76e43c827ed554b797151a996bcbf3a77Tim Murray return 1; 19704616e76e43c827ed554b797151a996bcbf3a77Tim Murray } 20704616e76e43c827ed554b797151a996bcbf3a77Tim Murray numElems = (uint32_t) tempNumElems; 21704616e76e43c827ed554b797151a996bcbf3a77Tim Murray } 22704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 23704616e76e43c827ed554b797151a996bcbf3a77Tim Murray sp<RS> rs = new RS(); 24704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 25704616e76e43c827ed554b797151a996bcbf3a77Tim Murray bool r = rs->init(); 26704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 27704616e76e43c827ed554b797151a996bcbf3a77Tim Murray sp<const Element> e = Element::U32(rs); 28704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 29704616e76e43c827ed554b797151a996bcbf3a77Tim Murray Type::Builder tb(rs, e); 30704616e76e43c827ed554b797151a996bcbf3a77Tim Murray tb.setX(numElems); 31704616e76e43c827ed554b797151a996bcbf3a77Tim Murray sp<const Type> t = tb.create(); 32704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 33704616e76e43c827ed554b797151a996bcbf3a77Tim Murray sp<Allocation> ain = Allocation::createTyped(rs, t); 34704616e76e43c827ed554b797151a996bcbf3a77Tim Murray sp<Allocation> aout = Allocation::createTyped(rs, t); 35704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 36704616e76e43c827ed554b797151a996bcbf3a77Tim Murray sp<ScriptC_multiply> sc = new ScriptC_multiply(rs, NULL, 0); 37704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 38704616e76e43c827ed554b797151a996bcbf3a77Tim Murray uint32_t* buf = new uint32_t[numElems]; 39704616e76e43c827ed554b797151a996bcbf3a77Tim Murray for (uint32_t ct=0; ct < numElems; ct++) { 40704616e76e43c827ed554b797151a996bcbf3a77Tim Murray buf[ct] = (uint32_t)ct; 41704616e76e43c827ed554b797151a996bcbf3a77Tim Murray } 42704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 430b93e30c8c64fb2f985218adfaceff777f62a42fTim Murray ain->copy1DRangeFrom(0, numElems, buf); 44704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 45704616e76e43c827ed554b797151a996bcbf3a77Tim Murray sc->forEach_multiply(ain, aout); 46704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 470b93e30c8c64fb2f985218adfaceff777f62a42fTim Murray aout->copy1DRangeTo(0, numElems, buf); 48704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 49704616e76e43c827ed554b797151a996bcbf3a77Tim Murray for (uint32_t ct=0; ct < numElems; ct++) { 50704616e76e43c827ed554b797151a996bcbf3a77Tim Murray if (buf[ct] != ct * 2) { 51704616e76e43c827ed554b797151a996bcbf3a77Tim Murray printf("Mismatch at location %d: %u\n", ct, buf[ct]); 52704616e76e43c827ed554b797151a996bcbf3a77Tim Murray return 1; 53704616e76e43c827ed554b797151a996bcbf3a77Tim Murray } 54704616e76e43c827ed554b797151a996bcbf3a77Tim Murray } 55704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 56704616e76e43c827ed554b797151a996bcbf3a77Tim Murray printf("Test successful with %u elems!\n", numElems); 57704616e76e43c827ed554b797151a996bcbf3a77Tim Murray 58704616e76e43c827ed554b797151a996bcbf3a77Tim Murray sc.clear(); 59704616e76e43c827ed554b797151a996bcbf3a77Tim Murray t.clear(); 60704616e76e43c827ed554b797151a996bcbf3a77Tim Murray e.clear(); 61704616e76e43c827ed554b797151a996bcbf3a77Tim Murray ain.clear(); 62704616e76e43c827ed554b797151a996bcbf3a77Tim Murray aout.clear(); 63704616e76e43c827ed554b797151a996bcbf3a77Tim Murray} 64