llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Tim Corringham (tcorringham) <details> <summary>Changes</summary> Add front-end support for RWTexture2DArray, and update related tests to include coverage of this resource. Fixes #<!-- -->194947 --- Full diff: https://github.com/llvm/llvm-project/pull/208725.diff 8 Files Affected: - (modified) clang/lib/Sema/HLSLExternalSemaSource.cpp (+20) - (modified) clang/test/AST/HLSL/Texture2D-AST.hlsl (+1) - (modified) clang/test/CodeGenHLSL/resources/Texture2D-GetDimensions.hlsl (+3-1) - (modified) clang/test/CodeGenHLSL/resources/Texture2D-Load.hlsl (+4) - (modified) clang/test/SemaHLSL/Resources/RWTexture2D-mips-errors.hlsl (+1) - (modified) clang/test/SemaHLSL/Resources/RWTexture2D-unsupported-methods-errors.hlsl (+1) - (modified) clang/test/SemaHLSL/Resources/Texture2D-GetDimensions.hlsl (+1) - (modified) clang/test/SemaHLSL/Resources/Texture2D-Load-errors.hlsl (+1) ``````````diff diff --git a/clang/lib/Sema/HLSLExternalSemaSource.cpp b/clang/lib/Sema/HLSLExternalSemaSource.cpp index 115795ca74bae..7578f20a27f18 100644 --- a/clang/lib/Sema/HLSLExternalSemaSource.cpp +++ b/clang/lib/Sema/HLSLExternalSemaSource.cpp @@ -745,6 +745,26 @@ void HLSLExternalSemaSource::defineHLSLTypesWithForwardDeclarations() { /*IsArray=*/true, ResourceDimension::Dim2D) .completeDefinition(); }); + + // RWTexture2DArray — same as RWTexture2D but IsArray=true + Decl = BuiltinTypeDeclBuilder(*SemaPtr, HLSLNamespace, "RWTexture2DArray") + .addSimpleTemplateParams({"element_type"}, {Float4Ty}, + TypedBufferConcept) + .finalizeForwardDeclaration(); + + onCompletion(Decl, [this](CXXRecordDecl *Decl) { + setupRWTextureType(Decl, *SemaPtr, /*IsArray=*/true, + ResourceDimension::Dim2D) + .completeDefinition(); + }); + + auto *PartialSpecRW2DA = addVectorTexturePartialSpecialization( + *SemaPtr, HLSLNamespace, Decl->getDescribedClassTemplate()); + onCompletion(PartialSpecRW2DA, [this](CXXRecordDecl *Decl) { + setupRWTextureType(Decl, *SemaPtr, /*IsArray=*/true, + ResourceDimension::Dim2D) + .completeDefinition(); + }); } // Build a single overload of an HLSL atomic intrinsic in the hlsl namespace. diff --git a/clang/test/AST/HLSL/Texture2D-AST.hlsl b/clang/test/AST/HLSL/Texture2D-AST.hlsl index 23d0b8138b39b..80ac278eb9174 100644 --- a/clang/test/AST/HLSL/Texture2D-AST.hlsl +++ b/clang/test/AST/HLSL/Texture2D-AST.hlsl @@ -1,6 +1,7 @@ // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump -disable-llvm-passes -finclude-default-header -DTEXTURE=Texture2D -o - %s | FileCheck %s --check-prefixes=CHECK,SRV -DTEXTURE=Texture2D -DSZ=2 -DKIND=SRV // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump -disable-llvm-passes -finclude-default-header -DTEXTURE=Texture2DArray -o - %s | FileCheck %s --check-prefixes=CHECK,SRV,SRV-ARR -DTEXTURE=Texture2DArray -DSZ=3 -DKIND=SRV // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump -disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2D -DRW=1 -o - %s | FileCheck %s --check-prefixes=CHECK,UAV,UAV-STORE,UAV-TRUNC -DTEXTURE=RWTexture2D -DSZ=2 -DKIND=UAV +// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump -disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2DArray -DRW=1 -o - %s | FileCheck %s --check-prefixes=CHECK,UAV,UAV-ARR,UAV-STORE,UAV-NOTRUNC -DTEXTURE=RWTexture2DArray -DSZ=3 -DKIND=UAV // CHECK: ClassTemplateDecl {{.*}} [[TEXTURE]] // CHECK: TemplateTypeParmDecl {{.*}} element_type diff --git a/clang/test/CodeGenHLSL/resources/Texture2D-GetDimensions.hlsl b/clang/test/CodeGenHLSL/resources/Texture2D-GetDimensions.hlsl index 25f123a47649b..9c37efeb56a74 100644 --- a/clang/test/CodeGenHLSL/resources/Texture2D-GetDimensions.hlsl +++ b/clang/test/CodeGenHLSL/resources/Texture2D-GetDimensions.hlsl @@ -10,7 +10,9 @@ // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm -disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2D -o - %s | llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,DXIL -DTEXTURE=RWTexture2D -DDXILTY=2 -DRW=1 // RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm -disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2D -o - %s | llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,SPIRV -DTEXTURE=RWTexture2D -DARRAYED=0 -DSAMPLED=2 -DFORMAT=1 -// When RWTexture2DArray is implemented, add DXIL/SPIRV runs with DXILTY=7, RW=1, ARRAYED=1, SAMPLED=2, FORMAT=1. +// RWTexture2DArray +// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm -disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2DArray -o - %s | llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,DXIL -DTEXTURE=RWTexture2DArray -DDXILTY=7 -DRW=1 +// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm -disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2DArray -o - %s | llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,SPIRV -DTEXTURE=RWTexture2DArray -DARRAYED=1 -DSAMPLED=2 -DFORMAT=1 TEXTURE<float4> Tex; diff --git a/clang/test/CodeGenHLSL/resources/Texture2D-Load.hlsl b/clang/test/CodeGenHLSL/resources/Texture2D-Load.hlsl index d69a0f6ddaa89..dd214347cb975 100644 --- a/clang/test/CodeGenHLSL/resources/Texture2D-Load.hlsl +++ b/clang/test/CodeGenHLSL/resources/Texture2D-Load.hlsl @@ -10,6 +10,10 @@ // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm -disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2D -DLOCTY=int3 -DZEROS=0 -o - %s | llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,DXIL -DTEXTURE=RWTexture2D -DLOCSZ=3 -DCOORDSZ=2 -DARG3= -DDXILTY=2 -DRW=1 // RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm -disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2D -DLOCTY=int3 -DZEROS=0 -o - %s | llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,SPIRV -DTEXTURE=RWTexture2D -DLOCSZ=3 -DCOORDSZ=2 -DARG3= -DARRAYED=0 -DSAMPLED=2 -DFORMAT1=1 -DFORMAT3=3 -DFORMAT6=6 -DFORMAT21=21 -DFORMAT24=24 -DFORMAT25=25 +// RWTexture2DArray +// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm -disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2DArray -DLOCTY=int4 -DZEROS="0, 0" -o - %s | llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,DXIL -DTEXTURE=RWTexture2DArray -DLOCSZ=4 -DCOORDSZ=3 -DARG3=", i32 2" -DDXILTY=7 -DRW=1 +// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm -disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2DArray -DLOCTY=int4 -DZEROS="0, 0" -o - %s | llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,SPIRV -DTEXTURE=RWTexture2DArray -DLOCSZ=4 -DCOORDSZ=3 -DARG3=", i32 2" -DARRAYED=1 -DSAMPLED=2 -DFORMAT1=1 -DFORMAT3=3 -DFORMAT6=6 -DFORMAT21=21 -DFORMAT24=24 -DFORMAT25=25 + TEXTURE<float4> t; // CHECK: define hidden {{.*}} <4 x float> @test_load(int vector[2]) diff --git a/clang/test/SemaHLSL/Resources/RWTexture2D-mips-errors.hlsl b/clang/test/SemaHLSL/Resources/RWTexture2D-mips-errors.hlsl index 34f704043e55e..e53157d6e9660 100644 --- a/clang/test/SemaHLSL/Resources/RWTexture2D-mips-errors.hlsl +++ b/clang/test/SemaHLSL/Resources/RWTexture2D-mips-errors.hlsl @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -finclude-default-header -DTEXTURE=RWTexture2D -verify %s +// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -finclude-default-header -DTEXTURE=RWTexture2DArray -verify %s // RWTexture2D has no mips view (contrast with Texture2D-mips-errors.hlsl, // which exercises private/protected mips_type on Texture2D). diff --git a/clang/test/SemaHLSL/Resources/RWTexture2D-unsupported-methods-errors.hlsl b/clang/test/SemaHLSL/Resources/RWTexture2D-unsupported-methods-errors.hlsl index 61c7497217284..b02d4d61c8522 100644 --- a/clang/test/SemaHLSL/Resources/RWTexture2D-unsupported-methods-errors.hlsl +++ b/clang/test/SemaHLSL/Resources/RWTexture2D-unsupported-methods-errors.hlsl @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -finclude-default-header -DTEXTURE=RWTexture2D -verify %s +// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -finclude-default-header -DTEXTURE=RWTexture2DArray -verify %s // SRV-style texture methods are not available on RWTexture2D or RWTexture2DArray (UAV). diff --git a/clang/test/SemaHLSL/Resources/Texture2D-GetDimensions.hlsl b/clang/test/SemaHLSL/Resources/Texture2D-GetDimensions.hlsl index 6a6c2b1e2da4e..56dfcd659b25c 100644 --- a/clang/test/SemaHLSL/Resources/Texture2D-GetDimensions.hlsl +++ b/clang/test/SemaHLSL/Resources/Texture2D-GetDimensions.hlsl @@ -1,6 +1,7 @@ // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -finclude-default-header -fsyntax-only -DTEXTURE=Texture2D -verify %s // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -finclude-default-header -fsyntax-only -DTEXTURE=Texture2DArray -verify %s // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -finclude-default-header -fsyntax-only -DTEXTURE=RWTexture2D -verify %s +// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -finclude-default-header -fsyntax-only -DTEXTURE=RWTexture2DArray -verify %s TEXTURE<float4> tex; diff --git a/clang/test/SemaHLSL/Resources/Texture2D-Load-errors.hlsl b/clang/test/SemaHLSL/Resources/Texture2D-Load-errors.hlsl index 88e1f81d07094..03e64b62fddc1 100644 --- a/clang/test/SemaHLSL/Resources/Texture2D-Load-errors.hlsl +++ b/clang/test/SemaHLSL/Resources/Texture2D-Load-errors.hlsl @@ -1,6 +1,7 @@ // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -finclude-default-header -DTEXTURE=Texture2D -DARRAYED=0 -verify %s // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -finclude-default-header -DTEXTURE=Texture2DArray -DARRAYED=1 -verify %s // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -finclude-default-header -DTEXTURE=RWTexture2D -DARRAYED=0 -verify %s +// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -finclude-default-header -DTEXTURE=RWTexture2DArray -DARRAYED=1 -verify %s #if ARRAYED #define ITY int4 `````````` </details> https://github.com/llvm/llvm-project/pull/208725 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
