mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-25 05:24:02 +08:00
Use correct enum values for sampler in clamp mode
Signed-off-by: Maciej Plewka <maciej.plewka@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
570c4d4626
commit
6968bfdb33
@@ -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
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
44
level_zero/core/source/kernel/sampler_patch_values.h
Normal file
44
level_zero/core/source/kernel/sampler_patch_values.h
Normal 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
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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>;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user