Home | History | Annotate | Download | only in hwui

Lines Matching refs:shader

524         // program for A8, unmodulated, texture w/o shader (black text/path textures) is equivalent
558 String8 shader(gVS_Header_Start);
560 shader.append(gVS_Header_Attributes_TexCoords);
563 shader.append(gVS_Header_Attributes_VertexAlphaParameters);
566 shader.append(gVS_Header_Attributes_Colors);
569 shader.append(gVS_Header_Uniforms);
571 shader.append(gVS_Header_Uniforms_TextureTransform);
574 shader.append(gVS_Header_Uniforms_HasGradient);
577 shader.append(gVS_Header_Uniforms_HasBitmap);
580 shader.append(gVS_Header_Uniforms_HasRoundRectClip);
584 shader.append(gVS_Header_Varyings_HasTexture);
587 shader.append(gVS_Header_Varyings_HasVertexAlpha);
590 shader.append(gVS_Header_Varyings_HasColors);
593 shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
596 shader.append(gVS_Header_Varyings_HasBitmap);
599 shader.append(gVS_Header_Varyings_HasRoundRectClip);
602 // Begin the shader
603 shader.append(gVS_Main); {
605 shader.append(gVS_Main_OutTransformedTexCoords);
607 shader.append(gVS_Main_OutTexCoords);
610 shader.append(gVS_Main_VertexAlpha);
613 shader.append(gVS_Main_OutColors);
616 shader.append(gVS_Main_OutBitmapTexCoords);
619 shader.append(gVS_Main_Position);
621 shader.append(gVS_Main_OutGradient[gradientIndex(description)]);
624 shader.append(gVS_Main_HasRoundRectClip);
627 // End the shader
628 shader.append(gVS_Footer);
630 PROGRAM_LOGD("*** Generated vertex shader:\n\n%s", shader.string());
632 return shader;
635 static bool shaderOp(const ProgramDescription& description, String8& shader,
639 shader.append(snippets[op]);
644 String8 shader(gFS_Header_Start);
648 shader.append(gFS_Header_Extension_FramebufferFetch);
652 shader.append(gFS_Header_Extension_ExternalTexture);
655 shader.append(gFS_Header);
659 shader.append(gVS_Header_Varyings_HasTexture);
662 shader.append(gVS_Header_Varyings_HasVertexAlpha);
665 shader.append(gVS_Header_Varyings_HasColors);
668 shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
671 shader.append(gVS_Header_Varyings_HasBitmap);
674 shader.append(gVS_Header_Varyings_HasRoundRectClip);
683 shader.append(gFS_Uniforms_Color);
687 shader.append(gFS_Uniforms_TextureSampler);
689 shader.append(gFS_Uniforms_ExternalTextureSampler);
692 shader.append(gFS_Uniforms_GradientSampler[description.isSimpleGradient]);
695 shader.append(gFS_Uniforms_HasRoundRectClip);
699 shader.appendFormat(gFS_Gamma_Preamble, Properties::textGamma, 1.0f / Properties::textGamma);
704 shader.append(gFS_Uniforms_BitmapExternalSampler);
706 shader.append(gFS_Uniforms_BitmapSampler);
709 shader.append(gFS_Uniforms_ColorOp[static_cast<int>(description.colorOp)]);
712 shader.append(gFS_Uniforms_ColorSpaceConversion);
714 shader.append(gFS_Uniforms_TransferFunction[static_cast<int>(description.transferFunction)]);
718 generateBlend(shader, "blendShaders", description.shadersMode);
721 generateBlend(shader, "blendColors", description.colorMode);
724 generateBlend(shader, "blendFramebuffer", description.framebufferMode);
727 generateTextureWrap(shader, description.bitmapWrapS, description.bitmapWrapT);
731 shader.append(gFS_sRGB_TransferFunctions);
735 shader.append(gFS_TransferFunction[static_cast<int>(description.transferFunction)]);
736 shader.append(gFS_OETF[(description.hasLinearTexture || description.hasColorSpaceConversion)
738 shader.append(gFS_ColorConvert[description.hasColorSpaceConversion
742 shader.append(gFS_GradientFunctions);
743 shader.append(gFS_GradientPreamble[mHasLinearBlending]);
746 // Begin the shader
747 shader.append(gFS_Main); {
752 shader.append(
756 shader.append(gFS_Main_FetchTexture[modulateOp]);
760 shader.append(gFS_Main_FetchColor);
764 shader.append(gFS_Main_FetchGradient[gradientIndex(description)]);
768 shader.append(gFS_Main_FetchBitmap);
770 shader.append(gFS_Main_FetchBitmapNpot);
777 shader.append(gFS_Main_BlendShadersBG);
779 shader.append(gFS_Main_BlendShadersGB);
781 applyModulate = shaderOp(description, shader, modulateOp,
785 applyModulate = shaderOp(description, shader, modulateOp,
788 applyModulate = shaderOp(description, shader, modulateOp,
794 shader.append(gFS_Main_ModulateColor);
798 shader.append(gFS_Main_ApplyColorOp[static_cast<int>(description.colorOp)]);
802 shader.append(gFS_Main_ApplyVertexAlphaShadowInterp);
804 shader.append(gFS_Main_ApplyVertexAlphaLinearInterp);
809 shader.append(gFS_Main_AddDither);
814 shader.append(gFS_Main_FragColor);
816 shader.append(!description.swapSrcDst ?
820 shader.append(gFS_Main_FragColor_HasColors);
823 shader.append(gFS_Main_FragColor_HasRoundRectClip);
826 shader.append(gFS_Main_DebugHighlight);
829 // End the shader
830 shader.append(gFS_Footer);
833 PROGRAM_LOGD("*** Generated fragment shader:\n\n");
834 printLongString(shader);
837 return shader;
840 void ProgramCache::generateBlend(String8& shader, const char* name, SkBlendMode mode) {
841 shader.append("\nvec4 ");
842 shader.append(name);
843 shader.append("(vec4 src, vec4 dst) {\n");
844 shader.append(" ");
845 shader.append(gBlendOps[(int)mode]);
846 shader.append("}\n");
849 void ProgramCache::generateTextureWrap(String8& shader, GLenum wrapS, GLenum wrapT) {
850 shader.append("\nhighp vec2 wrap(highp vec2 texCoords) {\n");
852 shader.append(" highp float xMod2 = mod(texCoords.x, 2.0);\n");
853 shader.append(" if (xMod2 > 1.0) xMod2 = 2.0 - xMod2;\n");
856 shader.append(" highp float yMod2 = mod(texCoords.y, 2.0);\n");
857 shader.append(" if (yMod2 > 1.0) yMod2 = 2.0 - yMod2;\n");
859 shader.append(" return vec2(");
862 shader.append("texCoords.x");
865 shader.append("mod(texCoords.x, 1.0)");
868 shader.append("xMod2");
871 shader.append(", ");
874 shader.append("texCoords.y");
877 shader.append("mod(texCoords.y, 1.0)");
880 shader.append("yMod2");
883 shader.append(");\n");
884 shader.append("}\n");
887 void ProgramCache::printLongString(const String8& shader) const {
890 const char* str = shader.string();
891 while ((index = shader.find("\n", index)) > -1) {