fix: store image implicit args in bindless slot 1

bindless slot 0: image
bindless slot 1: image implicit args
bindless slot 2: redescribed image

Redescribed image moved one slot higher.
Separate allocation is created for new bindless slot.

Related-To: NEO-9740
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
This commit is contained in:
Fabian Zwolinski
2024-01-12 10:41:27 +00:00
committed by Compute-Runtime-Automation
parent 42c2b6b0e2
commit a3bd629aff
15 changed files with 426 additions and 38 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2023 Intel Corporation
* Copyright (C) 2020-2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -48,7 +48,7 @@ class BindlessHeapsHelper {
int getReusedSshVectorIndex(size_t ssSize) {
int index = 0;
if (ssSize == 2 * surfaceStateSize) {
if (ssSize == 3 * surfaceStateSize) {
index = 1;
} else {
UNRECOVERABLE_IF(ssSize != surfaceStateSize);

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2023 Intel Corporation
* Copyright (C) 2020-2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -8,6 +8,8 @@
#pragma once
#include "shared/source/gmm_helper/gmm_lib.h"
#include "third_party/opencl_headers/CL/cl_ext.h"
namespace NEO {
enum SurfaceFormat : unsigned short {
GFX3DSTATE_SURFACEFORMAT_R32G32B32A32_FLOAT = 0x000,
@@ -242,6 +244,27 @@ struct ImageInfo {
bool useLocalMemory;
};
struct ImageImplicitArgs {
const uint8_t structSize = sizeof(ImageImplicitArgs);
uint8_t structVersion;
uint64_t imageWidth;
uint64_t imageHeight;
uint64_t imageDepth;
uint64_t imageArraySize;
uint32_t numSamples;
cl_channel_type channelType;
cl_channel_order channelOrder;
uint32_t numMipLevels;
uint64_t flatBaseOffset;
uint64_t flatWidth;
uint64_t flagHeight;
uint64_t flatPitch;
static constexpr uint8_t getSize() { return sizeof(ImageImplicitArgs); }
};
static_assert(ImageImplicitArgs::getSize() == 88);
struct McsSurfaceInfo {
uint32_t pitch;
uint32_t qPitch;