Remove command queue, completion stamp and device from mem obj

Remove setCompletionStamp function from Surface

Change-Id: I25f3040a91892495e55cb4924f1538276de6264e
This commit is contained in:
Mateusz Jablonski
2018-07-31 09:52:48 +02:00
committed by sys_ocldev
parent 97b215440a
commit 9ae4f390d1
21 changed files with 22 additions and 204 deletions

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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();

View File

@@ -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);

View File

@@ -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();

View File

@@ -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;
}

View File

@@ -28,6 +28,7 @@
namespace OCLRT {
class Buffer;
class Device;
class MemoryManager;
typedef Buffer *(*BufferCreatFunc)(Context *context,

View File

@@ -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);

View File

@@ -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();

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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: