Home | History | Annotate | Download | only in hwui

Lines Matching full:shader

417         // program for A8, unmodulated, texture w/o shader (black text/path textures) is equivalent
451 String8 shader(gVS_Header_Attributes);
453 shader.append(gVS_Header_Attributes_TexCoords);
456 shader.append(gVS_Header_Attributes_AAVertexShapeParameters);
459 shader.append(gVS_Header_Attributes_Colors);
462 shader.append(gVS_Header_Uniforms);
464 shader.append(gVS_Header_Uniforms_TextureTransform);
467 shader.append(gVS_Header_Uniforms_HasGradient);
470 shader.append(gVS_Header_Uniforms_HasBitmap);
474 shader.append(gVS_Header_Varyings_HasTexture);
477 shader.append(gVS_Header_Varyings_IsAAVertexShape);
480 shader.append(gVS_Header_Varyings_HasColors);
483 shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
486 shader.append(gVS_Header_Varyings_HasBitmap);
489 // Begin the shader
490 shader.append(gVS_Main); {
492 shader.append(gVS_Main_OutTransformedTexCoords);
494 shader.append(gVS_Main_OutTexCoords);
497 shader.append(gVS_Main_AAVertexShape);
500 shader.append(gVS_Main_OutColors);
503 shader.append(gVS_Main_OutBitmapTexCoords);
506 shader.append(gVS_Main_Position);
508 shader.append(gVS_Main_OutGradient[gradientIndex(description)]);
511 // End the shader
512 shader.append(gVS_Footer);
514 PROGRAM_LOGD("*** Generated vertex shader:\n\n%s", shader.string());
516 return shader;
519 static bool shaderOp(const ProgramDescription& description, String8& shader,
523 shader.append(snippets[op]);
528 String8 shader;
532 shader.append(gFS_Header_Extension_FramebufferFetch);
535 shader.append(gFS_Header_Extension_ExternalTexture);
538 shader.append(gFS_Header);
542 shader.append(gVS_Header_Varyings_HasTexture);
545 shader.append(gVS_Header_Varyings_IsAAVertexShape);
548 shader.append(gVS_Header_Varyings_HasColors);
551 shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
554 shader.append(gVS_Header_Varyings_HasBitmap);
563 shader.append(gFS_Uniforms_Color);
567 shader.append(gFS_Uniforms_TextureSampler);
569 shader.append(gFS_Uniforms_ExternalTextureSampler);
572 shader.appendFormat(gFS_Uniforms_GradientSampler[description.isSimpleGradient],
576 shader.append(gFS_Uniforms_Gamma);
595 shader.append(gFS_Fast_SingleColor);
599 shader.append(gFS_Fast_SingleTexture);
601 shader.append(gFS_Fast_SingleModulateTexture);
607 shader.append(gFS_Fast_SingleA8Texture_ApplyGamma);
609 shader.append(gFS_Fast_SingleA8Texture);
613 shader.append(gFS_Fast_SingleModulateA8Texture_ApplyGamma);
615 shader.append(gFS_Fast_SingleModulateA8Texture);
621 shader.appendFormat(gFS_Fast_SingleGradient[description.isSimpleGradient],
624 shader.appendFormat(gFS_Fast_SingleModulateGradient[description.isSimpleGradient],
633 PROGRAM_LOGD("*** Generated fragment shader:\n\n");
634 printLongString(shader);
637 return shader;
642 shader.append(gFS_Uniforms_BitmapSampler);
644 shader.append(gFS_Uniforms_ColorOp[description.colorOp]);
648 generateBlend(shader, "blendShaders", description.shadersMode);
651 generateBlend(shader, "blendColors", description.colorMode);
654 generateBlend(shader, "blendFramebuffer", description.framebufferMode);
657 generateTextureWrap(shader, description.bitmapWrapS, description.bitmapWrapT);
660 // Begin the shader
661 shader.append(gFS_Main); {
663 shader.append(gFS_Main_EmulateStencil);
669 shader.append(gFS_Main_FetchA8Texture[modulateOp * 2 +
673 shader.append(gFS_Main_FetchTexture[modulateOp]);
677 shader.append(gFS_Main_FetchColor);
681 shader.append(gFS_Main_FetchGradient[gradientIndex(description)]);
682 shader.appendFormat(gFS_Main_AddDitherToGradient, gFS_Main_Dither[mHasES3]);
686 shader.append(gFS_Main_FetchBitmap);
688 shader.append(gFS_Main_FetchBitmapNpot);
695 shader.append(gFS_Main_BlendShadersBG);
697 shader.append(gFS_Main_BlendShadersGB);
699 applyModulate = shaderOp(description, shader, modulateOp,
703 applyModulate = shaderOp(description, shader, modulateOp,
706 applyModulate = shaderOp(description, shader, modulateOp,
712 shader.append(gFS_Main_ModulateColor);
716 shader.append(gFS_Main_ApplyColorOp[description.colorOp]);
719 shader.append(gFS_Main_AccountForAAVertexShape);
724 shader.append(gFS_Main_FragColor);
726 shader.append(!description.swapSrcDst ?
730 shader.append(gFS_Main_FragColor_HasColors);
733 shader.append(gFS_Main_DebugHighlight);
737 shader.append(gFS_Footer_EmulateStencil);
739 // End the shader
740 shader.append(gFS_Footer);
743 PROGRAM_LOGD("*** Generated fragment shader:\n\n");
744 printLongString(shader);
747 return shader;
750 void ProgramCache::generateBlend(String8& shader, const char* name, SkXfermode::Mode mode) {
751 shader.append("\nvec4 ");
752 shader.append(name);
753 shader.append("(vec4 src, vec4 dst) {\n");
754 shader.append(" ");
755 shader.append(gBlendOps[mode]);
756 shader.append("}\n");
759 void ProgramCache::generateTextureWrap(String8& shader, GLenum wrapS, GLenum wrapT) {
760 shader.append("\nhighp vec2 wrap(highp vec2 texCoords) {\n");
762 shader.append(" highp float xMod2 = mod(texCoords.x, 2.0);\n");
763 shader.append(" if (xMod2 > 1.0) xMod2 = 2.0 - xMod2;\n");
766 shader.append(" highp float yMod2 = mod(texCoords.y, 2.0);\n");
767 shader.append(" if (yMod2 > 1.0) yMod2 = 2.0 - yMod2;\n");
769 shader.append(" return vec2(");
772 shader.append("texCoords.x");
775 shader.append("mod(texCoords.x, 1.0)");
778 shader.append("xMod2");
781 shader.append(", ");
784 shader.append("texCoords.y");
787 shader.append("mod(texCoords.y, 1.0)");
790 shader.append("yMod2");
793 shader.append(");\n");
794 shader.append("}\n");
797 void ProgramCache::printLongString(const String8& shader) const {
800 const char* str = shader.string();
801 while ((index = shader.find("\n", index)) > -1) {