Previously, it was assumed that a function argument is either AC or
AC[i], and it was converted to AC or AC+i respectively. The code is
changed to support any number of dimensions and subscripts, using
array size information from AC's type. If AC is an array of array
(atomic_uint AC[N][M][R]), the following index calculations are done.
AC -> AC.arrayIndex
AC[i] -> AC.arrayIndex + i*M*R
AC[i][j] -> AC.arrayIndex + i*M*R + j*R
AC[i][j][k] -> AC.arrayIndex + i*M*R + j*R + k
A test is added to exercise these various forms of indexing:
AtomicCounterBufferTest31.AtomicCounterArrayOfArray
Bug: angleproject:3566
Change-Id: I1e181a7363463d1d0ee4916f35006ed7c58e0f7c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1739488
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by:
Tim Van Patten <timvp@google.com>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| tree_ops | Loading commit data... | |
| tree_util | Loading commit data... | |
| 64bit-lexer-safety.patch | Loading commit data... | |
| ASTMetadataHLSL.cpp | Loading commit data... | |
| ASTMetadataHLSL.h | Loading commit data... | |
| AtomicCounterFunctionHLSL.cpp | Loading commit data... | |
| AtomicCounterFunctionHLSL.h | Loading commit data... | |
| BaseTypes.h | Loading commit data... | |
| BuiltInFunctionEmulator.cpp | Loading commit data... | |
| BuiltInFunctionEmulator.h | Loading commit data... | |
| BuiltInFunctionEmulatorGLSL.cpp | Loading commit data... | |
| BuiltInFunctionEmulatorGLSL.h | Loading commit data... | |
| BuiltInFunctionEmulatorHLSL.cpp | Loading commit data... | |
| BuiltInFunctionEmulatorHLSL.h | Loading commit data... | |
| CallDAG.cpp | Loading commit data... | |
| CallDAG.h | Loading commit data... | |
| CodeGen.cpp | Loading commit data... | |
| CollectVariables.cpp | Loading commit data... | |
| CollectVariables.h | Loading commit data... | |
| Common.h | Loading commit data... | |
| Compiler.cpp | Loading commit data... | |
| Compiler.h | Loading commit data... | |
| ConstantUnion.cpp | Loading commit data... | |
| ConstantUnion.h | Loading commit data... | |
| Declarator.cpp | Loading commit data... | |
| Declarator.h | Loading commit data... | |
| Diagnostics.cpp | Loading commit data... | |
| Diagnostics.h | Loading commit data... | |
| DirectiveHandler.cpp | Loading commit data... | |
| DirectiveHandler.h | Loading commit data... | |
| ExtensionBehavior.cpp | Loading commit data... | |
| ExtensionBehavior.h | Loading commit data... | |
| ExtensionGLSL.cpp | Loading commit data... | |
| ExtensionGLSL.h | Loading commit data... | |
| FlagStd140Structs.cpp | Loading commit data... | |
| FlagStd140Structs.h | Loading commit data... | |
| FunctionLookup.cpp | Loading commit data... | |
| FunctionLookup.h | Loading commit data... | |
| HashNames.cpp | Loading commit data... | |
| HashNames.h | Loading commit data... | |
| ImageFunctionHLSL.cpp | Loading commit data... | |
| ImageFunctionHLSL.h | Loading commit data... | |
| ImmutableString.h | Loading commit data... | |
| ImmutableStringBuilder.cpp | Loading commit data... | |
| ImmutableStringBuilder.h | Loading commit data... | |
| ImmutableString_autogen.cpp | Loading commit data... | |
| InfoSink.cpp | Loading commit data... | |
| InfoSink.h | Loading commit data... | |
| Initialize.cpp | Loading commit data... | |
| Initialize.h | Loading commit data... | |
| InitializeDll.cpp | Loading commit data... | |
| InitializeDll.h | Loading commit data... | |
| InitializeGlobals.h | Loading commit data... | |
| IntermNode.cpp | Loading commit data... | |
| IntermNode.h | Loading commit data... | |
| IsASTDepthBelowLimit.cpp | Loading commit data... | |
| IsASTDepthBelowLimit.h | Loading commit data... | |
| Operator.cpp | Loading commit data... | |
| Operator.h | Loading commit data... | |
| OutputESSL.cpp | Loading commit data... | |
| OutputESSL.h | Loading commit data... | |
| OutputGLSL.cpp | Loading commit data... | |
| OutputGLSL.h | Loading commit data... | |
| OutputGLSLBase.cpp | Loading commit data... | |
| OutputGLSLBase.h | Loading commit data... | |
| OutputHLSL.cpp | Loading commit data... | |
| OutputHLSL.h | Loading commit data... | |
| OutputTree.cpp | Loading commit data... | |
| OutputTree.h | Loading commit data... | |
| OutputVulkanGLSL.cpp | Loading commit data... | |
| OutputVulkanGLSL.h | Loading commit data... | |
| ParseContext.cpp | Loading commit data... | |
| ParseContext.h | Loading commit data... | |
| ParseContext_autogen.h | Loading commit data... | |
| PoolAlloc.cpp | Loading commit data... | |
| PoolAlloc.h | Loading commit data... | |
| Pragma.h | Loading commit data... | |
| QualifierTypes.cpp | Loading commit data... | |
| QualifierTypes.h | Loading commit data... | |
| ResourcesHLSL.cpp | Loading commit data... | |
| ResourcesHLSL.h | Loading commit data... | |
| Severity.h | Loading commit data... | |
| ShaderLang.cpp | Loading commit data... | |
| ShaderStorageBlockFunctionHLSL.cpp | Loading commit data... | |
| ShaderStorageBlockFunctionHLSL.h | Loading commit data... | |
| ShaderStorageBlockOutputHLSL.cpp | Loading commit data... | |
| ShaderStorageBlockOutputHLSL.h | Loading commit data... | |
| ShaderVars.cpp | Loading commit data... | |
| StaticType.h | Loading commit data... | |
| StructureHLSL.cpp | Loading commit data... | |
| StructureHLSL.h | Loading commit data... | |
| Symbol.cpp | Loading commit data... | |
| Symbol.h | Loading commit data... | |
| SymbolTable.cpp | Loading commit data... | |
| SymbolTable.h | Loading commit data... | |
| SymbolTable_autogen.cpp | Loading commit data... | |
| SymbolTable_autogen.h | Loading commit data... | |
| SymbolUniqueId.cpp | Loading commit data... | |
| SymbolUniqueId.h | Loading commit data... | |
| TextureFunctionHLSL.cpp | Loading commit data... | |
| TextureFunctionHLSL.h | Loading commit data... | |
| TranslatorESSL.cpp | Loading commit data... | |
| TranslatorESSL.h | Loading commit data... | |
| TranslatorGLSL.cpp | Loading commit data... | |
| TranslatorGLSL.h | Loading commit data... | |
| TranslatorHLSL.cpp | Loading commit data... | |
| TranslatorHLSL.h | Loading commit data... | |
| TranslatorVulkan.cpp | Loading commit data... | |
| TranslatorVulkan.h | Loading commit data... | |
| Types.cpp | Loading commit data... | |
| Types.h | Loading commit data... | |
| UtilsHLSL.cpp | Loading commit data... | |
| UtilsHLSL.h | Loading commit data... | |
| ValidateAST.cpp | Loading commit data... | |
| ValidateAST.h | Loading commit data... | |
| ValidateGlobalInitializer.cpp | Loading commit data... | |
| ValidateGlobalInitializer.h | Loading commit data... | |
| ValidateLimitations.cpp | Loading commit data... | |
| ValidateLimitations.h | Loading commit data... | |
| ValidateMaxParameters.cpp | Loading commit data... | |
| ValidateMaxParameters.h | Loading commit data... | |
| ValidateOutputs.cpp | Loading commit data... | |
| ValidateOutputs.h | Loading commit data... | |
| ValidateSwitch.cpp | Loading commit data... | |
| ValidateSwitch.h | Loading commit data... | |
| ValidateVaryingLocations.cpp | Loading commit data... | |
| ValidateVaryingLocations.h | Loading commit data... | |
| VariablePacker.cpp | Loading commit data... | |
| VariablePacker.h | Loading commit data... | |
| VersionGLSL.cpp | Loading commit data... | |
| VersionGLSL.h | Loading commit data... | |
| blocklayout.cpp | Loading commit data... | |
| blocklayout.h | Loading commit data... | |
| blocklayoutHLSL.cpp | Loading commit data... | |
| blocklayoutHLSL.h | Loading commit data... | |
| builtin_function_declarations.txt | Loading commit data... | |
| builtin_variables.json | Loading commit data... | |
| emulated_builtin_function_data_hlsl.json | Loading commit data... | |
| emulated_builtin_functions_hlsl_autogen.cpp | Loading commit data... | |
| gen_builtin_symbols.py | Loading commit data... | |
| gen_emulated_builtin_function_tables.py | Loading commit data... | |
| generate_parser.sh | Loading commit data... | |
| glslang.h | Loading commit data... | |
| glslang.l | Loading commit data... | |
| glslang.y | Loading commit data... | |
| glslang_lex.cpp | Loading commit data... | |
| glslang_tab.cpp | Loading commit data... | |
| glslang_tab.h | Loading commit data... | |
| length_limits.h | Loading commit data... | |
| util.cpp | Loading commit data... | |
| util.h | Loading commit data... |