d3d/archive/D3D11_3_FunctionalSpec.htm [6187:6321]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

New HLSL syntax is required to support tiled resources in Shader Model 5.0 (allowed only on devices with Tiled Resources support). Each relevant HLSL intrinsic method for tiled resources (see the table below) accepts either one (feedback) or two (clamp and feedback in this order) additional optional parameters. For example, the Sample method is:

Sample(sampler, location [, offset [, clamp [, feedback] ] ]).

The offset, clamp and feedback parameters are optional. Programmers have to specify all optional parameters up to the one they need, which is consistent with the C++ rules for default function arguments. For example, if the feedback status is needed, both offset and clamp parameters need to be explicitly supplied to Sample, even though they may not be logically needed.

The clamp parameter is a scalar float value. The literal value of clamp=0.0f indicates that clamp operation is not performed.

The feedback parameter is a uint variable that can be supplied to memory-access querying intrinsic: CheckAccessFullyMapped. Programmers must not modify or interpret the value of the feedback parameter; however, the compiler does not provide any advanced analysis and diagnostics to detect this.

There is one HLSL intrinsic to query the feedback status:

bool CheckAccessFullyMapped(in uint FeedbackVar);

CheckAccessFullyMapped interprets the value of FeedbackVar and returns true if all data being accessed was mapped in the resource; otherwise, CheckAccessFullyMapped returns false.

If either clamp or feedback parameter is present, the compiler emits a variant of the basic instruction. For example, Sample of a tiled resource generates sample_cl_s instruction. If neither clamp nor feedback is specified, the compiler emits the basic instruction, so that there is no change from the current behavior. The clamp value of 0.0f indicates that no clamp is performed; thus, the driver compiler can further tailor the instruction to the target hardware. If feedback is a NULL register in an instruction, the feedback is unused; thus, the driver compiler can further tailor the instruction to the target architecture.

If the HLSL compiler infers that clamp is 0.0f and feedback is unused, the compiler emits the corresponding basic instruction (e.g., sample rather than sample_cl_s).

If a tiled resource access consists of several constituent byte code instructions, e.g., for structured resources, the compiler aggregates individual feedback values via the OR operation to produce the final feedback value. Therefore, programmers see a single feedback value for such a complex access.

This is the summary table of HLSL intrinsic methods changed to support feedback and/or clamp. These all work on tiled and non-tiled resources of all dimensions. Non-tiled resources always appear to be fully mapped.

HLSL Objects Intrinsic methods with feedback option
(*) - also has clamp option
[RW]Texture2D
[RW]Texture2DArray
TextureCUBE
TextureCUBEArray
Gather
GatherRed
GatherGreen
GatherBlue
GatherAlpha
GatherCmp
GatherCmpRed
GatherCmpGreen
GatherCmpBlue
GatherCmpAlpha
[RW]Texture1D
[RW]Texture1DArray
[RW]Texture2D
[RW]Texture2DArray
[RW]Texture3D
TextureCUBE
TextureCUBEArray
Sample*
SampleBias*
SampleCmp*
SampleCmpLevelZero
SampleGrad*
SampleLevel
[RW]Texture1D
[RW]Texture1DArray
[RW]Texture2D
Texture2DMS
[RW]Texture2DArray
Texture2DArrayMS
[RW]Texture3D
[RW]Buffer
[RW]ByteAddressBuffer
[RW]StructuredBuffer
Load


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - d3d/archive/images/d3d11/D3D11_3_FunctionalSpec.htm [5559:5693]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

New HLSL syntax is required to support tiled resources in Shader Model 5.0 (allowed only on devices with Tiled Resources support). Each relevant HLSL intrinsic method for tiled resources (see the table below) accepts either one (feedback) or two (clamp and feedback in this order) additional optional parameters. For example, the Sample method is:

Sample(sampler, location [, offset [, clamp [, feedback] ] ]).

The offset, clamp and feedback parameters are optional. Programmers have to specify all optional parameters up to the one they need, which is consistent with the C++ rules for default function arguments. For example, if the feedback status is needed, both offset and clamp parameters need to be explicitly supplied to Sample, even though they may not be logically needed.

The clamp parameter is a scalar float value. The literal value of clamp=0.0f indicates that clamp operation is not performed.

The feedback parameter is a uint variable that can be supplied to memory-access querying intrinsic: CheckAccessFullyMapped. Programmers must not modify or interpret the value of the feedback parameter; however, the compiler does not provide any advanced analysis and diagnostics to detect this.

There is one HLSL intrinsic to query the feedback status:

bool CheckAccessFullyMapped(in uint FeedbackVar);

CheckAccessFullyMapped interprets the value of FeedbackVar and returns true if all data being accessed was mapped in the resource; otherwise, CheckAccessFullyMapped returns false.

If either clamp or feedback parameter is present, the compiler emits a variant of the basic instruction. For example, Sample of a tiled resource generates sample_cl_s instruction. If neither clamp nor feedback is specified, the compiler emits the basic instruction, so that there is no change from the current behavior. The clamp value of 0.0f indicates that no clamp is performed; thus, the driver compiler can further tailor the instruction to the target hardware. If feedback is a NULL register in an instruction, the feedback is unused; thus, the driver compiler can further tailor the instruction to the target architecture.

If the HLSL compiler infers that clamp is 0.0f and feedback is unused, the compiler emits the corresponding basic instruction (e.g., sample rather than sample_cl_s).

If a tiled resource access consists of several constituent byte code instructions, e.g., for structured resources, the compiler aggregates individual feedback values via the OR operation to produce the final feedback value. Therefore, programmers see a single feedback value for such a complex access.

This is the summary table of HLSL intrinsic methods changed to support feedback and/or clamp. These all work on tiled and non-tiled resources of all dimensions. Non-tiled resources always appear to be fully mapped.

HLSL Objects Intrinsic methods with feedback option
(*) - also has clamp option
[RW]Texture2D
[RW]Texture2DArray
TextureCUBE
TextureCUBEArray
Gather
GatherRed
GatherGreen
GatherBlue
GatherAlpha
GatherCmp
GatherCmpRed
GatherCmpGreen
GatherCmpBlue
GatherCmpAlpha
[RW]Texture1D
[RW]Texture1DArray
[RW]Texture2D
[RW]Texture2DArray
[RW]Texture3D
TextureCUBE
TextureCUBEArray
Sample*
SampleBias*
SampleCmp*
SampleCmpLevelZero
SampleGrad*
SampleLevel
[RW]Texture1D
[RW]Texture1DArray
[RW]Texture2D
Texture2DMS
[RW]Texture2DArray
Texture2DArrayMS
[RW]Texture3D
[RW]Buffer
[RW]ByteAddressBuffer
[RW]StructuredBuffer
Load


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -