Home | History | Annotate | Download | only in hwui

Lines Matching full:description

404 Program* ProgramCache::get(const ProgramDescription& description) {
405 programid key = description.key();
415 description.log("Could not find program");
416 program = generateProgram(description, key);
428 Program* ProgramCache::generateProgram(const ProgramDescription& description, programid key) {
429 String8 vertexShader = generateVertexShader(description);
430 String8 fragmentShader = generateFragmentShader(description);
432 return new Program(description, vertexShader.string(), fragmentShader.string());
435 static inline size_t gradientIndex(const ProgramDescription& description) {
436 return description.gradientType * 2 + description.isSimpleGradient;
439 String8 ProgramCache::generateVertexShader(const ProgramDescription& description) {
442 if (description.hasTexture || description.hasExternalTexture) {
445 if (description.hasVertexAlpha) {
448 if (description.hasColors) {
453 if (description.hasTextureTransform) {
456 if (description.hasGradient) {
459 if (description.hasBitmap) {
462 if (description.hasRoundRectClip) {
466 if (description.hasTexture || description.hasExternalTexture) {
469 if (description.hasVertexAlpha) {
472 if (description.hasColors) {
475 if (description.hasGradient) {
476 shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
478 if (description.hasBitmap) {
481 if (description.hasRoundRectClip) {
487 if (description.hasTextureTransform) {
489 } else if (description.hasTexture || description.hasExternalTexture) {
492 if (description.hasVertexAlpha) {
495 if (description.hasColors) {
498 if (description.hasBitmap) {
503 if (description.hasGradient) {
504 shader.append(gVS_Main_OutGradient[gradientIndex(description)]);
506 if (description.hasRoundRectClip) {
518 static bool shaderOp(const ProgramDescription& description, String8& shader,
520 int op = description.hasAlpha8Texture ? MODULATE_OP_MODULATE_A8 : modulateOp;
522 return description.hasAlpha8Texture;
525 String8 ProgramCache::generateFragmentShader(const ProgramDescription& description) {
528 const bool blendFramebuffer = description.framebufferMode >= SkXfermode::kPlus_Mode;
532 if (description.hasExternalTexture) {
539 if (description.hasTexture || description.hasExternalTexture) {
542 if (description.hasVertexAlpha) {
545 if (description.hasColors) {
548 if (description.hasGradient) {
549 shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
551 if (description.hasBitmap) {
554 if (description.hasRoundRectClip) {
560 const bool singleColor = !description.hasTexture && !description.hasExternalTexture &&
561 !description.hasGradient && !description.hasBitmap;
563 if (description.modulate || singleColor) {
567 if (description.hasTexture || description.useShadowAlphaInterp) {
569 } else if (description.hasExternalTexture) {
572 if (description.hasGradient) {
573 shader.appendFormat(gFS_Uniforms_GradientSampler[description.isSimpleGradient],
576 if (description.hasRoundRectClip) {
581 if (!description.hasVertexAlpha
583 && !description.hasColors
584 && description.colorOp == ProgramDescription::ColorFilterMode::None
585 && !description.hasDebugHighlight
586 && !description.hasRoundRectClip) {
589 const bool noShader = !description.hasGradient && !description.hasBitmap;
590 const bool singleTexture = (description.hasTexture || description.hasExternalTexture) &&
591 !description.hasAlpha8Texture && noShader;
592 const bool singleA8Texture = description.hasTexture &&
593 description.hasAlpha8Texture && noShader;
594 const bool singleGradient = !description.hasTexture && !description.hasExternalTexture &&
595 description.hasGradient && !description.hasBitmap &&
596 description.gradientType == ProgramDescription::kGradientLinear;
602 if (!description.modulate) {
609 if (!description.modulate) {
616 if (!description.modulate) {
617 shader.appendFormat(gFS_Fast_SingleGradient[description.isSimpleGradient],
620 shader.appendFormat(gFS_Fast_SingleModulateGradient[description.isSimpleGradient],
637 if (description.hasBitmap) {
640 shader.append(gFS_Uniforms_ColorOp[static_cast<int>(description.colorOp)]);
643 if (description.hasGradient && description.hasBitmap) {
644 generateBlend(shader, "blendShaders", description.shadersMode);
646 if (description.colorOp == ProgramDescription::ColorFilterMode::Blend) {
647 generateBlend(shader, "blendColors", description.colorMode);
650 generateBlend(shader, "blendFramebuffer", description.framebufferMode);
652 if (description.isBitmapNpot) {
653 generateTextureWrap(shader, description.bitmapWrapS, description.bitmapWrapT);
659 if (description.hasTexture || description.hasExternalTexture) {
660 if (description.hasAlpha8Texture) {
661 if (!description.hasGradient && !description.hasBitmap) {
668 if (!description.hasGradient && !description.hasBitmap) {
672 if (description.hasGradient) {
673 shader.append(gFS_Main_FetchGradient[gradientIndex(description)]);
676 if (description.hasBitmap) {
677 if (!description.isBitmapNpot) {
685 if (description.hasGradient && description.hasBitmap) {
686 if (description.isBitmapFirst) {
691 applyModulate = shaderOp(description, shader, modulateOp,
694 if (description.hasGradient) {
695 applyModulate = shaderOp(description, shader, modulateOp,
697 } else if (description.hasBitmap) {
698 applyModulate = shaderOp(description, shader, modulateOp,
703 if (description.modulate && applyModulate) {
708 shader.append(gFS_Main_ApplyColorOp[static_cast<int>(description.colorOp)]);
710 if (description.hasVertexAlpha) {
711 if (description.useShadowAlphaInterp) {
722 shader.append(!description.swapSrcDst ?
725 if (description.hasColors) {
728 if (description.hasRoundRectClip) {
731 if (description.hasDebugHighlight) {