feature: use iotclhelper to get num media engines
Related-To: NEO-9777 Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:
parent
8210997f17
commit
bca8478bd4
|
@ -306,6 +306,9 @@ class MemoryManager {
|
|||
virtual bool createMediaContext(uint32_t rootDeviceIndex, void *controlSharedMemoryBuffer, uint32_t controlSharedMemoryBufferSize, void *controlBatchBuffer, uint32_t controlBatchBufferSize, uint64_t &outDoorbell) { return false; }
|
||||
virtual bool releaseMediaContext(uint32_t rootDeviceIndex, uint64_t doorbellHandle) { return false; }
|
||||
|
||||
virtual uint32_t getNumMediaDecoders(uint32_t rootDeviceIndex) const { return 0; }
|
||||
virtual uint32_t getNumMediaEncoders(uint32_t rootDeviceIndex) const { return 0; }
|
||||
|
||||
virtual bool isCompressionSupportedForShareable(bool isShareable) { return true; }
|
||||
virtual bool usmCompressionSupported(Device *device);
|
||||
|
||||
|
|
|
@ -2749,6 +2749,14 @@ bool DrmMemoryManager::releaseMediaContext(uint32_t rootDeviceIndex, uint64_t do
|
|||
return getDrm(rootDeviceIndex).getIoctlHelper()->releaseMediaContext(doorbellHandle);
|
||||
}
|
||||
|
||||
uint32_t DrmMemoryManager::getNumMediaDecoders(uint32_t rootDeviceIndex) const {
|
||||
return getDrm(rootDeviceIndex).getIoctlHelper()->getNumMediaDecoders();
|
||||
}
|
||||
|
||||
uint32_t DrmMemoryManager::getNumMediaEncoders(uint32_t rootDeviceIndex) const {
|
||||
return getDrm(rootDeviceIndex).getIoctlHelper()->getNumMediaEncoders();
|
||||
}
|
||||
|
||||
bool DrmMemoryManager::isCompressionSupportedForShareable(bool isShareable) {
|
||||
// Currently KMD does not support compression with allocation sharing
|
||||
return !isShareable;
|
||||
|
|
|
@ -104,6 +104,9 @@ class DrmMemoryManager : public MemoryManager {
|
|||
bool createMediaContext(uint32_t rootDeviceIndex, void *controlSharedMemoryBuffer, uint32_t controlSharedMemoryBufferSize, void *controlBatchBuffer, uint32_t controlBatchBufferSize, uint64_t &outDoorbell) override;
|
||||
bool releaseMediaContext(uint32_t rootDeviceIndex, uint64_t doorbellHandle) override;
|
||||
|
||||
uint32_t getNumMediaDecoders(uint32_t rootDeviceIndex) const override;
|
||||
uint32_t getNumMediaEncoders(uint32_t rootDeviceIndex) const override;
|
||||
|
||||
bool isCompressionSupportedForShareable(bool isShareable) override;
|
||||
bool usmCompressionSupported(Device *device) override;
|
||||
|
||||
|
|
|
@ -161,6 +161,9 @@ class IoctlHelper {
|
|||
virtual bool createMediaContext(void *controlSharedMemoryBuffer, uint32_t controlSharedMemoryBufferSize, void *controlBatchBuffer, uint32_t controlBatchBufferSize, uint64_t &outDoorbell) { return false; }
|
||||
virtual bool releaseMediaContext(uint64_t doorbellHandle) { return false; }
|
||||
|
||||
virtual uint32_t getNumMediaDecoders() const { return 0; }
|
||||
virtual uint32_t getNumMediaEncoders() const { return 0; }
|
||||
|
||||
virtual void fillExecObject(ExecObject &execObject, uint32_t handle, uint64_t gpuAddress, uint32_t drmContextId, bool bindInfo, bool isMarkedForCapture) = 0;
|
||||
virtual void logExecObject(const ExecObject &execObject, std::stringstream &logger, size_t size) = 0;
|
||||
virtual void fillExecBuffer(ExecBuffer &execBuffer, uintptr_t buffersPtr, uint32_t bufferCount, uint32_t startOffset, uint32_t size, uint64_t flags, uint32_t drmContextId) = 0;
|
||||
|
|
|
@ -37,6 +37,8 @@ class MockIoctlHelper : public IoctlHelperPrelim20 {
|
|||
ADDMETHOD_NOBASE(allocateInterrupt, bool, true, (uint32_t &));
|
||||
ADDMETHOD_NOBASE(createMediaContext, bool, true, (void *, uint32_t, void *, uint32_t, uint64_t &));
|
||||
ADDMETHOD_NOBASE(releaseMediaContext, bool, true, (uint64_t));
|
||||
ADDMETHOD_CONST_NOBASE(getNumMediaDecoders, uint32_t, 0, ());
|
||||
ADDMETHOD_CONST_NOBASE(getNumMediaEncoders, uint32_t, 0, ());
|
||||
|
||||
int getDrmParamValue(DrmParam drmParam) const override {
|
||||
if (drmParam == DrmParam::memoryClassSystem) {
|
||||
|
|
|
@ -20,7 +20,9 @@
|
|||
|
||||
#define ADDMETHOD_CONST_NOBASE(funcName, retType, defaultReturn, funcParams) \
|
||||
retType funcName##Result = defaultReturn; \
|
||||
mutable uint32_t funcName##Called = 0u; \
|
||||
retType funcName funcParams const override { \
|
||||
funcName##Called++; \
|
||||
return funcName##Result; \
|
||||
}
|
||||
|
||||
|
|
|
@ -1776,6 +1776,24 @@ TEST_F(DrmMemoryManagerTest, whenCallingCreateAndReleaseMediaContextThenCallIoct
|
|||
EXPECT_EQ(1u, mockIoctlHelper->releaseMediaContextCalled);
|
||||
}
|
||||
|
||||
TEST_F(DrmMemoryManagerTest, whenCallingGetNumMediaThenCallIoctlHelper) {
|
||||
auto mockIoctlHelper = new MockIoctlHelper(*mock);
|
||||
|
||||
auto &drm = static_cast<DrmMockCustom &>(memoryManager->getDrm(rootDeviceIndex));
|
||||
drm.ioctlHelper.reset(mockIoctlHelper);
|
||||
|
||||
EXPECT_EQ(0u, mockIoctlHelper->getNumMediaDecodersCalled);
|
||||
EXPECT_EQ(0u, mockIoctlHelper->getNumMediaEncodersCalled);
|
||||
|
||||
memoryManager->getNumMediaDecoders(rootDeviceIndex);
|
||||
EXPECT_EQ(1u, mockIoctlHelper->getNumMediaDecodersCalled);
|
||||
EXPECT_EQ(0u, mockIoctlHelper->getNumMediaEncodersCalled);
|
||||
|
||||
memoryManager->getNumMediaEncoders(rootDeviceIndex);
|
||||
EXPECT_EQ(1u, mockIoctlHelper->getNumMediaDecodersCalled);
|
||||
EXPECT_EQ(1u, mockIoctlHelper->getNumMediaEncodersCalled);
|
||||
}
|
||||
|
||||
TEST_F(DrmMemoryManagerTest, GivenShareableEnabledWhenAskedToCreateGraphicsAllocationThenValidAllocationIsReturnedAndStandard64KBHeapIsUsed) {
|
||||
mock->ioctlHelper.reset(new MockIoctlHelper(*mock));
|
||||
mock->queryMemoryInfo();
|
||||
|
|
Loading…
Reference in New Issue