e3ae968f5f
GLSL allows an array of `lowp float` to be compared against `highp float` seamlessly because the types are considered to be the same. SkSL, however, treats these as different types, so we need to coerce the types to allow this comparison to work. In other words, these comparisons can cause an array to be implicitly casted. The expression `myHalf2Array == float[2](a, b)` should be allowed when narrowing conversions are enabled. To allow this to work, we need a dedicated IR node representing this type coercion. We now allow implicit coercion of array types when the array's component types would be implicitly coercible, and have a new IR node representing that implicit conversion. This CL fixes array comparisons, but array assignment needs additional fixes. It currently results in: "type mismatch: '=' cannot operate on (types)". Bug: skia:12248 Change-Id: I99062486c081f748f65be4b36a3a52e95b559812 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/436571 Auto-Submit: John Stiles <johnstiles@google.com> Commit-Queue: John Stiles <johnstiles@google.com> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
205 lines
7.4 KiB
Plaintext
205 lines
7.4 KiB
Plaintext
# Copyright 2016 Google Inc.
|
|
#
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# Things are easiest for everyone if these source paths are absolute.
|
|
_src = get_path_info("../src", "abspath")
|
|
_include = get_path_info("../include", "abspath")
|
|
|
|
skia_sksl_sources = [
|
|
"$_include/private/SkSLDefines.h",
|
|
"$_include/private/SkSLIRNode.h",
|
|
"$_include/private/SkSLLayout.h",
|
|
"$_include/private/SkSLModifiers.h",
|
|
"$_include/private/SkSLProgramElement.h",
|
|
"$_include/private/SkSLProgramKind.h",
|
|
"$_include/private/SkSLSampleUsage.h",
|
|
"$_include/private/SkSLStatement.h",
|
|
"$_include/private/SkSLString.h",
|
|
"$_include/private/SkSLSymbol.h",
|
|
"$_include/sksl/DSL.h",
|
|
"$_include/sksl/DSLBlock.h",
|
|
"$_include/sksl/DSLCase.h",
|
|
"$_include/sksl/DSLCore.h",
|
|
"$_include/sksl/DSLErrorHandling.h",
|
|
"$_include/sksl/DSLExpression.h",
|
|
"$_include/sksl/DSLFunction.h",
|
|
"$_include/sksl/DSLLayout.h",
|
|
"$_include/sksl/DSLModifiers.h",
|
|
"$_include/sksl/DSLRuntimeEffects.h",
|
|
"$_include/sksl/DSLStatement.h",
|
|
"$_include/sksl/DSLSymbols.h",
|
|
"$_include/sksl/DSLType.h",
|
|
"$_include/sksl/DSLVar.h",
|
|
"$_src/sksl/SkSLASTFile.h",
|
|
"$_src/sksl/SkSLASTNode.cpp",
|
|
"$_src/sksl/SkSLASTNode.h",
|
|
"$_src/sksl/SkSLAnalysis.cpp",
|
|
"$_src/sksl/SkSLAnalysis.h",
|
|
"$_src/sksl/SkSLBuiltinTypes.cpp",
|
|
"$_src/sksl/SkSLBuiltinTypes.h",
|
|
"$_src/sksl/SkSLCompiler.cpp",
|
|
"$_src/sksl/SkSLCompiler.h",
|
|
"$_src/sksl/SkSLConstantFolder.cpp",
|
|
"$_src/sksl/SkSLConstantFolder.h",
|
|
"$_src/sksl/SkSLContext.cpp",
|
|
"$_src/sksl/SkSLContext.h",
|
|
"$_src/sksl/SkSLDSLParser.cpp",
|
|
"$_src/sksl/SkSLDSLParser.h",
|
|
"$_src/sksl/SkSLDehydrator.cpp",
|
|
"$_src/sksl/SkSLDehydrator.h",
|
|
"$_src/sksl/SkSLErrorReporter.h",
|
|
"$_src/sksl/SkSLFileOutputStream.h",
|
|
"$_src/sksl/SkSLIRGenerator.cpp",
|
|
"$_src/sksl/SkSLIRGenerator.h",
|
|
"$_src/sksl/SkSLInliner.cpp",
|
|
"$_src/sksl/SkSLInliner.h",
|
|
"$_src/sksl/SkSLIntrinsicList.h",
|
|
"$_src/sksl/SkSLLexer.cpp",
|
|
"$_src/sksl/SkSLLexer.h",
|
|
"$_src/sksl/SkSLMangler.cpp",
|
|
"$_src/sksl/SkSLMangler.h",
|
|
"$_src/sksl/SkSLMemoryLayout.h",
|
|
"$_src/sksl/SkSLMemoryPool.h",
|
|
"$_src/sksl/SkSLModifiersPool.h",
|
|
"$_src/sksl/SkSLOperators.cpp",
|
|
"$_src/sksl/SkSLOperators.h",
|
|
"$_src/sksl/SkSLOutputStream.cpp",
|
|
"$_src/sksl/SkSLOutputStream.h",
|
|
"$_src/sksl/SkSLParsedModule.h",
|
|
"$_src/sksl/SkSLParser.cpp",
|
|
"$_src/sksl/SkSLParser.h",
|
|
"$_src/sksl/SkSLPool.cpp",
|
|
"$_src/sksl/SkSLPool.h",
|
|
"$_src/sksl/SkSLPosition.h",
|
|
"$_src/sksl/SkSLProgramSettings.h",
|
|
"$_src/sksl/SkSLRehydrator.cpp",
|
|
"$_src/sksl/SkSLRehydrator.h",
|
|
"$_src/sksl/SkSLSampleUsage.cpp",
|
|
"$_src/sksl/SkSLString.cpp",
|
|
"$_src/sksl/SkSLStringStream.h",
|
|
"$_src/sksl/SkSLUtil.cpp",
|
|
"$_src/sksl/SkSLUtil.h",
|
|
"$_src/sksl/codegen/SkSLVMCodeGenerator.cpp",
|
|
"$_src/sksl/codegen/SkSLVMCodeGenerator.h",
|
|
"$_src/sksl/dsl/DSLBlock.cpp",
|
|
"$_src/sksl/dsl/DSLCase.cpp",
|
|
"$_src/sksl/dsl/DSLCore.cpp",
|
|
"$_src/sksl/dsl/DSLExpression.cpp",
|
|
"$_src/sksl/dsl/DSLFunction.cpp",
|
|
"$_src/sksl/dsl/DSLLayout.cpp",
|
|
"$_src/sksl/dsl/DSLRuntimeEffects.cpp",
|
|
"$_src/sksl/dsl/DSLStatement.cpp",
|
|
"$_src/sksl/dsl/DSLSymbols.cpp",
|
|
"$_src/sksl/dsl/DSLType.cpp",
|
|
"$_src/sksl/dsl/DSLVar.cpp",
|
|
"$_src/sksl/dsl/priv/DSLFPs.cpp",
|
|
"$_src/sksl/dsl/priv/DSLWriter.cpp",
|
|
"$_src/sksl/dsl/priv/DSLWriter.h",
|
|
"$_src/sksl/ir/SkSLBinaryExpression.cpp",
|
|
"$_src/sksl/ir/SkSLBinaryExpression.h",
|
|
"$_src/sksl/ir/SkSLBlock.cpp",
|
|
"$_src/sksl/ir/SkSLBlock.h",
|
|
"$_src/sksl/ir/SkSLBoolLiteral.h",
|
|
"$_src/sksl/ir/SkSLBreakStatement.h",
|
|
"$_src/sksl/ir/SkSLConstructor.cpp",
|
|
"$_src/sksl/ir/SkSLConstructor.h",
|
|
"$_src/sksl/ir/SkSLConstructorArray.cpp",
|
|
"$_src/sksl/ir/SkSLConstructorArray.h",
|
|
"$_src/sksl/ir/SkSLConstructorArrayCast.cpp",
|
|
"$_src/sksl/ir/SkSLConstructorArrayCast.h",
|
|
"$_src/sksl/ir/SkSLConstructorCompound.cpp",
|
|
"$_src/sksl/ir/SkSLConstructorCompound.h",
|
|
"$_src/sksl/ir/SkSLConstructorCompoundCast.cpp",
|
|
"$_src/sksl/ir/SkSLConstructorCompoundCast.h",
|
|
"$_src/sksl/ir/SkSLConstructorDiagonalMatrix.cpp",
|
|
"$_src/sksl/ir/SkSLConstructorDiagonalMatrix.h",
|
|
"$_src/sksl/ir/SkSLConstructorMatrixResize.cpp",
|
|
"$_src/sksl/ir/SkSLConstructorMatrixResize.h",
|
|
"$_src/sksl/ir/SkSLConstructorScalarCast.cpp",
|
|
"$_src/sksl/ir/SkSLConstructorScalarCast.h",
|
|
"$_src/sksl/ir/SkSLConstructorSplat.cpp",
|
|
"$_src/sksl/ir/SkSLConstructorSplat.h",
|
|
"$_src/sksl/ir/SkSLConstructorStruct.cpp",
|
|
"$_src/sksl/ir/SkSLConstructorStruct.h",
|
|
"$_src/sksl/ir/SkSLContinueStatement.h",
|
|
"$_src/sksl/ir/SkSLDiscardStatement.h",
|
|
"$_src/sksl/ir/SkSLDoStatement.cpp",
|
|
"$_src/sksl/ir/SkSLDoStatement.h",
|
|
"$_src/sksl/ir/SkSLExpression.h",
|
|
"$_src/sksl/ir/SkSLExpressionStatement.cpp",
|
|
"$_src/sksl/ir/SkSLExpressionStatement.h",
|
|
"$_src/sksl/ir/SkSLExtension.h",
|
|
"$_src/sksl/ir/SkSLExternalFunction.h",
|
|
"$_src/sksl/ir/SkSLExternalFunctionCall.h",
|
|
"$_src/sksl/ir/SkSLExternalFunctionReference.h",
|
|
"$_src/sksl/ir/SkSLField.h",
|
|
"$_src/sksl/ir/SkSLFieldAccess.cpp",
|
|
"$_src/sksl/ir/SkSLFieldAccess.h",
|
|
"$_src/sksl/ir/SkSLFloatLiteral.h",
|
|
"$_src/sksl/ir/SkSLForStatement.cpp",
|
|
"$_src/sksl/ir/SkSLForStatement.h",
|
|
"$_src/sksl/ir/SkSLFunctionCall.cpp",
|
|
"$_src/sksl/ir/SkSLFunctionCall.h",
|
|
"$_src/sksl/ir/SkSLFunctionDeclaration.cpp",
|
|
"$_src/sksl/ir/SkSLFunctionDeclaration.h",
|
|
"$_src/sksl/ir/SkSLFunctionDefinition.h",
|
|
"$_src/sksl/ir/SkSLFunctionPrototype.h",
|
|
"$_src/sksl/ir/SkSLFunctionReference.h",
|
|
"$_src/sksl/ir/SkSLIfStatement.cpp",
|
|
"$_src/sksl/ir/SkSLIfStatement.h",
|
|
"$_src/sksl/ir/SkSLIndexExpression.cpp",
|
|
"$_src/sksl/ir/SkSLIndexExpression.h",
|
|
"$_src/sksl/ir/SkSLInlineMarker.h",
|
|
"$_src/sksl/ir/SkSLIntLiteral.h",
|
|
"$_src/sksl/ir/SkSLInterfaceBlock.h",
|
|
"$_src/sksl/ir/SkSLModifiersDeclaration.h",
|
|
"$_src/sksl/ir/SkSLNop.h",
|
|
"$_src/sksl/ir/SkSLPoison.h",
|
|
"$_src/sksl/ir/SkSLPostfixExpression.cpp",
|
|
"$_src/sksl/ir/SkSLPostfixExpression.h",
|
|
"$_src/sksl/ir/SkSLPrefixExpression.cpp",
|
|
"$_src/sksl/ir/SkSLPrefixExpression.h",
|
|
"$_src/sksl/ir/SkSLProgram.h",
|
|
"$_src/sksl/ir/SkSLReturnStatement.h",
|
|
"$_src/sksl/ir/SkSLSetting.cpp",
|
|
"$_src/sksl/ir/SkSLSetting.h",
|
|
"$_src/sksl/ir/SkSLStructDefinition.h",
|
|
"$_src/sksl/ir/SkSLSwitchCase.h",
|
|
"$_src/sksl/ir/SkSLSwitchStatement.cpp",
|
|
"$_src/sksl/ir/SkSLSwitchStatement.h",
|
|
"$_src/sksl/ir/SkSLSwizzle.cpp",
|
|
"$_src/sksl/ir/SkSLSwizzle.h",
|
|
"$_src/sksl/ir/SkSLSymbolAlias.h",
|
|
"$_src/sksl/ir/SkSLSymbolTable.cpp",
|
|
"$_src/sksl/ir/SkSLSymbolTable.h",
|
|
"$_src/sksl/ir/SkSLTernaryExpression.cpp",
|
|
"$_src/sksl/ir/SkSLTernaryExpression.h",
|
|
"$_src/sksl/ir/SkSLType.cpp",
|
|
"$_src/sksl/ir/SkSLType.h",
|
|
"$_src/sksl/ir/SkSLTypeReference.h",
|
|
"$_src/sksl/ir/SkSLUnresolvedFunction.h",
|
|
"$_src/sksl/ir/SkSLVarDeclarations.cpp",
|
|
"$_src/sksl/ir/SkSLVarDeclarations.h",
|
|
"$_src/sksl/ir/SkSLVariable.cpp",
|
|
"$_src/sksl/ir/SkSLVariable.h",
|
|
"$_src/sksl/ir/SkSLVariableReference.cpp",
|
|
"$_src/sksl/ir/SkSLVariableReference.h",
|
|
"$_src/sksl/spirv.h",
|
|
]
|
|
|
|
skia_sksl_gpu_sources = [
|
|
"$_src/sksl/codegen/SkSLCodeGenerator.h",
|
|
"$_src/sksl/codegen/SkSLGLSLCodeGenerator.cpp",
|
|
"$_src/sksl/codegen/SkSLGLSLCodeGenerator.h",
|
|
"$_src/sksl/codegen/SkSLMetalCodeGenerator.cpp",
|
|
"$_src/sksl/codegen/SkSLMetalCodeGenerator.h",
|
|
"$_src/sksl/codegen/SkSLPipelineStageCodeGenerator.cpp",
|
|
"$_src/sksl/codegen/SkSLPipelineStageCodeGenerator.h",
|
|
"$_src/sksl/codegen/SkSLSPIRVCodeGenerator.cpp",
|
|
"$_src/sksl/codegen/SkSLSPIRVCodeGenerator.h",
|
|
"$_src/sksl/codegen/SkSLSPIRVtoHLSL.cpp",
|
|
"$_src/sksl/codegen/SkSLSPIRVtoHLSL.h",
|
|
]
|