Lines Matching refs:key

111     uint64_t key;
199 bool build(Key_t key);
212 Key_t key;
213 key.key = 0;
215 // Compute a unique code key for this operation
217 // Add to the key the input and output types
221 key.u.inType = RS_TYPE_FLOAT_32;
222 rsAssert(key.u.inType == RS_TYPE_FLOAT_32);
226 key.u.outType = RS_TYPE_FLOAT_32;
227 rsAssert(key.u.outType == RS_TYPE_FLOAT_32);
235 key.u.coeffMask |= 1 << i;
238 if (fabs(fpa[0]) != 0.f) key.u.addMask |= 0x1;
239 if (fabs(fpa[1]) != 0.f) key.u.addMask |= 0x2;
240 if (fabs(fpa[2]) != 0.f) key.u.addMask |= 0x4;
241 if (fabs(fpa[3]) != 0.f) key.u.addMask |= 0x8;
246 key.u.coeffMask |= 1 << i;
249 if (ipa[0] != 0) key.u.addMask |= 0x1;
250 if (ipa[1] != 0) key.u.addMask |= 0x2;
251 if (ipa[2] != 0) key.u.addMask |= 0x4;
252 if (ipa[3] != 0) key.u.addMask |= 0x8;
261 if (!key.u.addMask) key.u.dot = 1;
265 if (!(key.u.coeffMask & 0x0888) && (ip[15] == 256) && !(key.u.addMask & 0x8)) {
266 key.u.copyAlpha = !(key.u.inType || key.u.outType);
269 //ALOGE("build key %08x, %08x", (int32_t)(key.key >> 32), (int32_t)key.key);
273 key.u.inVecSize = 3;
276 key.u.inVecSize = 2;
277 key.u.coeffMask &= ~0xF000;
280 key.u.inVecSize = 1;
281 key.u.coeffMask &= ~0xFF00;
284 key.u.coeffMask &= ~0xFFF0;
290 key.u.outVecSize = 3;
293 key.u.outVecSize = 2;
294 key.u.coeffMask &= ~0x8888;
295 key.u.addMask &= 7;
298 key.u.outVecSize = 1;
299 key.u.coeffMask &= ~0xCCCC;
300 key.u.addMask &= 3;
303 key.u.coeffMask &= ~0xEEEE;
304 key.u.addMask &= 1;
308 if (key.u.inType && !key.u.outType) {
309 key.u.addMask |= 1;
310 if (key.u.outVecSize > 0) key.u.addMask |= 2;
311 if (key.u.outVecSize > 1) key.u.addMask |= 4;
312 if (key.u.outVecSize > 2) key.u.addMask |= 8;
315 //ALOGE("build key %08x, %08x", (int32_t)(key.key >> 32), (int32_t)key.key);
316 return key;
463 void * selectKernel(Key_t key)
468 if (!(key.u.inType || key.u.outType)) {
469 if (key.u.dot)
471 else if (key.u.copyAlpha)
481 bool RsdCpuScriptIntrinsicColorMatrix::build(Key_t key) {
500 if (key.u.coeffMask & (1 << (i*4))) {
504 if (!key.u.dot) {
505 if (key.u.coeffMask & (1 << (1 + i*4))) {
509 if (key.u.coeffMask & (1 << (2 + i*4))) {
514 if (!key.u.copyAlpha) {
515 if (key.u.coeffMask & (1 << (3 + i*4))) {
522 if (key.u.inType || key.u.outType) {
523 key.u.copyAlpha = 0;
528 if (key.u.inType) {
529 switch(key.u.inVecSize) {
544 switch(key.u.inVecSize) {
576 if (key.u.addMask & (1 << j)) {
582 if (key.u.addMask & (1 << j)) {
590 if (key.u.outType) {
591 switch(key.u.outVecSize) {
606 switch(key.u.outVecSize) {
628 switch(key.u.inVecSize) {
631 if (key.u.copyAlpha) {
670 if (key.u.addMask & (1 << j)) {
674 if (key.u.addMask & (1 << j)) {
681 if (key.u.dot) {
685 switch(key.u.outVecSize) {
687 if (key.u.copyAlpha) {
706 switch(key.u.outVecSize) {
720 if (key.u.inType != key.u.outType) {
721 key.u.copyAlpha = 0;
722 key.u.dot = 0;
965 Key_t key = computeKey(ein, eout);
968 if ((mOptKernel == nullptr) || (mLastKey.key != key.key)) {
970 // mOptKernel = (void (*)(void *, const void *, const short *, uint32_t)) selectKernel(key);
971 mLastKey = key;
975 if ((mOptKernel == nullptr) || (mLastKey.key != key.key)) {
979 if (build(key)) {
984 int dt = key.u.outVecSize + (key.u.outType == RS_TYPE_FLOAT_32 ? 4 : 0);
985 int st = key.u.inVecSize + (key.u.inType == RS_TYPE_FLOAT_32 ? 4 : 0);
990 uint32_t m = (key.u.coeffMask >> i) & 0x1111;
992 m |= ((key.u.addMask >> i) & 1) << 4;
996 if (key.u.inType == RS_TYPE_FLOAT_32 || key.u.outType == RS_TYPE_FLOAT_32) {
1003 mLastKey = key;
1012 mLastKey.key = 0;