Lines Matching refs:description

414 Program* ProgramCache::get(const ProgramDescription& description) {
415 programid key = description.key();
425 description.log("Could not find program");
426 program = generateProgram(description, key);
438 Program* ProgramCache::generateProgram(const ProgramDescription& description, programid key) {
439 String8 vertexShader = generateVertexShader(description);
440 String8 fragmentShader = generateFragmentShader(description);
442 return new Program(description, vertexShader.string(), fragmentShader.string());
445 static inline size_t gradientIndex(const ProgramDescription& description) {
446 return description.gradientType * 2 + description.isSimpleGradient;
449 String8 ProgramCache::generateVertexShader(const ProgramDescription& description) {
452 if (description.hasTexture || description.hasExternalTexture) {
455 if (description.isAA) {
458 if (description.hasColors) {
463 if (description.hasTextureTransform) {
466 if (description.hasGradient) {
469 if (description.hasBitmap) {
473 if (description.hasTexture || description.hasExternalTexture) {
476 if (description.isAA) {
479 if (description.hasColors) {
482 if (description.hasGradient) {
483 shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
485 if (description.hasBitmap) {
491 if (description.hasTextureTransform) {
493 } else if (description.hasTexture || description.hasExternalTexture) {
496 if (description.isAA) {
499 if (description.hasColors) {
502 if (description.hasBitmap) {
507 if (description.hasGradient) {
508 shader.append(gVS_Main_OutGradient[gradientIndex(description)]);
519 static bool shaderOp(const ProgramDescription& description, String8& shader,
521 int op = description.hasAlpha8Texture ? MODULATE_OP_MODULATE_A8 : modulateOp;
522 op = op * 2 + description.hasGammaCorrection;
524 return description.hasAlpha8Texture;
527 String8 ProgramCache::generateFragmentShader(const ProgramDescription& description) {
530 const bool blendFramebuffer = description.framebufferMode >= SkXfermode::kPlus_Mode;
534 if (description.hasExternalTexture) {
541 if (description.hasTexture || description.hasExternalTexture) {
544 if (description.isAA) {
547 if (description.hasColors) {
550 if (description.hasGradient) {
551 shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
553 if (description.hasBitmap) {
559 const bool singleColor = !description.hasTexture && !description.hasExternalTexture &&
560 !description.hasGradient && !description.hasBitmap;
562 if (description.modulate || singleColor) {
566 if (description.hasTexture) {
568 } else if (description.hasExternalTexture) {
571 if (description.hasGradient) {
572 shader.appendFormat(gFS_Uniforms_GradientSampler[description.isSimpleGradient],
575 if (description.hasGammaCorrection) {
580 if (!description.isAA && !blendFramebuffer && !description.hasColors &&
581 description.colorOp == ProgramDescription::kColorNone &&
582 !description.hasDebugHighlight && !description.emulateStencil) {
585 const bool noShader = !description.hasGradient && !description.hasBitmap;
586 const bool singleTexture = (description.hasTexture || description.hasExternalTexture) &&
587 !description.hasAlpha8Texture && noShader;
588 const bool singleA8Texture = description.hasTexture &&
589 description.hasAlpha8Texture && noShader;
590 const bool singleGradient = !description.hasTexture && !description.hasExternalTexture &&
591 description.hasGradient && !description.hasBitmap &&
592 description.gradientType == ProgramDescription::kGradientLinear;
598 if (!description.modulate) {
605 if (!description.modulate) {
606 if (description.hasGammaCorrection) {
612 if (description.hasGammaCorrection) {
620 if (!description.modulate) {
621 shader.appendFormat(gFS_Fast_SingleGradient[description.isSimpleGradient],
624 shader.appendFormat(gFS_Fast_SingleModulateGradient[description.isSimpleGradient],
641 if (description.hasBitmap) {
644 shader.append(gFS_Uniforms_ColorOp[description.colorOp]);
647 if (description.hasGradient && description.hasBitmap) {
648 generateBlend(shader, "blendShaders", description.shadersMode);
650 if (description.colorOp == ProgramDescription::kColorBlend) {
651 generateBlend(shader, "blendColors", description.colorMode);
654 generateBlend(shader, "blendFramebuffer", description.framebufferMode);
656 if (description.isBitmapNpot) {
657 generateTextureWrap(shader, description.bitmapWrapS, description.bitmapWrapT);
662 if (description.emulateStencil) {
666 if (description.hasTexture || description.hasExternalTexture) {
667 if (description.hasAlpha8Texture) {
668 if (!description.hasGradient && !description.hasBitmap) {
670 description.hasGammaCorrection]);
676 if (!description.hasGradient && !description.hasBitmap) {
680 if (description.hasGradient) {
681 shader.append(gFS_Main_FetchGradient[gradientIndex(description)]);
684 if (description.hasBitmap) {
685 if (!description.isBitmapNpot) {
693 if (description.hasGradient && description.hasBitmap) {
694 if (description.isBitmapFirst) {
699 applyModulate = shaderOp(description, shader, modulateOp,
702 if (description.hasGradient) {
703 applyModulate = shaderOp(description, shader, modulateOp,
705 } else if (description.hasBitmap) {
706 applyModulate = shaderOp(description, shader, modulateOp,
711 if (description.modulate && applyModulate) {
716 shader.append(gFS_Main_ApplyColorOp[description.colorOp]);
718 if (description.isAA) {
726 shader.append(!description.swapSrcDst ?
729 if (description.hasColors) {
732 if (description.hasDebugHighlight) {
736 if (description.emulateStencil) {