Home | History | Annotate | Download | only in hwui

Lines Matching full:description

439 Program* ProgramCache::get(const ProgramDescription& description) {
440 programid key = description.key();
444 description.log("Could not find program");
445 program = generateProgram(description, key);
457 Program* ProgramCache::generateProgram(const ProgramDescription& description, programid key) {
458 String8 vertexShader = generateVertexShader(description);
459 String8 fragmentShader = generateFragmentShader(description);
461 return new Program(description, vertexShader.string(), fragmentShader.string());
464 static inline size_t gradientIndex(const ProgramDescription& description) {
465 return description.gradientType * 2 + description.isSimpleGradient;
468 String8 ProgramCache::generateVertexShader(const ProgramDescription& description) {
471 if (description.hasTexture || description.hasExternalTexture) {
474 if (description.isAA) {
475 if (description.isVertexShape) {
483 if (description.hasTextureTransform) {
486 if (description.hasGradient) {
487 shader.append(gVS_Header_Uniforms_HasGradient[description.gradientType]);
489 if (description.hasBitmap) {
492 if (description.isPoint) {
496 if (description.hasTexture || description.hasExternalTexture) {
499 if (description.isAA) {
500 if (description.isVertexShape) {
506 if (description.hasGradient) {
507 shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
509 if (description.hasBitmap) {
510 shader.append(description.isPoint ?
517 if (description.hasTextureTransform) {
519 } else if (description.hasTexture || description.hasExternalTexture) {
522 if (description.isAA) {
523 if (description.isVertexShape) {
529 if (description.hasBitmap) {
530 shader.append(description.isPoint ?
534 if (description.isPoint) {
539 if (description.hasGradient) {
540 shader.append(gVS_Main_OutGradient[gradientIndex(description)]);
551 static bool shaderOp(const ProgramDescription& description, String8& shader,
553 int op = description.hasAlpha8Texture ? MODULATE_OP_MODULATE_A8 : modulateOp;
554 op = op * 2 + description.hasGammaCorrection;
556 return description.hasAlpha8Texture;
559 String8 ProgramCache::generateFragmentShader(const ProgramDescription& description) {
562 const bool blendFramebuffer = description.framebufferMode >= SkXfermode::kPlus_Mode;
566 if (description.hasExternalTexture) {
573 if (description.hasTexture || description.hasExternalTexture) {
576 if (description.isAA) {
577 if (description.isVertexShape) {
583 if (description.hasGradient) {
584 shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
586 if (description.hasBitmap) {
587 shader.append(description.isPoint ?
594 const bool singleColor = !description.hasTexture && !description.hasExternalTexture &&
595 !description.hasGradient && !description.hasBitmap;
597 if (description.modulate || singleColor) {
601 if (description.hasTexture) {
603 } else if (description.hasExternalTexture) {
606 if (description.isAA && !description.isVertexShape) {
609 if (description.hasGradient) {
610 shader.append(gFS_Uniforms_GradientSampler[gradientIndex(description)]);
612 if (description.hasBitmap && description.isPoint) {
615 if (description.hasGammaCorrection) {
620 if (!description.isAA && !blendFramebuffer &&
621 description.colorOp == ProgramDescription::kColorNone &&
622 !description.isPoint && !description.isVertexShape) {
625 const bool noShader = !description.hasGradient && !description.hasBitmap;
626 const bool singleTexture = (description.hasTexture || description.hasExternalTexture) &&
627 !description.hasAlpha8Texture && noShader;
628 const bool singleA8Texture = description.hasTexture &&
629 description.hasAlpha8Texture && noShader;
630 const bool singleGradient = !description.hasTexture && !description.hasExternalTexture &&
631 description.hasGradient && !description.hasBitmap &&
632 description.gradientType == ProgramDescription::kGradientLinear;
638 if (!description.modulate) {
645 if (!description.modulate) {
646 if (description.hasGammaCorrection) {
652 if (description.hasGammaCorrection) {
660 if (!description.modulate) {
661 shader.append(gFS_Fast_SingleGradient[description.isSimpleGradient]);
663 shader.append(gFS_Fast_SingleModulateGradient[description.isSimpleGradient]);
679 if (description.hasBitmap) {
682 shader.append(gFS_Uniforms_ColorOp[description.colorOp]);
685 if (description.hasGradient && description.hasBitmap) {
686 generateBlend(shader, "blendShaders", description.shadersMode);
688 if (description.colorOp == ProgramDescription::kColorBlend) {
689 generateBlend(shader, "blendColors", description.colorMode);
692 generateBlend(shader, "blendFramebuffer", description.framebufferMode);
694 if (description.isBitmapNpot) {
695 generateTextureWrap(shader, description.bitmapWrapS, description.bitmapWrapT);
701 if (description.hasTexture || description.hasExternalTexture) {
702 if (description.hasAlpha8Texture) {
703 if (!description.hasGradient && !description.hasBitmap) {
705 description.hasGammaCorrection]);
711 if (!description.hasGradient && !description.hasBitmap) {
715 if (description.hasGradient) {
716 shader.append(gFS_Main_FetchGradient[gradientIndex(description)]);
719 if (description.hasBitmap) {
720 if (description.isPoint) {
723 if (!description.isBitmapNpot) {
731 if (description.hasGradient && description.hasBitmap) {
732 if (description.isBitmapFirst) {
737 applyModulate = shaderOp(description, shader, modulateOp,
740 if (description.hasGradient) {
741 applyModulate = shaderOp(description, shader, modulateOp,
743 } else if (description.hasBitmap) {
744 applyModulate = shaderOp(description, shader, modulateOp,
749 if (description.modulate && applyModulate) {
754 shader.append(gFS_Main_ApplyColorOp[description.colorOp]);
756 if (description.isAA) {
757 if (description.isVertexShape) {
768 shader.append(!description.swapSrcDst ?