Home | History | Annotate | Download | only in hwui

Lines Matching full:shader

391 // roundRectPos is now divided by roundRectRadius in vertex shader
482 // program for A8, unmodulated, texture w/o shader (black text/path textures) is equivalent
516 String8 shader(gVS_Header_Start);
518 shader.append(gVS_Header_Attributes_TexCoords);
521 shader.append(gVS_Header_Attributes_VertexAlphaParameters);
524 shader.append(gVS_Header_Attributes_Colors);
527 shader.append(gVS_Header_Uniforms);
529 shader.append(gVS_Header_Uniforms_TextureTransform);
532 shader.append(gVS_Header_Uniforms_HasGradient);
535 shader.append(gVS_Header_Uniforms_HasBitmap);
538 shader.append(gVS_Header_Uniforms_HasRoundRectClip);
542 shader.append(gVS_Header_Varyings_HasTexture);
545 shader.append(gVS_Header_Varyings_HasVertexAlpha);
548 shader.append(gVS_Header_Varyings_HasColors);
551 shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
554 shader.append(gVS_Header_Varyings_HasBitmap);
557 shader.append(gVS_Header_Varyings_HasRoundRectClip);
560 // Begin the shader
561 shader.append(gVS_Main);
564 shader.append(gVS_Main_OutTransformedTexCoords);
566 shader.append(gVS_Main_OutTexCoords);
569 shader.append(gVS_Main_VertexAlpha);
572 shader.append(gVS_Main_OutColors);
575 shader.append(gVS_Main_OutBitmapTexCoords);
578 shader.append(gVS_Main_Position);
580 shader.append(gVS_Main_OutGradient[gradientIndex(description)]);
583 shader.append(gVS_Main_HasRoundRectClip);
586 // End the shader
587 shader.append(gVS_Footer);
589 PROGRAM_LOGD("*** Generated vertex shader:\n\n%s", shader.string());
591 return shader;
594 static bool shaderOp(const ProgramDescription& description, String8& shader, const int modulateOp,
598 shader.append(snippets[op]);
603 String8 shader(gFS_Header_Start);
607 shader.append(gFS_Header_Extension_FramebufferFetch);
611 shader.append(gFS_Header_Extension_ExternalTexture);
614 shader.append(gFS_Header);
618 shader.append(gVS_Header_Varyings_HasTexture);
621 shader.append(gVS_Header_Varyings_HasVertexAlpha);
624 shader.append(gVS_Header_Varyings_HasColors);
627 shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
630 shader.append(gVS_Header_Varyings_HasBitmap);
633 shader.append(gVS_Header_Varyings_HasRoundRectClip);
642 shader.append(gFS_Uniforms_Color);
646 shader.append(gFS_Uniforms_TextureSampler);
648 shader.append(gFS_Uniforms_ExternalTextureSampler);
651 shader.append(gFS_Uniforms_GradientSampler[description.isSimpleGradient]);
654 shader.append(gFS_Uniforms_HasRoundRectClip);
658 shader.appendFormat(gFS_Gamma_Preamble, Properties::textGamma,
664 shader.append(gFS_Uniforms_BitmapExternalSampler);
666 shader.append(gFS_Uniforms_BitmapSampler);
669 shader.append(gFS_Uniforms_ColorOp[static_cast<int>(description.colorOp)]);
672 shader.append(gFS_Uniforms_ColorSpaceConversion);
674 shader.append(gFS_Uniforms_TransferFunction[static_cast<int>(description.transferFunction)]);
678 generateBlend(shader, "blendShaders", description.shadersMode);
681 generateBlend(shader, "blendColors", description.colorMode);
684 generateBlend(shader, "blendFramebuffer", description.framebufferMode);
687 generateTextureWrap(shader, description.bitmapWrapS, description.bitmapWrapT);
691 shader.append(gFS_sRGB_TransferFunctions);
695 shader.append(gFS_TransferFunction[static_cast<int>(description.transferFunction)]);
696 shader.append(
699 shader.append(gFS_ColorConvert[description.hasColorSpaceConversion
704 shader.append(gFS_GradientFunctions);
705 shader.append(gFS_GradientPreamble[mHasLinearBlending]);
708 // Begin the shader
709 shader.append(gFS_Main);
715 shader.append(gFS_Main_FetchA8Texture[modulateOp * 2 +
719 shader.append(gFS_Main_FetchTexture[modulateOp]);
723 shader.append(gFS_Main_FetchColor);
727 shader.append(gFS_Main_FetchGradient[gradientIndex(description)]);
731 shader.append(gFS_Main_FetchBitmap);
733 shader.append(gFS_Main_FetchBitmapNpot);
740 shader.append(gFS_Main_BlendShadersBG);
742 shader.append(gFS_Main_BlendShadersGB);
745 shaderOp(description, shader, modulateOp, gFS_Main_BlendShaders_Modulate);
749 shaderOp(description, shader, modulateOp, gFS_Main_GradientShader_Modulate);
752 shaderOp(description, shader, modulateOp, gFS_Main_BitmapShader_Modulate);
757 shader.append(gFS_Main_ModulateColor);
761 shader.append(gFS_Main_ApplyColorOp[static_cast<int>(description.colorOp)]);
765 shader.append(gFS_Main_ApplyVertexAlphaShadowInterp);
767 shader.append(gFS_Main_ApplyVertexAlphaLinearInterp);
772 shader.append(gFS_Main_AddDither);
777 shader.append(gFS_Main_FragColor);
779 shader.append(!description.swapSrcDst ? gFS_Main_FragColor_Blend
783 shader.append(gFS_Main_FragColor_HasColors);
786 shader.append(gFS_Main_FragColor_HasRoundRectClip);
789 shader.append(gFS_Main_DebugHighlight);
792 // End the shader
793 shader.append(gFS_Footer);
796 PROGRAM_LOGD("*** Generated fragment shader:\n\n");
797 printLongString(shader);
800 return shader;
803 void ProgramCache::generateBlend(String8& shader, const char* name, SkBlendMode mode) {
804 shader.append("\nvec4 ");
805 shader.append(name);
806 shader.append("(vec4 src, vec4 dst) {\n");
807 shader.append(" ");
808 shader.append(gBlendOps[(int)mode]);
809 shader.append("}\n");
812 void ProgramCache::generateTextureWrap(String8& shader, GLenum wrapS, GLenum wrapT) {
813 shader.append("\nhighp vec2 wrap(highp vec2 texCoords) {\n");
815 shader.append(" highp float xMod2 = mod(texCoords.x, 2.0);\n");
816 shader.append(" if (xMod2 > 1.0) xMod2 = 2.0 - xMod2;\n");
819 shader.append(" highp float yMod2 = mod(texCoords.y, 2.0);\n");
820 shader.append(" if (yMod2 > 1.0) yMod2 = 2.0 - yMod2;\n");
822 shader.append(" return vec2(");
825 shader.append("texCoords.x");
828 shader.append("mod(texCoords.x, 1.0)");
831 shader.append("xMod2");
834 shader.append(", ");
837 shader.append("texCoords.y");
840 shader.append("mod(texCoords.y, 1.0)");
843 shader.append("yMod2");
846 shader.append(");\n");
847 shader.append("}\n");
850 void ProgramCache::printLongString(const String8& shader) const {
853 const char* str = shader.string();
854 while ((index = shader.find("\n", index)) > -1) {