mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 06:49:52 +08:00
Remove command queue, completion stamp and device from mem obj
Remove setCompletionStamp function from Surface Change-Id: I25f3040a91892495e55cb4924f1538276de6264e
This commit is contained in:
committed by
sys_ocldev
parent
97b215440a
commit
9ae4f390d1
@@ -415,10 +415,6 @@ void CommandQueueHw<GfxFamily>::enqueueHandler(Surface **surfacesForResidency,
|
||||
waitUntilComplete(taskCount, flushStamp->peekStamp(), false);
|
||||
} else {
|
||||
waitUntilComplete(taskCount, flushStamp->peekStamp(), false);
|
||||
for (auto sIt = surfacesForResidency, sE = surfacesForResidency + numSurfaceForResidency;
|
||||
sIt != sE; ++sIt) {
|
||||
(*sIt)->setCompletionStamp(completionStamp, nullptr, nullptr);
|
||||
}
|
||||
if (printfHandler) {
|
||||
printfHandler->printEnqueueOutput();
|
||||
}
|
||||
@@ -575,14 +571,6 @@ CompletionStamp CommandQueueHw<GfxFamily>::enqueueNonBlocked(
|
||||
dispatchFlags,
|
||||
*device);
|
||||
|
||||
for (auto surface : CreateRange(surfaces, surfaceCount)) {
|
||||
surface->setCompletionStamp(completionStamp, device, this);
|
||||
}
|
||||
|
||||
for (auto &dispatchInfo : multiDispatchInfo) {
|
||||
dispatchInfo.getKernel()->updateWithCompletionStamp(commandStreamReceiver, &completionStamp);
|
||||
}
|
||||
|
||||
return completionStamp;
|
||||
}
|
||||
|
||||
|
||||
@@ -131,6 +131,7 @@ class Device : public BaseObject<_cl_device_id> {
|
||||
bool getEnabled64kbPages();
|
||||
bool isSourceLevelDebuggerActive() const;
|
||||
SourceLevelDebugger *getSourceLevelDebugger() { return executionEnvironment->sourceLevelDebugger.get(); }
|
||||
ExecutionEnvironment *getExecutionEnvironment() const { return executionEnvironment; }
|
||||
|
||||
protected:
|
||||
Device() = delete;
|
||||
|
||||
@@ -235,9 +235,6 @@ CompletionStamp &CommandComputeKernel::submit(uint32_t taskLevel, bool terminate
|
||||
taskLevel,
|
||||
dispatchFlags,
|
||||
commandQueue.getDevice());
|
||||
for (auto &surface : surfaces) {
|
||||
surface->setCompletionStamp(completionStamp, nullptr, nullptr);
|
||||
}
|
||||
commandQueue.waitUntilComplete(completionStamp.taskCount, completionStamp.flushStamp, false);
|
||||
if (printfHandler) {
|
||||
printfHandler.get()->printEnqueueOutput();
|
||||
|
||||
@@ -935,20 +935,6 @@ inline void Kernel::makeArgsResident(CommandStreamReceiver &commandStreamReceive
|
||||
}
|
||||
}
|
||||
|
||||
void Kernel::updateWithCompletionStamp(CommandStreamReceiver &commandStreamReceiver, CompletionStamp *completionStamp) {
|
||||
auto numArgs = kernelInfo.kernelArgInfo.size();
|
||||
for (decltype(numArgs) argIndex = 0; argIndex < numArgs; argIndex++) {
|
||||
if (kernelArguments[argIndex].object) {
|
||||
if (Kernel::isMemObj(kernelArguments[argIndex].type)) {
|
||||
auto clMem = const_cast<cl_mem>(static_cast<const _cl_mem *>(kernelArguments[argIndex].object));
|
||||
auto memObj = castToObjectOrAbort<MemObj>(clMem);
|
||||
DEBUG_BREAK_IF(memObj == nullptr);
|
||||
memObj->setCompletionStamp(*completionStamp, nullptr, nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Kernel::makeResident(CommandStreamReceiver &commandStreamReceiver) {
|
||||
if (privateSurface) {
|
||||
commandStreamReceiver.makeResident(*privateSurface);
|
||||
|
||||
@@ -292,7 +292,6 @@ class Kernel : public BaseObject<_cl_kernel> {
|
||||
|
||||
//residency for kernel surfaces
|
||||
MOCKABLE_VIRTUAL void makeResident(CommandStreamReceiver &commandStreamReceiver);
|
||||
void updateWithCompletionStamp(CommandStreamReceiver &commandStreamReceiver, CompletionStamp *completionStamp);
|
||||
MOCKABLE_VIRTUAL void getResidency(std::vector<Surface *> &dst);
|
||||
bool requiresCoherency();
|
||||
void resetSharedObjectsPatchAddresses();
|
||||
|
||||
@@ -438,7 +438,7 @@ Buffer *Buffer::createBufferHwFromDevice(const Device *device,
|
||||
DEBUG_BREAK_IF(nullptr == funcCreate);
|
||||
auto pBuffer = funcCreate(nullptr, flags, size, memoryStorage, hostPtr, gfxAllocation,
|
||||
zeroCopy, isHostPtrSVM, isImageRedescribed);
|
||||
pBuffer->device = const_cast<Device *>(device);
|
||||
pBuffer->executionEnvironment = device->getExecutionEnvironment();
|
||||
return pBuffer;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
namespace OCLRT {
|
||||
class Buffer;
|
||||
class Device;
|
||||
class MemoryManager;
|
||||
|
||||
typedef Buffer *(*BufferCreatFunc)(Context *context,
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
*/
|
||||
|
||||
#include "hw_cmds.h"
|
||||
#include "runtime/device/device.h"
|
||||
#include "runtime/execution_environment/execution_environment.h"
|
||||
#include "runtime/helpers/surface_formats.h"
|
||||
#include "runtime/helpers/aligned_memory.h"
|
||||
#include "runtime/mem_obj/buffer.h"
|
||||
@@ -46,7 +46,7 @@ void BufferHw<GfxFamily>::setArgStateful(void *memory) {
|
||||
using SURFACE_FORMAT = typename RENDER_SURFACE_STATE::SURFACE_FORMAT;
|
||||
using AUXILIARY_SURFACE_MODE = typename RENDER_SURFACE_STATE::AUXILIARY_SURFACE_MODE;
|
||||
|
||||
auto gmmHelper = device->getGmmHelper();
|
||||
auto gmmHelper = executionEnvironment->getGmmHelper();
|
||||
auto surfaceState = reinterpret_cast<RENDER_SURFACE_STATE *>(memory);
|
||||
auto surfaceSize = alignUp(getSize(), 4);
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
*/
|
||||
|
||||
#include "hw_cmds.h"
|
||||
#include "runtime/device/device.h"
|
||||
#include "runtime/execution_environment/execution_environment.h"
|
||||
#include "runtime/helpers/surface_formats.h"
|
||||
#include "runtime/helpers/aligned_memory.h"
|
||||
#include "runtime/mem_obj/image.h"
|
||||
@@ -45,7 +45,7 @@ void ImageHw<GfxFamily>::setImageArg(void *memory, bool setAsMediaBlockImage, ui
|
||||
using SURFACE_FORMAT = typename RENDER_SURFACE_STATE::SURFACE_FORMAT;
|
||||
auto surfaceState = reinterpret_cast<RENDER_SURFACE_STATE *>(memory);
|
||||
auto gmm = getGraphicsAllocation()->gmm;
|
||||
auto gmmHelper = device->getGmmHelper();
|
||||
auto gmmHelper = executionEnvironment->getGmmHelper();
|
||||
|
||||
auto imageCount = std::max(getImageDesc().image_depth, getImageDesc().image_array_size);
|
||||
if (imageCount == 0) {
|
||||
@@ -220,7 +220,7 @@ void ImageHw<GfxFamily>::setMediaImageArg(void *memory) {
|
||||
using SURFACE_FORMAT = typename MEDIA_SURFACE_STATE::SURFACE_FORMAT;
|
||||
SURFACE_FORMAT surfaceFormat = MEDIA_SURFACE_STATE::SURFACE_FORMAT_Y8_UNORM_VA;
|
||||
|
||||
auto gmmHelper = device->getGmmHelper();
|
||||
auto gmmHelper = executionEnvironment->getGmmHelper();
|
||||
auto surfaceState = reinterpret_cast<MEDIA_SURFACE_STATE *>(memory);
|
||||
*surfaceState = MEDIA_SURFACE_STATE::sInit();
|
||||
|
||||
|
||||
@@ -48,12 +48,11 @@ MemObj::MemObj(Context *context,
|
||||
memoryStorage(memoryStorage), hostPtr(hostPtr),
|
||||
isZeroCopy(zeroCopy), isHostPtrSVM(isHostPtrSVM), isObjectRedescribed(isObjectRedescribed),
|
||||
graphicsAllocation(gfxAllocation) {
|
||||
completionStamp = {};
|
||||
|
||||
if (context) {
|
||||
context->incRefInternal();
|
||||
memoryManager = context->getMemoryManager();
|
||||
device = context->getDevice(0);
|
||||
executionEnvironment = context->getDevice(0)->getExecutionEnvironment();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,15 +216,6 @@ size_t MemObj::getSize() const {
|
||||
return size;
|
||||
}
|
||||
|
||||
void MemObj::setCompletionStamp(CompletionStamp completionStamp, Device *pDevice, CommandQueue *pCmdQ) {
|
||||
this->completionStamp = completionStamp;
|
||||
cmdQueuePtr = pCmdQ;
|
||||
}
|
||||
|
||||
CompletionStamp MemObj::getCompletionStamp() const {
|
||||
return completionStamp;
|
||||
}
|
||||
|
||||
void MemObj::setAllocatedMapPtr(void *allocatedMapPtr) {
|
||||
this->allocatedMapPtr = allocatedMapPtr;
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
#pragma once
|
||||
#include "runtime/api/cl_types.h"
|
||||
#include "runtime/helpers/base_object.h"
|
||||
#include "runtime/helpers/completion_stamp.h"
|
||||
#include "runtime/helpers/mipmap.h"
|
||||
#include "runtime/sharings/sharing.h"
|
||||
#include "runtime/mem_obj/map_operations_handler.h"
|
||||
@@ -33,12 +32,11 @@
|
||||
#include <vector>
|
||||
|
||||
namespace OCLRT {
|
||||
class ExecutionEnvironment;
|
||||
class GraphicsAllocation;
|
||||
struct KernelInfo;
|
||||
class MemoryManager;
|
||||
class Context;
|
||||
class CommandQueue;
|
||||
class Device;
|
||||
|
||||
template <>
|
||||
struct OpenCLObjectMapper<_cl_mem> {
|
||||
@@ -74,8 +72,6 @@ class MemObj : public BaseObject<_cl_mem> {
|
||||
bool getIsObjectRedescribed() const { return isObjectRedescribed; };
|
||||
size_t getSize() const;
|
||||
cl_mem_flags getFlags() const;
|
||||
void setCompletionStamp(CompletionStamp completionStamp, Device *pDevice, CommandQueue *pCmdQ);
|
||||
CompletionStamp getCompletionStamp() const;
|
||||
|
||||
bool addMappedPtr(void *ptr, size_t ptrLength, cl_map_flags &mapFlags, MemObjSizeArray &size, MemObjOffsetArray &offset, uint32_t mipLevel);
|
||||
bool findMappedPtr(void *mappedPtr, MapInfo &outMapInfo) { return mapOperationsHandler.find(mappedPtr, outMapInfo); }
|
||||
@@ -104,7 +100,6 @@ class MemObj : public BaseObject<_cl_mem> {
|
||||
|
||||
virtual bool allowTiling() const { return false; }
|
||||
|
||||
CommandQueue *getAssociatedCommandQueue() { return cmdQueuePtr; }
|
||||
bool isImageFromImage() const { return isImageFromImageCreated; }
|
||||
|
||||
void *getCpuAddressForMapping();
|
||||
@@ -141,9 +136,7 @@ class MemObj : public BaseObject<_cl_mem> {
|
||||
size_t offset = 0;
|
||||
MemObj *associatedMemObject = nullptr;
|
||||
cl_uint refCount = 0;
|
||||
CompletionStamp completionStamp;
|
||||
CommandQueue *cmdQueuePtr = nullptr;
|
||||
Device *device = nullptr;
|
||||
ExecutionEnvironment *executionEnvironment = nullptr;
|
||||
bool isZeroCopy;
|
||||
bool isHostPtrSVM;
|
||||
bool isObjectRedescribed;
|
||||
|
||||
@@ -26,13 +26,12 @@
|
||||
#include "runtime/memory_manager/graphics_allocation.h"
|
||||
|
||||
namespace OCLRT {
|
||||
|
||||
class CommandQueue;
|
||||
class Surface {
|
||||
public:
|
||||
Surface(bool isCoherent = false) : IsCoherent(isCoherent) {}
|
||||
virtual ~Surface() = default;
|
||||
virtual void makeResident(CommandStreamReceiver &csr) = 0;
|
||||
virtual void setCompletionStamp(CompletionStamp &cs, Device *pDevice, CommandQueue *pCmdQ) = 0;
|
||||
virtual Surface *duplicate() = 0;
|
||||
const bool IsCoherent;
|
||||
};
|
||||
@@ -43,7 +42,6 @@ class NullSurface : public Surface {
|
||||
~NullSurface() override = default;
|
||||
|
||||
void makeResident(CommandStreamReceiver &csr) override{};
|
||||
void setCompletionStamp(CompletionStamp &cs, Device *pDevice, CommandQueue *pCmdQ) override{};
|
||||
Surface *duplicate() override { return new NullSurface(); };
|
||||
};
|
||||
|
||||
@@ -67,10 +65,6 @@ class HostPtrSurface : public Surface {
|
||||
DEBUG_BREAK_IF(!gfxAllocation);
|
||||
csr.makeResidentHostPtrAllocation(gfxAllocation);
|
||||
}
|
||||
void setCompletionStamp(CompletionStamp &cs, Device *pDevice, CommandQueue *pCmdQ) override {
|
||||
DEBUG_BREAK_IF(!gfxAllocation);
|
||||
gfxAllocation->taskCount = cs.taskCount;
|
||||
}
|
||||
Surface *duplicate() override {
|
||||
return new HostPtrSurface(this->memoryPointer, this->surfaceSize, this->gfxAllocation);
|
||||
};
|
||||
@@ -103,28 +97,25 @@ class HostPtrSurface : public Surface {
|
||||
|
||||
class MemObjSurface : public Surface {
|
||||
public:
|
||||
MemObjSurface(MemObj *memObj) : Surface(memObj->getGraphicsAllocation()->isCoherent()), memory_object(memObj) {
|
||||
memory_object->retain();
|
||||
MemObjSurface(MemObj *memObj) : Surface(memObj->getGraphicsAllocation()->isCoherent()), memObj(memObj) {
|
||||
memObj->retain();
|
||||
}
|
||||
~MemObjSurface() override {
|
||||
memory_object->release();
|
||||
memory_object = nullptr;
|
||||
memObj->release();
|
||||
memObj = nullptr;
|
||||
};
|
||||
|
||||
void makeResident(CommandStreamReceiver &csr) override {
|
||||
DEBUG_BREAK_IF(!memory_object);
|
||||
csr.makeResident(*memory_object->getGraphicsAllocation());
|
||||
}
|
||||
void setCompletionStamp(CompletionStamp &cs, Device *pDevice, CommandQueue *pCmdQ) override {
|
||||
DEBUG_BREAK_IF(!memory_object);
|
||||
memory_object->setCompletionStamp(cs, pDevice, pCmdQ);
|
||||
DEBUG_BREAK_IF(!memObj);
|
||||
csr.makeResident(*memObj->getGraphicsAllocation());
|
||||
}
|
||||
|
||||
Surface *duplicate() override {
|
||||
return new MemObjSurface(this->memory_object);
|
||||
return new MemObjSurface(this->memObj);
|
||||
};
|
||||
|
||||
protected:
|
||||
class MemObj *memory_object;
|
||||
class MemObj *memObj;
|
||||
};
|
||||
|
||||
class GeneralSurface : public Surface {
|
||||
@@ -137,9 +128,6 @@ class GeneralSurface : public Surface {
|
||||
void makeResident(CommandStreamReceiver &csr) override {
|
||||
csr.makeResident(*gfxAllocation);
|
||||
};
|
||||
void setCompletionStamp(CompletionStamp &cs, Device *pDevice, CommandQueue *pCmdQ) override {
|
||||
gfxAllocation->taskCount = cs.taskCount;
|
||||
};
|
||||
Surface *duplicate() override { return new GeneralSurface(gfxAllocation); };
|
||||
|
||||
protected:
|
||||
|
||||
Reference in New Issue
Block a user