1 /*
2 * Copyright (C) 2018-2021 Intel Corporation
3 *
4 * SPDX-License-Identifier: MIT
5 *
6 */
7
8 #pragma once
9 #include "CL/cl.h"
10
11 #include <cstdint>
12
13 // It's max SSH size per kernel (MAX_BINDING_TABLE_INDEX * 64)
14 const uint32_t SAMPLER_OBJECT_ID_SHIFT = 253 * 64;
15
16 // Sampler Patch Token Enums
17 enum SAMPLER_PATCH_ENUM {
18 CLK_DEFAULT_SAMPLER = 0x00,
19 CLK_ADDRESS_NONE = 0x00,
20 CLK_ADDRESS_CLAMP = 0x01,
21 CLK_ADDRESS_CLAMP_TO_EDGE = 0x02,
22 CLK_ADDRESS_REPEAT = 0x03,
23 CLK_ADDRESS_MIRRORED_REPEAT = 0x04,
24 CLK_ADDRESS_MIRRORED_REPEAT_101 = 0x05,
25 CLK_NORMALIZED_COORDS_FALSE = 0x00,
26 CLK_NORMALIZED_COORDS_TRUE = 0x08,
27 CLK_FILTER_NEAREST = 0x00,
28 CLK_FILTER_LINEAR = 0x00,
29 };
30
GetAddrModeEnum(cl_addressing_mode addressingMode)31 inline SAMPLER_PATCH_ENUM GetAddrModeEnum(cl_addressing_mode addressingMode) {
32 switch (addressingMode) {
33 case CL_ADDRESS_REPEAT:
34 return CLK_ADDRESS_REPEAT;
35 case CL_ADDRESS_CLAMP_TO_EDGE:
36 return CLK_ADDRESS_CLAMP_TO_EDGE;
37 case CL_ADDRESS_CLAMP:
38 return CLK_ADDRESS_CLAMP;
39 case CL_ADDRESS_NONE:
40 return CLK_ADDRESS_NONE;
41 case CL_ADDRESS_MIRRORED_REPEAT:
42 return CLK_ADDRESS_MIRRORED_REPEAT;
43 }
44 return CLK_ADDRESS_NONE;
45 }
46
GetNormCoordsEnum(cl_bool normalizedCoords)47 inline SAMPLER_PATCH_ENUM GetNormCoordsEnum(cl_bool normalizedCoords) {
48 if (normalizedCoords == CL_TRUE) {
49 return CLK_NORMALIZED_COORDS_TRUE;
50 } else {
51 return CLK_NORMALIZED_COORDS_FALSE;
52 }
53 }
54