In order to implement glBindImageTexture to bind a layer of 3D/2DArray/Cube
texture, use indices to access image variables when translating built-in
image functions.
There is a conflict when transferring image2D/iimage2D/uimage2D variables to
an user defined function. For example,
layout(r32ui, binding = 0) readonly uniform highp uimage2D uImage_1;
layout(r32ui, binding = 1) readonly uniform highp uimage2D uImage_2;
uvec4 lod_fun(uimage2D img, ivec2 p)
{
return imageLoad(img, p);
}
void main()
{
uvec4 value_1 = lod_fun(uImage_1, ivec2(gl_LocalInvocationID.xy));
uvec4 value_2 = lod_fun(uImage_2, ivec2(gl_LocalInvocationID.xy));
}
If uImage_1 binds to a 2D texture, and uImage_2 binds to a layer of 3D texture,
uImage_1 will be translated to Texture2D type, and uImage_2 will be translated to
Texture3D type, "img" type of lod_fun will be translated Texture2D, so uImage_2
cannot be transferred to lod_fun as a parameter.
Indices without Texture/RWTexture information could handle this situation easily.
BUG=angleproject:1987
TEST=angle_end2end_tests.ComputeShaderTest.*
Change-Id: I7647395f0042f613c5d6e9eeb49392ab6252e21e
Reviewed-on: https://chromium-review.googlesource.com/1065797
Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
Reviewed-by:
Geoff Lang <geofflang@chromium.org>
Reviewed-by:
Olli Etuaho <oetuaho@nvidia.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... | |
| 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.cpp | Loading commit data... | |
| ImmutableString.h | Loading commit data... | |
| ImmutableStringBuilder.cpp | Loading commit data... | |
| ImmutableStringBuilder.h | 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... | |
| Severity.h | Loading commit data... | |
| ShaderLang.cpp | 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... | |
| UniformHLSL.cpp | Loading commit data... | |
| UniformHLSL.h | Loading commit data... | |
| UtilsHLSL.cpp | Loading commit data... | |
| UtilsHLSL.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_symbols_hash_autogen.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... |