1 /* 2 * Copyright (C) 2018-2021 Intel Corporation 3 * 4 * SPDX-License-Identifier: MIT 5 * 6 */ 7 8 #pragma once 9 #include "CL/cl_ext_intel.h" 10 11 namespace NEO { 12 13 enum PerformanceHints { 14 CL_BUFFER_DOESNT_MEET_ALIGNMENT_RESTRICTIONS, 15 CL_BUFFER_MEETS_ALIGNMENT_RESTRICTIONS, 16 CL_BUFFER_NEEDS_ALLOCATE_MEMORY, 17 CL_IMAGE_MEETS_ALIGNMENT_RESTRICTIONS, 18 DRIVER_CALLS_INTERNAL_CL_FLUSH, 19 PROFILING_ENABLED, 20 PROFILING_ENABLED_WITH_DISABLED_PREEMPTION, 21 SUBBUFFER_SHARES_MEMORY, 22 CL_SVM_ALLOC_MEETS_ALIGNMENT_RESTRICTIONS, 23 CL_ENQUEUE_READ_BUFFER_REQUIRES_COPY_DATA, 24 CL_ENQUEUE_READ_BUFFER_DOESNT_REQUIRE_COPY_DATA, 25 CL_ENQUEUE_READ_BUFFER_DOESNT_MEET_ALIGNMENT_RESTRICTIONS, 26 CL_ENQUEUE_READ_BUFFER_RECT_REQUIRES_COPY_DATA, 27 CL_ENQUEUE_READ_BUFFER_RECT_DOESNT_REQUIRES_COPY_DATA, 28 CL_ENQUEUE_READ_BUFFER_RECT_DOESNT_MEET_ALIGNMENT_RESTRICTIONS, 29 CL_ENQUEUE_WRITE_BUFFER_REQUIRES_COPY_DATA, 30 CL_ENQUEUE_WRITE_BUFFER_DOESNT_REQUIRE_COPY_DATA, 31 CL_ENQUEUE_WRITE_BUFFER_RECT_REQUIRES_COPY_DATA, 32 CL_ENQUEUE_WRITE_BUFFER_RECT_DOESNT_REQUIRE_COPY_DATA, 33 CL_ENQUEUE_READ_IMAGE_DOESNT_MEET_ALIGNMENT_RESTRICTIONS, 34 CL_ENQUEUE_READ_IMAGE_DOESNT_REQUIRES_COPY_DATA, 35 CL_ENQUEUE_WRITE_IMAGE_REQUIRES_COPY_DATA, 36 CL_ENQUEUE_WRITE_IMAGE_DOESNT_REQUIRES_COPY_DATA, 37 CL_ENQUEUE_MAP_BUFFER_REQUIRES_COPY_DATA, 38 CL_ENQUEUE_MAP_BUFFER_DOESNT_REQUIRE_COPY_DATA, 39 CL_ENQUEUE_MAP_IMAGE_REQUIRES_COPY_DATA, 40 CL_ENQUEUE_MAP_IMAGE_DOESNT_REQUIRE_COPY_DATA, 41 CL_ENQUEUE_UNMAP_MEM_OBJ_DOESNT_REQUIRE_COPY_DATA, 42 CL_ENQUEUE_UNMAP_MEM_OBJ_REQUIRES_COPY_DATA, 43 CL_ENQUEUE_SVM_MAP_DOESNT_REQUIRE_COPY_DATA, 44 PRINTF_DETECTED_IN_KERNEL, 45 NULL_LOCAL_WORKGROUP_SIZE, 46 BAD_LOCAL_WORKGROUP_SIZE, 47 REGISTER_PRESSURE_TOO_HIGH, 48 PRIVATE_MEMORY_USAGE_TOO_HIGH, 49 KERNEL_REQUIRES_COHERENCY, 50 KERNEL_ARGUMENT_AUX_TRANSLATION, 51 KERNEL_ALLOCATION_AUX_TRANSLATION, 52 BUFFER_IS_COMPRESSED, 53 BUFFER_IS_NOT_COMPRESSED, 54 IMAGE_IS_COMPRESSED, 55 IMAGE_IS_NOT_COMPRESSED 56 }; 57 58 class DriverDiagnostics { 59 public: 60 DriverDiagnostics(cl_diagnostics_verbose_level level); 61 bool validFlags(cl_diagnostics_verbose_level flags) const; 62 ~DriverDiagnostics() = default; 63 static const char *const hintFormat[]; 64 static const cl_int maxHintStringSize = 1024; 65 PerformanceHints obtainHintForTransferOperation(cl_command_type commandType, bool transferRequired); 66 67 protected: 68 cl_diagnostics_verbose_level verboseLevel; 69 }; 70 } // namespace NEO 71