1 /* 2 * Copyright (C) 2020-2021 Intel Corporation 3 * 4 * SPDX-License-Identifier: MIT 5 * 6 */ 7 8 #pragma once 9 10 #include "level_zero/core/source/cmdlist/cmdlist_hw.h" 11 12 namespace L0 { 13 14 struct EventPool; 15 struct Event; 16 constexpr size_t maxImmediateCommandSize = 4 * MemoryConstants::kiloByte; 17 18 template <GFXCORE_FAMILY gfxCoreFamily> 19 struct CommandListCoreFamilyImmediate : public CommandListCoreFamily<gfxCoreFamily> { 20 using BaseClass = CommandListCoreFamily<gfxCoreFamily>; 21 using BaseClass::executeCommandListImmediate; 22 23 using BaseClass::BaseClass; 24 25 ze_result_t appendLaunchKernel(ze_kernel_handle_t hKernel, 26 const ze_group_count_t *pThreadGroupDimensions, 27 ze_event_handle_t hEvent, uint32_t numWaitEvents, 28 ze_event_handle_t *phWaitEvents) override; 29 30 ze_result_t appendLaunchKernelIndirect(ze_kernel_handle_t hKernel, 31 const ze_group_count_t *pDispatchArgumentsBuffer, 32 ze_event_handle_t hEvent, uint32_t numWaitEvents, 33 ze_event_handle_t *phWaitEvents) override; 34 35 ze_result_t appendBarrier(ze_event_handle_t hSignalEvent, 36 uint32_t numWaitEvents, 37 ze_event_handle_t *phWaitEvents) override; 38 39 ze_result_t appendMemoryCopy(void *dstptr, 40 const void *srcptr, 41 size_t size, 42 ze_event_handle_t hSignalEvent, 43 uint32_t numWaitEvents, 44 ze_event_handle_t *phWaitEvents) override; 45 46 ze_result_t appendMemoryCopyRegion(void *dstPtr, 47 const ze_copy_region_t *dstRegion, 48 uint32_t dstPitch, 49 uint32_t dstSlicePitch, 50 const void *srcPtr, 51 const ze_copy_region_t *srcRegion, 52 uint32_t srcPitch, 53 uint32_t srcSlicePitch, 54 ze_event_handle_t hSignalEvent, 55 uint32_t numWaitEvents, 56 ze_event_handle_t *phWaitEvents) override; 57 58 ze_result_t appendMemoryFill(void *ptr, const void *pattern, 59 size_t patternSize, size_t size, 60 ze_event_handle_t hSignalEvent, 61 uint32_t numWaitEvents, 62 ze_event_handle_t *phWaitEvents) override; 63 64 ze_result_t appendSignalEvent(ze_event_handle_t hEvent) override; 65 66 ze_result_t appendEventReset(ze_event_handle_t hEvent) override; 67 68 ze_result_t appendPageFaultCopy(NEO::GraphicsAllocation *dstAllocation, 69 NEO::GraphicsAllocation *srcAllocation, 70 size_t size, bool flushHost) override; 71 72 ze_result_t appendWaitOnEvents(uint32_t numEvents, ze_event_handle_t *phEvent) override; 73 74 ze_result_t appendWriteGlobalTimestamp(uint64_t *dstptr, ze_event_handle_t hSignalEvent, 75 uint32_t numWaitEvents, ze_event_handle_t *phWaitEvents) override; 76 77 ze_result_t appendMemoryCopyFromContext(void *dstptr, ze_context_handle_t hContextSrc, const void *srcptr, 78 size_t size, ze_event_handle_t hSignalEvent, 79 uint32_t numWaitEvents, ze_event_handle_t *phWaitEvents) override; 80 81 ze_result_t appendImageCopyFromMemory(ze_image_handle_t hDstImage, 82 const void *srcPtr, 83 const ze_image_region_t *pDstRegion, 84 ze_event_handle_t hEvent, 85 uint32_t numWaitEvents, 86 ze_event_handle_t *phWaitEvents) override; 87 88 ze_result_t appendImageCopyToMemory(void *dstPtr, 89 ze_image_handle_t hSrcImage, 90 const ze_image_region_t *pSrcRegion, 91 ze_event_handle_t hEvent, 92 uint32_t numWaitEvents, 93 ze_event_handle_t *phWaitEvents) override; 94 95 ze_result_t appendImageCopy( 96 ze_image_handle_t dst, ze_image_handle_t src, 97 ze_event_handle_t hEvent, 98 uint32_t numWaitEvents, 99 ze_event_handle_t *phWaitEvents) override; 100 101 ze_result_t appendImageCopyRegion(ze_image_handle_t hDstImage, 102 ze_image_handle_t hSrcImage, 103 const ze_image_region_t *pDstRegion, 104 const ze_image_region_t *pSrcRegion, 105 ze_event_handle_t hEvent, 106 uint32_t numWaitEvents, 107 ze_event_handle_t *phWaitEvents) override; 108 109 ze_result_t executeCommandListImmediateWithFlushTask(bool performMigration); 110 111 void checkAvailableSpace(); 112 113 protected: 114 size_t cmdListBBEndOffset = 0; 115 }; 116 117 template <PRODUCT_FAMILY gfxProductFamily> 118 struct CommandListImmediateProductFamily; 119 120 } // namespace L0 121