2018-11-27 15:31:00 +08:00
|
|
|
/*
|
2019-01-02 04:14:17 +08:00
|
|
|
* Copyright (C) 2018-2019 Intel Corporation
|
2018-11-27 15:31:00 +08:00
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: MIT
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2019-03-19 18:57:45 +08:00
|
|
|
#pragma once
|
|
|
|
|
2018-11-27 15:31:00 +08:00
|
|
|
#include "third_party/aub_stream/headers/aub_manager.h"
|
2019-04-05 06:33:09 +08:00
|
|
|
#include "third_party/aub_stream/headers/aubstream.h"
|
2018-11-27 15:31:00 +08:00
|
|
|
#include "third_party/aub_stream/headers/hardware_context.h"
|
|
|
|
|
2019-01-19 04:44:23 +08:00
|
|
|
struct MockHardwareContext : public aub_stream::HardwareContext {
|
2019-04-05 06:33:09 +08:00
|
|
|
using SurfaceInfo = aub_stream::SurfaceInfo;
|
|
|
|
|
2019-03-19 19:52:45 +08:00
|
|
|
MockHardwareContext(uint32_t deviceIndex) : deviceIndex(deviceIndex) {}
|
|
|
|
~MockHardwareContext() override {}
|
2018-11-27 15:31:00 +08:00
|
|
|
|
|
|
|
void initialize() override { initializeCalled = true; }
|
2019-03-19 19:52:45 +08:00
|
|
|
void pollForCompletion() override { pollForCompletionCalled = true; }
|
2019-04-24 15:36:16 +08:00
|
|
|
void writeAndSubmitBatchBuffer(uint64_t gfxAddress, const void *batchBuffer, size_t size, uint32_t memoryBank, size_t pageSize = 65536) override { writeAndSubmitCalled = true; }
|
|
|
|
void submitBatchBuffer(uint64_t gfxAddress) override { submitCalled = true; }
|
2019-06-13 23:20:53 +08:00
|
|
|
void writeMemory(uint64_t gfxAddress, const void *memory, size_t size, uint32_t memoryBanks, int hint, size_t pageSize = 65536) override {
|
|
|
|
writeMemoryCalled = true;
|
|
|
|
writeMemoryPageSizePassed = pageSize;
|
2019-06-24 17:34:44 +08:00
|
|
|
memoryBanksPassed = memoryBanks;
|
2019-06-13 23:20:53 +08:00
|
|
|
}
|
2018-11-27 15:31:00 +08:00
|
|
|
void freeMemory(uint64_t gfxAddress, size_t size) override { freeMemoryCalled = true; }
|
2018-12-05 04:03:36 +08:00
|
|
|
void expectMemory(uint64_t gfxAddress, const void *memory, size_t size, uint32_t compareOperation) override { expectMemoryCalled = true; }
|
2019-03-19 19:52:45 +08:00
|
|
|
void readMemory(uint64_t gfxAddress, void *memory, size_t size, uint32_t memoryBank, size_t pageSize) override { readMemoryCalled = true; }
|
|
|
|
void dumpBufferBIN(uint64_t gfxAddress, size_t size) override { dumpBufferBINCalled = true; }
|
2019-04-05 06:33:09 +08:00
|
|
|
void dumpSurface(const SurfaceInfo &surfaceInfo) override { dumpSurfaceCalled = true; }
|
2018-11-27 15:31:00 +08:00
|
|
|
|
|
|
|
bool initializeCalled = false;
|
|
|
|
bool pollForCompletionCalled = false;
|
2019-04-24 15:36:16 +08:00
|
|
|
bool writeAndSubmitCalled = false;
|
2018-11-27 15:31:00 +08:00
|
|
|
bool submitCalled = false;
|
|
|
|
bool writeMemoryCalled = false;
|
|
|
|
bool freeMemoryCalled = false;
|
2018-12-05 04:03:36 +08:00
|
|
|
bool expectMemoryCalled = false;
|
2018-12-19 20:15:14 +08:00
|
|
|
bool readMemoryCalled = false;
|
2019-01-28 00:36:42 +08:00
|
|
|
bool dumpBufferBINCalled = false;
|
2019-04-05 06:33:09 +08:00
|
|
|
bool dumpSurfaceCalled = false;
|
2019-01-13 23:49:29 +08:00
|
|
|
|
2019-06-13 23:20:53 +08:00
|
|
|
size_t writeMemoryPageSizePassed = 0;
|
2019-06-24 17:34:44 +08:00
|
|
|
uint32_t memoryBanksPassed = 0;
|
2019-06-13 23:20:53 +08:00
|
|
|
|
2019-03-19 19:52:45 +08:00
|
|
|
const uint32_t deviceIndex;
|
2018-11-27 15:31:00 +08:00
|
|
|
};
|
|
|
|
|
2019-01-19 04:44:23 +08:00
|
|
|
class MockAubManager : public aub_stream::AubManager {
|
|
|
|
using HardwareContext = aub_stream::HardwareContext;
|
|
|
|
|
2018-11-27 15:31:00 +08:00
|
|
|
public:
|
|
|
|
MockAubManager(){};
|
2019-02-20 05:50:52 +08:00
|
|
|
MockAubManager(uint32_t productFamily, uint32_t devicesCount, uint64_t memoryBankSize, bool localMemorySupported, uint32_t streamMode) {
|
2019-02-12 01:46:29 +08:00
|
|
|
mockAubManagerParams.productFamily = productFamily;
|
|
|
|
mockAubManagerParams.devicesCount = devicesCount;
|
|
|
|
mockAubManagerParams.memoryBankSize = memoryBankSize;
|
|
|
|
mockAubManagerParams.localMemorySupported = localMemorySupported;
|
|
|
|
mockAubManagerParams.streamMode = streamMode;
|
|
|
|
}
|
2018-11-27 15:31:00 +08:00
|
|
|
~MockAubManager() override {}
|
|
|
|
|
2019-02-07 20:43:13 +08:00
|
|
|
HardwareContext *createHardwareContext(uint32_t device, uint32_t engine) { return createHardwareContext(device, engine, 0); }
|
|
|
|
HardwareContext *createHardwareContext(uint32_t device, uint32_t engine, uint32_t flags) override {
|
|
|
|
contextFlags = flags;
|
2019-03-19 19:52:45 +08:00
|
|
|
return new MockHardwareContext(device);
|
2019-02-07 20:43:13 +08:00
|
|
|
}
|
2019-01-23 19:38:59 +08:00
|
|
|
|
2019-02-20 05:50:52 +08:00
|
|
|
void open(const std::string &aubFileName) override {
|
|
|
|
fileName.assign(aubFileName);
|
|
|
|
openCalledCnt++;
|
|
|
|
}
|
|
|
|
void close() override {
|
|
|
|
fileName.clear();
|
|
|
|
closeCalled = true;
|
|
|
|
}
|
|
|
|
bool isOpen() override {
|
|
|
|
isOpenCalled = true;
|
|
|
|
return !fileName.empty();
|
|
|
|
}
|
|
|
|
const std::string getFileName() override {
|
|
|
|
getFileNameCalled = true;
|
|
|
|
return fileName;
|
|
|
|
}
|
|
|
|
|
2019-04-01 15:33:19 +08:00
|
|
|
void addComment(const char *message) override {
|
|
|
|
receivedComment.assign(message);
|
|
|
|
addCommentCalled = true;
|
|
|
|
}
|
|
|
|
|
2019-02-20 05:50:52 +08:00
|
|
|
void writeMemory(uint64_t gfxAddress, const void *memory, size_t size, uint32_t memoryBanks, int hint, size_t pageSize = 65536) override {
|
|
|
|
writeMemoryCalled = true;
|
2019-04-24 15:36:16 +08:00
|
|
|
hintToWriteMemory = hint;
|
2019-06-13 23:20:53 +08:00
|
|
|
writeMemoryPageSizePassed = pageSize;
|
2019-02-20 05:50:52 +08:00
|
|
|
}
|
|
|
|
|
2019-05-29 22:20:50 +08:00
|
|
|
void freeMemory(uint64_t gfxAddress, size_t size) override {
|
|
|
|
freeMemoryCalled = true;
|
|
|
|
}
|
2019-05-28 22:24:26 +08:00
|
|
|
|
2019-02-20 05:50:52 +08:00
|
|
|
uint32_t openCalledCnt = 0;
|
|
|
|
std::string fileName = "";
|
|
|
|
bool closeCalled = false;
|
|
|
|
bool isOpenCalled = false;
|
|
|
|
bool getFileNameCalled = false;
|
2019-04-01 15:33:19 +08:00
|
|
|
bool addCommentCalled = false;
|
|
|
|
std::string receivedComment = "";
|
2019-01-23 19:38:59 +08:00
|
|
|
bool writeMemoryCalled = false;
|
2019-05-29 22:20:50 +08:00
|
|
|
bool freeMemoryCalled = false;
|
2019-02-07 20:43:13 +08:00
|
|
|
uint32_t contextFlags = 0;
|
2019-04-24 15:36:16 +08:00
|
|
|
int hintToWriteMemory = 0;
|
2019-06-13 23:20:53 +08:00
|
|
|
size_t writeMemoryPageSizePassed = 0;
|
2018-11-27 15:31:00 +08:00
|
|
|
|
2019-02-12 01:46:29 +08:00
|
|
|
struct MockAubManagerParams {
|
|
|
|
uint32_t productFamily = 0;
|
|
|
|
int32_t devicesCount = 0;
|
|
|
|
uint64_t memoryBankSize = 0;
|
|
|
|
bool localMemorySupported = false;
|
|
|
|
uint32_t streamMode = 0xFFFFFFFF;
|
|
|
|
} mockAubManagerParams;
|
|
|
|
|
2018-11-27 15:31:00 +08:00
|
|
|
protected:
|
|
|
|
HardwareContext *hardwareContext = nullptr;
|
|
|
|
};
|