Use correct enum values for sampler in clamp mode

Signed-off-by: Maciej Plewka <maciej.plewka@intel.com>
This commit is contained in:
Maciej Plewka
2021-12-22 17:41:36 +00:00
committed by Compute-Runtime-Automation
parent 570c4d4626
commit 6968bfdb33
8 changed files with 85 additions and 45 deletions

View File

@@ -1,5 +1,5 @@
#
# Copyright (C) 2020-2021 Intel Corporation
# Copyright (C) 2020-2022 Intel Corporation
#
# SPDX-License-Identifier: MIT
#
@@ -62,6 +62,7 @@ set(L0_RUNTIME_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/kernel/kernel_hw.h
${CMAKE_CURRENT_SOURCE_DIR}/kernel/kernel_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/kernel/kernel_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/kernel/sampler_patch_values.h
${CMAKE_CURRENT_SOURCE_DIR}/image/image.h
${CMAKE_CURRENT_SOURCE_DIR}/image/image_format_desc_helper.cpp
${CMAKE_CURRENT_SOURCE_DIR}/image/image_format_desc_helper.h

View File

@@ -32,6 +32,7 @@
#include "level_zero/core/source/driver/driver_handle_imp.h"
#include "level_zero/core/source/image/image.h"
#include "level_zero/core/source/image/image_format_desc_helper.h"
#include "level_zero/core/source/kernel/sampler_patch_values.h"
#include "level_zero/core/source/module/module.h"
#include "level_zero/core/source/module/module_imp.h"
#include "level_zero/core/source/printf_handler/printf_handler.h"
@@ -40,35 +41,6 @@
#include <memory>
namespace L0 {
enum class SamplerPatchValues : uint32_t {
DefaultSampler = 0x00,
AddressNone = 0x00,
AddressClamp = 0x01,
AddressClampToEdge = 0x02,
AddressRepeat = 0x03,
AddressMirroredRepeat = 0x04,
AddressMirroredRepeat101 = 0x05,
NormalizedCoordsFalse = 0x00,
NormalizedCoordsTrue = 0x08
};
inline SamplerPatchValues getAddrMode(ze_sampler_address_mode_t addressingMode) {
switch (addressingMode) {
case ZE_SAMPLER_ADDRESS_MODE_REPEAT:
return SamplerPatchValues::AddressRepeat;
case ZE_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:
return SamplerPatchValues::AddressClampToEdge;
case ZE_SAMPLER_ADDRESS_MODE_CLAMP:
return SamplerPatchValues::AddressClamp;
case ZE_SAMPLER_ADDRESS_MODE_NONE:
return SamplerPatchValues::AddressNone;
case ZE_SAMPLER_ADDRESS_MODE_MIRROR:
return SamplerPatchValues::AddressMirroredRepeat;
default:
DEBUG_BREAK_IF(true);
}
return SamplerPatchValues::AddressNone;
}
KernelImmutableData::KernelImmutableData(L0::Device *l0device) : device(l0device) {}
@@ -676,7 +648,7 @@ ze_result_t KernelImp::setArgSampler(uint32_t argIndex, size_t argSize, const vo
auto samplerDesc = sampler->getSamplerDesc();
NEO::patchNonPointer<uint32_t, 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);
NEO::patchNonPointer<uint32_t, 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);
NEO::patchNonPointer<uint32_t, uint32_t>(ArrayRef<uint8_t>(crossThreadData.get(), crossThreadDataSize), arg.metadataPayload.samplerAddressingMode, static_cast<uint32_t>(getAddrMode(samplerDesc.addressMode)));
NEO::patchNonPointer<uint32_t, 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));

View File

@@ -0,0 +1,44 @@
/*
* Copyright (C) 2021-2022 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include "shared/source/helpers/debug_helpers.h"
#include <level_zero/ze_api.h>
namespace L0 {
enum class SamplerPatchValues : uint32_t {
DefaultSampler = 0x00,
AddressNone = 0x00,
AddressClampToBorder = 0x01,
AddressClampToEdge = 0x02,
AddressRepeat = 0x03,
AddressMirroredRepeat = 0x04,
AddressMirroredRepeat101 = 0x05,
NormalizedCoordsFalse = 0x00,
NormalizedCoordsTrue = 0x08
};
inline SamplerPatchValues getAddrMode(ze_sampler_address_mode_t addressingMode) {
switch (addressingMode) {
case ZE_SAMPLER_ADDRESS_MODE_REPEAT:
return SamplerPatchValues::AddressRepeat;
case ZE_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:
return SamplerPatchValues::AddressClampToBorder;
case ZE_SAMPLER_ADDRESS_MODE_CLAMP:
return SamplerPatchValues::AddressClampToEdge;
case ZE_SAMPLER_ADDRESS_MODE_NONE:
return SamplerPatchValues::AddressNone;
case ZE_SAMPLER_ADDRESS_MODE_MIRROR:
return SamplerPatchValues::AddressMirroredRepeat;
default:
DEBUG_BREAK_IF(true);
}
return SamplerPatchValues::AddressNone;
}
} // namespace L0

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2021 Intel Corporation
* Copyright (C) 2020-2022 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -27,9 +27,9 @@ ze_result_t SamplerCoreFamily<gfxCoreFamily>::initialize(Device *device, const z
switch (desc->addressMode) {
case ZE_SAMPLER_ADDRESS_MODE_NONE:
case ZE_SAMPLER_ADDRESS_MODE_CLAMP:
break;
case ZE_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:
break;
case ZE_SAMPLER_ADDRESS_MODE_CLAMP:
addressControlModeX = SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP;
addressControlModeY = SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP;
addressControlModeZ = SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP;

View File

@@ -1,5 +1,5 @@
#
# Copyright (C) 2020-2021 Intel Corporation
# Copyright (C) 2020-2022 Intel Corporation
#
# SPDX-License-Identifier: MIT
#
@@ -7,4 +7,5 @@
target_sources(${TARGET_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
${CMAKE_CURRENT_SOURCE_DIR}/test_kernel.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test_sampler_patch_value.cpp
)

View File

@@ -24,6 +24,7 @@
#include "level_zero/core/source/image/image_format_desc_helper.h"
#include "level_zero/core/source/image/image_hw.h"
#include "level_zero/core/source/kernel/kernel_hw.h"
#include "level_zero/core/source/kernel/sampler_patch_values.h"
#include "level_zero/core/source/module/module_imp.h"
#include "level_zero/core/source/printf_handler/printf_handler.h"
#include "level_zero/core/source/sampler/sampler_hw.h"
@@ -236,7 +237,7 @@ HWTEST2_F(SetKernelArg, givenSamplerAndKernelWhenSetArgSamplerThenCrossThreadDat
ze_sampler_desc_t desc = {};
desc.addressMode = ZE_SAMPLER_ADDRESS_MODE_CLAMP;
desc.addressMode = ZE_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER;
desc.filterMode = ZE_SAMPLER_FILTER_MODE_NEAREST;
desc.isNormalized = true;
@@ -255,10 +256,10 @@ HWTEST2_F(SetKernelArg, givenSamplerAndKernelWhenSetArgSamplerThenCrossThreadDat
EXPECT_EQ(std::numeric_limits<uint32_t>::max(), *reinterpret_cast<const uint32_t *>(pSamplerSnapWa));
auto pSamplerAddressingMode = ptrOffset(crossThreadData, samplerArg.metadataPayload.samplerAddressingMode);
EXPECT_EQ(0x01, *pSamplerAddressingMode);
EXPECT_EQ(static_cast<uint32_t>(SamplerPatchValues::AddressClampToBorder), *pSamplerAddressingMode);
auto pSamplerNormalizedCoords = ptrOffset(crossThreadData, samplerArg.metadataPayload.samplerNormalizedCoords);
EXPECT_EQ(0x08, *pSamplerNormalizedCoords);
EXPECT_EQ(static_cast<uint32_t>(SamplerPatchValues::NormalizedCoordsTrue), *pSamplerNormalizedCoords);
}
using ArgSupport = IsWithinProducts<IGFX_SKYLAKE, IGFX_TIGERLAKE_LP>;

View File

@@ -0,0 +1,21 @@
/*
* Copyright (C) 2021-2022 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/test/common/test_macros/test.h"
#include "level_zero/core/source/kernel/sampler_patch_values.h"
using namespace L0;
TEST(SamplerPatchValueTest, givenSamplerAddressingModeWhenGetingPathValueThenCorrectValueReturned) {
EXPECT_EQ(getAddrMode(ZE_SAMPLER_ADDRESS_MODE_REPEAT), SamplerPatchValues::AddressRepeat);
EXPECT_EQ(getAddrMode(ZE_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER), SamplerPatchValues::AddressClampToBorder);
EXPECT_EQ(getAddrMode(ZE_SAMPLER_ADDRESS_MODE_CLAMP), SamplerPatchValues::AddressClampToEdge);
EXPECT_EQ(getAddrMode(ZE_SAMPLER_ADDRESS_MODE_NONE), SamplerPatchValues::AddressNone);
EXPECT_EQ(getAddrMode(ZE_SAMPLER_ADDRESS_MODE_MIRROR), SamplerPatchValues::AddressMirroredRepeat);
EXPECT_EQ(getAddrMode(ZE_SAMPLER_ADDRESS_MODE_FORCE_UINT32), SamplerPatchValues::AddressNone);
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2021 Intel Corporation
* Copyright (C) 2020-2022 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -84,11 +84,11 @@ HWTEST2_P(SamplerCreateTest, givenDifferentDescriptorValuesThenSamplerIsCorrectl
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_WRAP,
sampler->samplerState.getTczAddressControlMode());
} else if (addressMode == ZE_SAMPLER_ADDRESS_MODE_CLAMP) {
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP_BORDER,
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP,
sampler->samplerState.getTcxAddressControlMode());
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP_BORDER,
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP,
sampler->samplerState.getTcyAddressControlMode());
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP_BORDER,
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP,
sampler->samplerState.getTczAddressControlMode());
} else if (addressMode == ZE_SAMPLER_ADDRESS_MODE_MIRROR) {
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_MIRROR,
@@ -98,11 +98,11 @@ HWTEST2_P(SamplerCreateTest, givenDifferentDescriptorValuesThenSamplerIsCorrectl
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_MIRROR,
sampler->samplerState.getTczAddressControlMode());
} else if (addressMode == ZE_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER) {
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP,
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP_BORDER,
sampler->samplerState.getTcxAddressControlMode());
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP,
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP_BORDER,
sampler->samplerState.getTcyAddressControlMode());
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP,
EXPECT_EQ(SAMPLER_STATE::TEXTURE_COORDINATE_MODE_CLAMP_BORDER,
sampler->samplerState.getTczAddressControlMode());
}