2017-12-21 07:45:38 +08:00
|
|
|
/*
|
2023-08-29 22:15:08 +08:00
|
|
|
* Copyright (C) 2018-2023 Intel Corporation
|
2018-09-18 15:11:08 +08:00
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: MIT
|
|
|
|
*
|
|
|
|
*/
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
#pragma once
|
2020-02-24 05:44:01 +08:00
|
|
|
#include "shared/source/gmm_helper/resource_info.h"
|
2021-10-07 01:46:49 +08:00
|
|
|
#include "shared/source/helpers/surface_format_info.h"
|
2021-11-30 06:47:31 +08:00
|
|
|
#include "shared/test/common/test_macros/mock_method_macros.h"
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2019-03-26 18:59:46 +08:00
|
|
|
namespace NEO {
|
2017-12-21 07:45:38 +08:00
|
|
|
struct SurfaceFormatInfo;
|
|
|
|
|
|
|
|
class MockGmmResourceInfo : public GmmResourceInfo {
|
|
|
|
public:
|
2020-03-13 16:17:01 +08:00
|
|
|
~MockGmmResourceInfo() override;
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
MockGmmResourceInfo(GMM_RESCREATE_PARAMS *resourceCreateParams);
|
|
|
|
|
|
|
|
MockGmmResourceInfo(GMM_RESOURCE_INFO *inputGmmResourceInfo);
|
|
|
|
|
|
|
|
size_t getSizeAllocation() override { return size; }
|
|
|
|
|
|
|
|
size_t getBaseWidth() override { return static_cast<size_t>(mockResourceCreateParams.BaseWidth); }
|
|
|
|
|
|
|
|
size_t getBaseHeight() override { return static_cast<size_t>(mockResourceCreateParams.BaseHeight); }
|
|
|
|
|
|
|
|
size_t getBaseDepth() override { return static_cast<size_t>(mockResourceCreateParams.Depth); }
|
|
|
|
|
|
|
|
size_t getArraySize() override { return static_cast<size_t>(mockResourceCreateParams.ArraySize); }
|
|
|
|
|
|
|
|
size_t getRenderPitch() override { return rowPitch; }
|
|
|
|
|
2021-08-06 18:46:00 +08:00
|
|
|
uint64_t getDriverProtectionBits() override { return driverProtectionBits; }
|
|
|
|
|
2017-12-21 07:45:38 +08:00
|
|
|
uint32_t getNumSamples() override { return mockResourceCreateParams.MSAA.NumSamples; }
|
|
|
|
|
|
|
|
uint32_t getQPitch() override { return qPitch; }
|
|
|
|
|
|
|
|
uint32_t getBitsPerPixel() override;
|
|
|
|
|
|
|
|
uint32_t getHAlign() override { return 4u; }
|
|
|
|
|
2022-01-20 01:03:53 +08:00
|
|
|
uint32_t getHAlignSurfaceState() override { return getHAlignSurfaceStateResult; }
|
2019-08-22 14:20:42 +08:00
|
|
|
|
|
|
|
uint32_t getVAlignSurfaceState() override { return 1u; }
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2018-08-10 20:13:31 +08:00
|
|
|
uint32_t getMaxLod() override { return 7u; }
|
|
|
|
|
2019-01-22 17:24:28 +08:00
|
|
|
uint32_t getTileModeSurfaceState() override;
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2019-02-08 17:19:22 +08:00
|
|
|
uint32_t getRenderAuxPitchTiles() override { return unifiedAuxPitch; };
|
|
|
|
|
|
|
|
uint32_t getAuxQPitch() override { return auxQPitch; }
|
|
|
|
|
2019-10-28 15:11:18 +08:00
|
|
|
uint32_t getMipTailStartLodSurfaceState() override { return mipTailStartLod; }
|
|
|
|
|
2017-12-21 07:45:38 +08:00
|
|
|
GMM_RESOURCE_FORMAT getResourceFormat() override { return mockResourceCreateParams.Format; }
|
|
|
|
|
|
|
|
GMM_SURFACESTATE_FORMAT getResourceFormatSurfaceState() override { return (GMM_SURFACESTATE_FORMAT)0; }
|
|
|
|
|
|
|
|
GMM_RESOURCE_TYPE getResourceType() override { return mockResourceCreateParams.Type; }
|
|
|
|
|
|
|
|
GMM_RESOURCE_FLAG *getResourceFlags() override { return &mockResourceCreateParams.Flags; }
|
|
|
|
|
2018-03-23 17:19:14 +08:00
|
|
|
GMM_STATUS getOffset(GMM_REQ_OFFSET_INFO &reqOffsetInfo) override;
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2021-11-30 06:47:31 +08:00
|
|
|
uint8_t cpuBlt(GMM_RES_COPY_BLT *resCopyBlt) override {
|
|
|
|
cpuBltCalled++;
|
|
|
|
if (resCopyBlt) {
|
|
|
|
requestedResCopyBlt = *resCopyBlt;
|
|
|
|
}
|
|
|
|
return cpuBltResult;
|
|
|
|
};
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2020-03-19 21:49:05 +08:00
|
|
|
void *getSystemMemPointer() override { return (void *)mockResourceCreateParams.pExistingSysMem; }
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2021-11-30 06:47:31 +08:00
|
|
|
ADDMETHOD_NOBASE(getUnifiedAuxSurfaceOffset, uint64_t, 0u, (GMM_UNIFIED_AUX_TYPE auxType));
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2019-02-19 23:14:18 +08:00
|
|
|
bool is64KBPageSuitable() const override { return is64KBPageSuitableValue; }
|
|
|
|
|
2021-05-03 04:41:01 +08:00
|
|
|
GMM_RESOURCE_INFO *peekGmmResourceInfo() const override { return mockResourceInfoHandle; }
|
|
|
|
|
2023-08-29 22:15:08 +08:00
|
|
|
GMM_RESOURCE_USAGE_TYPE getCachePolicyUsage() const override { return usageType; }
|
|
|
|
|
2021-05-03 04:41:01 +08:00
|
|
|
void *peekHandle() const override { return mockResourceInfoHandle; }
|
|
|
|
|
|
|
|
size_t peekHandleSize() const override { return sizeof(GMM_RESOURCE_INFO); }
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
GMM_RESOURCE_INFO *mockResourceInfoHandle = (GMM_RESOURCE_INFO *)this;
|
|
|
|
GMM_RESCREATE_PARAMS mockResourceCreateParams = {};
|
|
|
|
|
|
|
|
void overrideReturnedRenderPitch(size_t newPitch) { rowPitch = newPitch; }
|
2018-07-12 21:42:46 +08:00
|
|
|
void overrideReturnedSize(size_t newSize) { size = newSize; }
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2018-01-25 22:10:07 +08:00
|
|
|
void setUnifiedAuxTranslationCapable();
|
2019-01-30 18:29:48 +08:00
|
|
|
void setMultisampleControlSurface();
|
2018-01-25 22:10:07 +08:00
|
|
|
|
2019-02-08 17:19:22 +08:00
|
|
|
void setUnifiedAuxPitchTiles(uint32_t value);
|
|
|
|
void setAuxQPitch(uint32_t value);
|
2019-10-28 15:11:18 +08:00
|
|
|
void setMipTailStartLod(uint32_t newMipTailStartLod) { mipTailStartLod = newMipTailStartLod; }
|
2019-02-08 17:19:22 +08:00
|
|
|
|
2022-06-08 19:52:47 +08:00
|
|
|
void refreshHandle() override {
|
|
|
|
refreshHandleCalled++;
|
|
|
|
GmmResourceInfo::refreshHandle();
|
|
|
|
};
|
|
|
|
|
2021-05-03 04:41:01 +08:00
|
|
|
using GmmResourceInfo::clientContext;
|
|
|
|
using GmmResourceInfo::createResourceInfo;
|
2022-06-08 19:52:47 +08:00
|
|
|
using GmmResourceInfo::decodeResourceInfo;
|
2021-05-03 04:41:01 +08:00
|
|
|
|
2021-08-06 18:46:00 +08:00
|
|
|
uint64_t driverProtectionBits = 0;
|
2018-03-23 17:19:14 +08:00
|
|
|
uint32_t getOffsetCalled = 0u;
|
|
|
|
uint32_t arrayIndexPassedToGetOffset = 0;
|
2018-11-21 23:47:21 +08:00
|
|
|
SurfaceFormatInfo tempSurface{};
|
2019-02-19 23:14:18 +08:00
|
|
|
bool is64KBPageSuitableValue = true;
|
2021-11-30 06:47:31 +08:00
|
|
|
GMM_RES_COPY_BLT requestedResCopyBlt = {};
|
|
|
|
uint32_t cpuBltCalled = 0u;
|
|
|
|
uint8_t cpuBltResult = 1u;
|
2022-01-20 01:03:53 +08:00
|
|
|
static constexpr uint32_t getHAlignSurfaceStateResult = 2u;
|
2022-01-21 20:14:46 +08:00
|
|
|
static constexpr uint32_t yMajorTileModeValue = 3u;
|
2022-06-08 19:52:47 +08:00
|
|
|
uint32_t refreshHandleCalled = 0u;
|
2023-08-29 22:15:08 +08:00
|
|
|
GMM_RESOURCE_USAGE_TYPE usageType = GMM_RESOURCE_USAGE_OCL_BUFFER;
|
2018-03-23 17:19:14 +08:00
|
|
|
|
2017-12-21 07:45:38 +08:00
|
|
|
protected:
|
|
|
|
MockGmmResourceInfo();
|
|
|
|
|
|
|
|
void computeRowPitch();
|
|
|
|
void setupDefaultActions();
|
|
|
|
void setSurfaceFormat();
|
|
|
|
const SurfaceFormatInfo *surfaceFormatInfo = nullptr;
|
|
|
|
|
|
|
|
size_t size = 0;
|
|
|
|
size_t rowPitch = 0;
|
|
|
|
uint32_t qPitch = 0;
|
2022-01-20 02:36:10 +08:00
|
|
|
uint32_t unifiedAuxPitch = 1u;
|
|
|
|
uint32_t auxQPitch = 1u;
|
2019-10-28 15:11:18 +08:00
|
|
|
uint32_t mipTailStartLod = 0;
|
2017-12-21 07:45:38 +08:00
|
|
|
};
|
2019-03-26 18:59:46 +08:00
|
|
|
} // namespace NEO
|