Skip to content

Commit c92a4ac

Browse files
Use correct enum values for sampler in clamp mode
Signed-off-by: Maciej Plewka <[email protected]>
1 parent b6ec178 commit c92a4ac

File tree

8 files changed

+82
-42
lines changed

8 files changed

+82
-42
lines changed

level_zero/core/source/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ set(L0_RUNTIME_SOURCES
6262
${CMAKE_CURRENT_SOURCE_DIR}/kernel/kernel_hw.h
6363
${CMAKE_CURRENT_SOURCE_DIR}/kernel/kernel_imp.cpp
6464
${CMAKE_CURRENT_SOURCE_DIR}/kernel/kernel_imp.h
65+
${CMAKE_CURRENT_SOURCE_DIR}/kernel/sampler_patch_values.h
6566
${CMAKE_CURRENT_SOURCE_DIR}/image/image.h
6667
${CMAKE_CURRENT_SOURCE_DIR}/image/image_format_desc_helper.cpp
6768
${CMAKE_CURRENT_SOURCE_DIR}/image/image_format_desc_helper.h

level_zero/core/source/kernel/kernel_imp.cpp

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
#include "level_zero/core/source/driver/driver_handle_imp.h"
3333
#include "level_zero/core/source/image/image.h"
3434
#include "level_zero/core/source/image/image_format_desc_helper.h"
35+
#include "level_zero/core/source/kernel/sampler_patch_values.h"
3536
#include "level_zero/core/source/module/module.h"
3637
#include "level_zero/core/source/module/module_imp.h"
3738
#include "level_zero/core/source/printf_handler/printf_handler.h"
@@ -40,35 +41,6 @@
4041
#include <memory>
4142

4243
namespace L0 {
43-
enum class SamplerPatchValues : uint32_t {
44-
DefaultSampler = 0x00,
45-
AddressNone = 0x00,
46-
AddressClamp = 0x01,
47-
AddressClampToEdge = 0x02,
48-
AddressRepeat = 0x03,
49-
AddressMirroredRepeat = 0x04,
50-
AddressMirroredRepeat101 = 0x05,
51-
NormalizedCoordsFalse = 0x00,
52-
NormalizedCoordsTrue = 0x08
53-
};
54-
55-
inline SamplerPatchValues getAddrMode(ze_sampler_address_mode_t addressingMode) {
56-
switch (addressingMode) {
57-
case ZE_SAMPLER_ADDRESS_MODE_REPEAT:
58-
return SamplerPatchValues::AddressRepeat;
59-
case ZE_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:
60-
return SamplerPatchValues::AddressClampToEdge;
61-
case ZE_SAMPLER_ADDRESS_MODE_CLAMP:
62-
return SamplerPatchValues::AddressClamp;
63-
case ZE_SAMPLER_ADDRESS_MODE_NONE:
64-
return SamplerPatchValues::AddressNone;
65-
case ZE_SAMPLER_ADDRESS_MODE_MIRROR:
66-
return SamplerPatchValues::AddressMirroredRepeat;
67-
default:
68-
DEBUG_BREAK_IF(true);
69-
}
70-
return SamplerPatchValues::AddressNone;
71-
}
7244

7345
KernelImmutableData::KernelImmutableData(L0::Device *l0device) : device(l0device) {}
7446

@@ -681,7 +653,7 @@ ze_result_t KernelImp::setArgSampler(uint32_t argIndex, size_t argSize, const vo
681653

682654
auto samplerDesc = sampler->getSamplerDesc();
683655

684-
NEO::patchNonPointer<uint32_t>(ArrayRef<uint8_t>(crossThreadData.get(), crossThreadDataSize), arg.metadataPayload.samplerSnapWa, (samplerDesc.addressMode == ZE_SAMPLER_ADDRESS_MODE_CLAMP && samplerDesc.filterMode == ZE_SAMPLER_FILTER_MODE_NEAREST) ? std::numeric_limits<uint32_t>::max() : 0u);
656+
NEO::patchNonPointer<uint32_t>(ArrayRef<uint8_t>(crossThreadData.get(), crossThreadDataSize), arg.metadataPayload.samplerSnapWa, (samplerDesc.addressMode == ZE_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER && samplerDesc.filterMode == ZE_SAMPLER_FILTER_MODE_NEAREST) ? std::numeric_limits<uint32_t>::max() : 0u);
685657
NEO::patchNonPointer<uint32_t>(ArrayRef<uint8_t>(crossThreadData.get(), crossThreadDataSize), arg.metadataPayload.samplerAddressingMode, static_cast<uint32_t>(getAddrMode(samplerDesc.addressMode)));
686658
NEO::patchNonPointer<uint32_t>(ArrayRef<uint8_t>(crossThreadData.get(), crossThreadDataSize), arg.metadataPayload.samplerNormalizedCoords, samplerDesc.isNormalized ? static_cast<uint32_t>(SamplerPatchValues::NormalizedCoordsTrue) : static_cast<uint32_t>(SamplerPatchValues::NormalizedCoordsFalse));
687659

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
* Copyright (C) 2021 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
*/
7+
8+
#pragma once
9+
10+
#include "shared/source/helpers/debug_helpers.h"
11+
12+
#include <level_zero/ze_api.h>
13+
14+
namespace L0 {
15+
enum class SamplerPatchValues : uint32_t {
16+
DefaultSampler = 0x00,
17+
AddressNone = 0x00,
18+
AddressClampToBorder = 0x01,
19+
AddressClampToEdge = 0x02,
20+
AddressRepeat = 0x03,
21+
AddressMirroredRepeat = 0x04,
22+
AddressMirroredRepeat101 = 0x05,
23+
NormalizedCoordsFalse = 0x00,
24+
NormalizedCoordsTrue = 0x08
25+
};
26+
27+
inline SamplerPatchValues getAddrMode(ze_sampler_address_mode_t addressingMode) {
28+
switch (addressingMode) {
29+
case ZE_SAMPLER_ADDRESS_MODE_REPEAT:
30+
return SamplerPatchValues::AddressRepeat;
31+
case ZE_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:
32+
return SamplerPatchValues::AddressClampToBorder;
33+
case ZE_SAMPLER_ADDRESS_MODE_CLAMP:
34+
return SamplerPatchValues::AddressClampToEdge;
35+
case ZE_SAMPLER_ADDRESS_MODE_NONE:
36+
return SamplerPatchValues::AddressNone;
37+
case ZE_SAMPLER_ADDRESS_MODE_MIRROR:
38+
return SamplerPatchValues::AddressMirroredRepeat;
39+
default:
40+
DEBUG_BREAK_IF(true);
41+
}
42+
return SamplerPatchValues::AddressNone;
43+
}
44+
} // namespace L0

level_zero/core/source/sampler/sampler_hw.inl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ ze_result_t SamplerCoreFamily<gfxCoreFamily>::initialize(Device *device, const z
2727

2828
switch (desc->addressMode) {
2929
case ZE_SAMPLER_ADDRESS_MODE_NONE:
30-
case ZE_SAMPLER_ADDRESS_MODE_CLAMP:
31-
break;
3230
case ZE_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:
31+
break;
32+
case ZE_SAMPLER_ADDRESS_MODE_CLAMP:
3333
addressControlModeX = SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP;
3434
addressControlModeY = SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP;
3535
addressControlModeZ = SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP;
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
#
2-
# Copyright (C) 2020 Intel Corporation
2+
# Copyright (C) 2020-2021 Intel Corporation
33
#
44
# SPDX-License-Identifier: MIT
55
#
66

77
target_sources(${TARGET_NAME} PRIVATE
88
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
99
${CMAKE_CURRENT_SOURCE_DIR}/test_kernel.cpp
10+
${CMAKE_CURRENT_SOURCE_DIR}/test_sampler_patch_value.cpp
1011
)

level_zero/core/test/unit_tests/sources/kernel/test_kernel.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include "level_zero/core/source/image/image_format_desc_helper.h"
2525
#include "level_zero/core/source/image/image_hw.h"
2626
#include "level_zero/core/source/kernel/kernel_hw.h"
27+
#include "level_zero/core/source/kernel/sampler_patch_values.h"
2728
#include "level_zero/core/source/module/module_imp.h"
2829
#include "level_zero/core/source/printf_handler/printf_handler.h"
2930
#include "level_zero/core/source/sampler/sampler_hw.h"
@@ -236,7 +237,7 @@ HWTEST2_F(SetKernelArg, givenSamplerAndKernelWhenSetArgSamplerThenCrossThreadDat
236237

237238
ze_sampler_desc_t desc = {};
238239

239-
desc.addressMode = ZE_SAMPLER_ADDRESS_MODE_CLAMP;
240+
desc.addressMode = ZE_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER;
240241
desc.filterMode = ZE_SAMPLER_FILTER_MODE_NEAREST;
241242
desc.isNormalized = true;
242243

@@ -255,10 +256,10 @@ HWTEST2_F(SetKernelArg, givenSamplerAndKernelWhenSetArgSamplerThenCrossThreadDat
255256
EXPECT_EQ(std::numeric_limits<uint32_t>::max(), *reinterpret_cast<const uint32_t *>(pSamplerSnapWa));
256257

257258
auto pSamplerAddressingMode = ptrOffset(crossThreadData, samplerArg.metadataPayload.samplerAddressingMode);
258-
EXPECT_EQ(0x01, *pSamplerAddressingMode);
259+
EXPECT_EQ(static_cast<uint32_t>(SamplerPatchValues::AddressClampToBorder), *pSamplerAddressingMode);
259260

260261
auto pSamplerNormalizedCoords = ptrOffset(crossThreadData, samplerArg.metadataPayload.samplerNormalizedCoords);
261-
EXPECT_EQ(0x08, *pSamplerNormalizedCoords);
262+
EXPECT_EQ(static_cast<uint32_t>(SamplerPatchValues::NormalizedCoordsTrue), *pSamplerNormalizedCoords);
262263
}
263264

264265
using ArgSupport = IsWithinProducts<IGFX_SKYLAKE, IGFX_TIGERLAKE_LP>;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Copyright (C) 2021 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
*/
7+
8+
#include "shared/test/common/test_macros/test.h"
9+
10+
#include "level_zero/core/source/kernel/sampler_patch_values.h"
11+
12+
using namespace L0;
13+
14+
TEST(SamplerPatchValueTest, givenSamplerAddressingModeWhenGetingPathValueThenCorrectValueReturned) {
15+
EXPECT_EQ(getAddrMode(ZE_SAMPLER_ADDRESS_MODE_REPEAT), SamplerPatchValues::AddressRepeat);
16+
EXPECT_EQ(getAddrMode(ZE_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER), SamplerPatchValues::AddressClampToBorder);
17+
EXPECT_EQ(getAddrMode(ZE_SAMPLER_ADDRESS_MODE_CLAMP), SamplerPatchValues::AddressClampToEdge);
18+
EXPECT_EQ(getAddrMode(ZE_SAMPLER_ADDRESS_MODE_NONE), SamplerPatchValues::AddressNone);
19+
EXPECT_EQ(getAddrMode(ZE_SAMPLER_ADDRESS_MODE_MIRROR), SamplerPatchValues::AddressMirroredRepeat);
20+
EXPECT_EQ(getAddrMode(ZE_SAMPLER_ADDRESS_MODE_FORCE_UINT32), SamplerPatchValues::AddressNone);
21+
}

level_zero/core/test/unit_tests/sources/sampler/test_sampler.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,11 @@ HWTEST2_P(SamplerCreateTest, givenDifferentDescriptorValuesThenSamplerIsCorrectl
8484
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_WRAP,
8585
sampler->samplerState.getTczAddressControlMode());
8686
} else if (addressMode == ZE_SAMPLER_ADDRESS_MODE_CLAMP) {
87-
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP_BORDER,
87+
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP,
8888
sampler->samplerState.getTcxAddressControlMode());
89-
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP_BORDER,
89+
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP,
9090
sampler->samplerState.getTcyAddressControlMode());
91-
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP_BORDER,
91+
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP,
9292
sampler->samplerState.getTczAddressControlMode());
9393
} else if (addressMode == ZE_SAMPLER_ADDRESS_MODE_MIRROR) {
9494
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_MIRROR,
@@ -98,11 +98,11 @@ HWTEST2_P(SamplerCreateTest, givenDifferentDescriptorValuesThenSamplerIsCorrectl
9898
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_MIRROR,
9999
sampler->samplerState.getTczAddressControlMode());
100100
} else if (addressMode == ZE_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER) {
101-
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP,
101+
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP_BORDER,
102102
sampler->samplerState.getTcxAddressControlMode());
103-
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP,
103+
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP_BORDER,
104104
sampler->samplerState.getTcyAddressControlMode());
105-
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP,
105+
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP_BORDER,
106106
sampler->samplerState.getTczAddressControlMode());
107107
}
108108

0 commit comments

Comments
 (0)