rocr: Support different address modes
Support different address modes in X, Y, Z directions
Change-Id: If1db5a8af33c92ddc4b48968c3d8eceb97daea6a
[ROCm/ROCR-Runtime commit: df250a49a5]
Tento commit je obsažen v:
@@ -452,7 +452,7 @@ hsa_status_t ImageManagerAi::ModifyImageSrd(
|
||||
}
|
||||
|
||||
hsa_status_t ImageManagerAi::PopulateSamplerSrd(Sampler& sampler) const {
|
||||
const hsa_ext_sampler_descriptor_t sampler_descriptor = sampler.desc;
|
||||
const hsa_ext_sampler_descriptor_v2_t &sampler_descriptor = sampler.desc;
|
||||
|
||||
SQ_IMG_SAMP_WORD0 word0;
|
||||
SQ_IMG_SAMP_WORD1 word1;
|
||||
@@ -460,25 +460,9 @@ hsa_status_t ImageManagerAi::PopulateSamplerSrd(Sampler& sampler) const {
|
||||
SQ_IMG_SAMP_WORD3 word3;
|
||||
|
||||
word0.u32All = 0;
|
||||
switch (sampler_descriptor.address_mode) {
|
||||
case HSA_EXT_SAMPLER_ADDRESSING_MODE_CLAMP_TO_EDGE:
|
||||
word0.bits.CLAMP_X = static_cast<int>(SQ_TEX_CLAMP_LAST_TEXEL);
|
||||
break;
|
||||
case HSA_EXT_SAMPLER_ADDRESSING_MODE_CLAMP_TO_BORDER:
|
||||
word0.bits.CLAMP_X = static_cast<int>(SQ_TEX_CLAMP_BORDER);
|
||||
break;
|
||||
case HSA_EXT_SAMPLER_ADDRESSING_MODE_MIRRORED_REPEAT:
|
||||
word0.bits.CLAMP_X = static_cast<int>(SQ_TEX_MIRROR);
|
||||
break;
|
||||
case HSA_EXT_SAMPLER_ADDRESSING_MODE_UNDEFINED:
|
||||
case HSA_EXT_SAMPLER_ADDRESSING_MODE_REPEAT:
|
||||
word0.bits.CLAMP_X = static_cast<int>(SQ_TEX_WRAP);
|
||||
break;
|
||||
default:
|
||||
return HSA_STATUS_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
word0.bits.CLAMP_Y = word0.bits.CLAMP_X;
|
||||
word0.bits.CLAMP_Z = word0.bits.CLAMP_X;
|
||||
hsa_status_t status = convertAddressMode<SQ_IMG_SAMP_WORD0, SQ_TEX_CLAMP>
|
||||
(word0, sampler_descriptor.address_modes);
|
||||
if (status != HSA_STATUS_SUCCESS) return status;
|
||||
word0.bits.FORCE_UNNORMALIZED = (sampler_descriptor.coordinate_mode ==
|
||||
HSA_EXT_SAMPLER_COORDINATE_MODE_UNNORMALIZED);
|
||||
|
||||
|
||||
Odkázat v novém úkolu
Zablokovat Uživatele