1*ba62d9d3SAndroid Build Coastguard Worker# Copyright (c) 2017-2021, Intel Corporation 2*ba62d9d3SAndroid Build Coastguard Worker# 3*ba62d9d3SAndroid Build Coastguard Worker# Permission is hereby granted, free of charge, to any person obtaining a 4*ba62d9d3SAndroid Build Coastguard Worker# copy of this software and associated documentation files (the "Software"), 5*ba62d9d3SAndroid Build Coastguard Worker# to deal in the Software without restriction, including without limitation 6*ba62d9d3SAndroid Build Coastguard Worker# the rights to use, copy, modify, merge, publish, distribute, sublicense, 7*ba62d9d3SAndroid Build Coastguard Worker# and/or sell copies of the Software, and to permit persons to whom the 8*ba62d9d3SAndroid Build Coastguard Worker# Software is furnished to do so, subject to the following conditions: 9*ba62d9d3SAndroid Build Coastguard Worker# 10*ba62d9d3SAndroid Build Coastguard Worker# The above copyright notice and this permission notice shall be included 11*ba62d9d3SAndroid Build Coastguard Worker# in all copies or substantial portions of the Software. 12*ba62d9d3SAndroid Build Coastguard Worker# 13*ba62d9d3SAndroid Build Coastguard Worker# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 14*ba62d9d3SAndroid Build Coastguard Worker# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15*ba62d9d3SAndroid Build Coastguard Worker# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 16*ba62d9d3SAndroid Build Coastguard Worker# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 17*ba62d9d3SAndroid Build Coastguard Worker# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 18*ba62d9d3SAndroid Build Coastguard Worker# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 19*ba62d9d3SAndroid Build Coastguard Worker# OTHER DEALINGS IN THE SOFTWARE. 20*ba62d9d3SAndroid Build Coastguard Worker 21*ba62d9d3SAndroid Build Coastguard Workerif (BUILD_KERNELS) 22*ba62d9d3SAndroid Build Coastguard Worker # Here we define build steps to generate c-array binary shaders (kernels) 23*ba62d9d3SAndroid Build Coastguard Worker # and their header files. If you don't use BUILD_KERNELS option these 24*ba62d9d3SAndroid Build Coastguard Worker # kernels will just be used from pre-built form. If you will regenerate 25*ba62d9d3SAndroid Build Coastguard Worker # kernels you may notice the difference from the per-built kernels in git-diff. 26*ba62d9d3SAndroid Build Coastguard Worker 27*ba62d9d3SAndroid Build Coastguard Worker function(platform_to_genx platform genx kind) 28*ba62d9d3SAndroid Build Coastguard Worker if(platform STREQUAL "gen11") 29*ba62d9d3SAndroid Build Coastguard Worker set(genx "11" PARENT_SCOPE) 30*ba62d9d3SAndroid Build Coastguard Worker set(kind "" PARENT_SCOPE) 31*ba62d9d3SAndroid Build Coastguard Worker elseif(platform STREQUAL "gen11_icllp") 32*ba62d9d3SAndroid Build Coastguard Worker set(genx "11" PARENT_SCOPE) 33*ba62d9d3SAndroid Build Coastguard Worker set(kind "icllp" PARENT_SCOPE) 34*ba62d9d3SAndroid Build Coastguard Worker elseif(platform STREQUAL "gen12_tgllp") 35*ba62d9d3SAndroid Build Coastguard Worker set(genx "12" PARENT_SCOPE) 36*ba62d9d3SAndroid Build Coastguard Worker set(kind "tgllp" PARENT_SCOPE) 37*ba62d9d3SAndroid Build Coastguard Worker endif() 38*ba62d9d3SAndroid Build Coastguard Worker endfunction() 39*ba62d9d3SAndroid Build Coastguard Worker 40*ba62d9d3SAndroid Build Coastguard Worker 41*ba62d9d3SAndroid Build Coastguard Worker 42*ba62d9d3SAndroid Build Coastguard Worker # This function describes object files generated by cmc from the given input cm-file. 43*ba62d9d3SAndroid Build Coastguard Worker # If cm-file has changed, it may be required to adjust this function. 44*ba62d9d3SAndroid Build Coastguard Worker function(get_cm_dat_objs file objs) 45*ba62d9d3SAndroid Build Coastguard Worker get_filename_component(name ${src} NAME) 46*ba62d9d3SAndroid Build Coastguard Worker if(name STREQUAL "downscale_kernel_genx.cpp") 47*ba62d9d3SAndroid Build Coastguard Worker set(objs 48*ba62d9d3SAndroid Build Coastguard Worker downscale_kernel_genx_0.dat 49*ba62d9d3SAndroid Build Coastguard Worker downscale_kernel_genx_1.dat 50*ba62d9d3SAndroid Build Coastguard Worker PARENT_SCOPE) 51*ba62d9d3SAndroid Build Coastguard Worker elseif(name STREQUAL "hme_kernel_genx.cpp") 52*ba62d9d3SAndroid Build Coastguard Worker set(objs 53*ba62d9d3SAndroid Build Coastguard Worker hme_kernel_genx_0.dat 54*ba62d9d3SAndroid Build Coastguard Worker hme_kernel_genx_1.dat 55*ba62d9d3SAndroid Build Coastguard Worker hme_kernel_genx_2.dat 56*ba62d9d3SAndroid Build Coastguard Worker PARENT_SCOPE) 57*ba62d9d3SAndroid Build Coastguard Worker elseif(name STREQUAL "downscale_convert_kernel_genx.cpp") 58*ba62d9d3SAndroid Build Coastguard Worker set(objs 59*ba62d9d3SAndroid Build Coastguard Worker downscale_convert_kernel_genx_0.dat 60*ba62d9d3SAndroid Build Coastguard Worker PARENT_SCOPE) 61*ba62d9d3SAndroid Build Coastguard Worker else() 62*ba62d9d3SAndroid Build Coastguard Worker set(objs "" PARENT_SCOPE) 63*ba62d9d3SAndroid Build Coastguard Worker endif() 64*ba62d9d3SAndroid Build Coastguard Worker endfunction() 65*ba62d9d3SAndroid Build Coastguard Worker 66*ba62d9d3SAndroid Build Coastguard Worker # Function parses the given c-file and extracts the value from the defined macro. 67*ba62d9d3SAndroid Build Coastguard Worker # Parser expects the first occurence in the following format: 68*ba62d9d3SAndroid Build Coastguard Worker # "#define name xxx" - whitespaces are important!! 69*ba62d9d3SAndroid Build Coastguard Worker function(get_c_macro_int file name value) 70*ba62d9d3SAndroid Build Coastguard Worker file(STRINGS ${file} value_str REGEX "#define ${name}" LIMIT_COUNT 1) 71*ba62d9d3SAndroid Build Coastguard Worker if(value_str STREQUAL "") # old style version 72*ba62d9d3SAndroid Build Coastguard Worker message(FATAL_ERROR "Failed to find macro ${name} in the file: ${file}") 73*ba62d9d3SAndroid Build Coastguard Worker endif() 74*ba62d9d3SAndroid Build Coastguard Worker string(REPLACE "#define ${name} " "" value_str ${value_str}) 75*ba62d9d3SAndroid Build Coastguard Worker set(${value} ${value_str} PARENT_SCOPE) 76*ba62d9d3SAndroid Build Coastguard Worker endfunction() 77*ba62d9d3SAndroid Build Coastguard Worker 78*ba62d9d3SAndroid Build Coastguard Worker # Function generates kernel for the specified platform. It assumes that generated 79*ba62d9d3SAndroid Build Coastguard Worker # kernel should be placed in the certain directory (see ${krn_dir}). 80*ba62d9d3SAndroid Build Coastguard Worker function(gen_kernel_from_cm name platform index sources) 81*ba62d9d3SAndroid Build Coastguard Worker platform_to_genx(${platform} genx kind) 82*ba62d9d3SAndroid Build Coastguard Worker 83*ba62d9d3SAndroid Build Coastguard Worker set(krn ig${name}krn_g${genx}) 84*ba62d9d3SAndroid Build Coastguard Worker set(krn_dir ${CMAKE_SOURCE_DIR}/media_driver/agnostic/${platform}/codec/kernel_free) 85*ba62d9d3SAndroid Build Coastguard Worker set(out_dir "${CMAKE_CURRENT_BINARY_DIR}/kernels/codec/${platform}") 86*ba62d9d3SAndroid Build Coastguard Worker 87*ba62d9d3SAndroid Build Coastguard Worker message("krn: ${krn}") 88*ba62d9d3SAndroid Build Coastguard Worker message("krn_dir: ${krn_dir}") 89*ba62d9d3SAndroid Build Coastguard Worker message("out_dir: ${out_dir}") 90*ba62d9d3SAndroid Build Coastguard Worker 91*ba62d9d3SAndroid Build Coastguard Worker add_custom_command( 92*ba62d9d3SAndroid Build Coastguard Worker OUTPUT ${out_dir} 93*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E make_directory ${out_dir} 94*ba62d9d3SAndroid Build Coastguard Worker COMMENT "Create codec kernels output directory: ${out_dir}") 95*ba62d9d3SAndroid Build Coastguard Worker 96*ba62d9d3SAndroid Build Coastguard Worker # Compiling all the given sources 97*ba62d9d3SAndroid Build Coastguard Worker set(dats "") 98*ba62d9d3SAndroid Build Coastguard Worker set(cm_genx ${platform}) 99*ba62d9d3SAndroid Build Coastguard Worker if(cm_genx STREQUAL "gen11") 100*ba62d9d3SAndroid Build Coastguard Worker # Forcing gen11lp platform for the whole gen11 family since LP instruction set 101*ba62d9d3SAndroid Build Coastguard Worker # is a subset of other platforms in the family. 102*ba62d9d3SAndroid Build Coastguard Worker set(cm_genx "gen11lp") 103*ba62d9d3SAndroid Build Coastguard Worker endif() 104*ba62d9d3SAndroid Build Coastguard Worker foreach(src ${sources}) 105*ba62d9d3SAndroid Build Coastguard Worker get_cm_dat_objs(${src} objs) # there are other otputs from cmc command, but we use only .dat 106*ba62d9d3SAndroid Build Coastguard Worker add_custom_command( 107*ba62d9d3SAndroid Build Coastguard Worker OUTPUT ${objs} 108*ba62d9d3SAndroid Build Coastguard Worker DEPENDS ${out_dir} ${src} 109*ba62d9d3SAndroid Build Coastguard Worker WORKING_DIRECTORY ${out_dir} 110*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMC} 111*ba62d9d3SAndroid Build Coastguard Worker -c -Qxcm -Qxcm_jit_target=${cm_genx} 112*ba62d9d3SAndroid Build Coastguard Worker -mCM_emit_common_isa -mCM_no_input_reorder -mCM_jit_option="-nocompaction" 113*ba62d9d3SAndroid Build Coastguard Worker ${src} 114*ba62d9d3SAndroid Build Coastguard Worker COMMENT "Compiling ${src}..." 115*ba62d9d3SAndroid Build Coastguard Worker ) 116*ba62d9d3SAndroid Build Coastguard Worker set(dats ${dats} ${objs}) 117*ba62d9d3SAndroid Build Coastguard Worker endforeach() 118*ba62d9d3SAndroid Build Coastguard Worker 119*ba62d9d3SAndroid Build Coastguard Worker # Generating source from the .krn file 120*ba62d9d3SAndroid Build Coastguard Worker get_c_macro_int(${CMAKE_CURRENT_LIST_DIR}/common/codec/kernel/codeckrnheader.h 121*ba62d9d3SAndroid Build Coastguard Worker "IDR_CODEC_TOTAL_NUM_KERNELS" IDR_CODEC_TOTAL_NUM_KERNELS) 122*ba62d9d3SAndroid Build Coastguard Worker add_custom_command( 123*ba62d9d3SAndroid Build Coastguard Worker OUTPUT ${krn_dir}/${krn}.c ${krn_dir}/${krn}.h 124*ba62d9d3SAndroid Build Coastguard Worker DEPENDS KernelBinToSource ${CMAKE_CURRENT_LIST_DIR}/common/codec/kernel/merge.py ${dats} 125*ba62d9d3SAndroid Build Coastguard Worker WORKING_DIRECTORY ${out_dir} 126*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${PYTHON} ${CMAKE_CURRENT_LIST_DIR}/common/codec/kernel/merge.py -o ${krn}.krn ${dats} 127*ba62d9d3SAndroid Build Coastguard Worker # ${index} is needed to match a description in the following file: 128*ba62d9d3SAndroid Build Coastguard Worker # media_driver/agnostic/common/codec/kernel/codeckrnheader.h 129*ba62d9d3SAndroid Build Coastguard Worker COMMAND KernelBinToSource -i ${krn}.krn -o ${krn_dir}/ -v ${krn} -index ${index} -t ${IDR_CODEC_TOTAL_NUM_KERNELS} 130*ba62d9d3SAndroid Build Coastguard Worker COMMENT "Generate source file from krn") 131*ba62d9d3SAndroid Build Coastguard Worker endfunction() 132*ba62d9d3SAndroid Build Coastguard Worker 133*ba62d9d3SAndroid Build Coastguard Worker # Function generates vp cmfc kernel for the specified platform. It assumes that generated 134*ba62d9d3SAndroid Build Coastguard Worker # kernel should be placed in the certain directory (see ${krn_dir}). 135*ba62d9d3SAndroid Build Coastguard Worker function(gen_vpkernel_from_cm name platform) 136*ba62d9d3SAndroid Build Coastguard Worker platform_to_genx(${platform} genx kind) 137*ba62d9d3SAndroid Build Coastguard Worker 138*ba62d9d3SAndroid Build Coastguard Worker set(krn ig${name}krn_g${genx}_${kind}_cmfc) 139*ba62d9d3SAndroid Build Coastguard Worker set(krnpatch ig${name}krn_g${genx}_${kind}_cmfcpatch) 140*ba62d9d3SAndroid Build Coastguard Worker set(krn_dir ${CMAKE_SOURCE_DIR}/media_driver/agnostic/${platform}/vp/kernel_free) 141*ba62d9d3SAndroid Build Coastguard Worker set(link_file ${krn_dir}/component_release/LinkFile.txt) 142*ba62d9d3SAndroid Build Coastguard Worker set(out_dir ${CMAKE_SOURCE_DIR}/media_driver/agnostic/${platform}/vp/kernel_free/cache_kernel) 143*ba62d9d3SAndroid Build Coastguard Worker set(kernel_dir ${out_dir}/kernel) 144*ba62d9d3SAndroid Build Coastguard Worker set(patch_dir ${out_dir}/fcpatch) 145*ba62d9d3SAndroid Build Coastguard Worker set(kernel_hex_dir ${kernel_dir}/hex) 146*ba62d9d3SAndroid Build Coastguard Worker set(patch_hex_dir ${patch_dir}/hex) 147*ba62d9d3SAndroid Build Coastguard Worker set(krn_header ${CMAKE_CURRENT_LIST_DIR}/common/vp/kernel/${name}krnheader.h) 148*ba62d9d3SAndroid Build Coastguard Worker 149*ba62d9d3SAndroid Build Coastguard Worker add_custom_command( 150*ba62d9d3SAndroid Build Coastguard Worker OUTPUT ${out_dir} ${kernel_dir} ${patch_dir} ${kernel_hex_dir} ${patch_hex_dir} 151*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E make_directory ${out_dir} 152*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E make_directory ${kernel_dir} 153*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E make_directory ${patch_dir} 154*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E make_directory ${kernel_hex_dir} 155*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E make_directory ${patch_hex_dir} 156*ba62d9d3SAndroid Build Coastguard Worker COMMENT "Creating VP cmfc kernels output directory") 157*ba62d9d3SAndroid Build Coastguard Worker 158*ba62d9d3SAndroid Build Coastguard Worker # Compiling all the sources in the kernel source directory. 159*ba62d9d3SAndroid Build Coastguard Worker file(GLOB_RECURSE srcs ${krn_dir}/Source/*.cpp) 160*ba62d9d3SAndroid Build Coastguard Worker 161*ba62d9d3SAndroid Build Coastguard Worker set(objsname "") 162*ba62d9d3SAndroid Build Coastguard Worker set(cm_genx ${kind}) 163*ba62d9d3SAndroid Build Coastguard Worker 164*ba62d9d3SAndroid Build Coastguard Worker foreach(src ${srcs}) 165*ba62d9d3SAndroid Build Coastguard Worker get_filename_component(obj ${src} NAME_WE) # there are other outputs from cmc command, but we use only .dat and .fcpatch 166*ba62d9d3SAndroid Build Coastguard Worker if(obj STREQUAL "EOT" OR obj STREQUAL "Secure_Block_Copy") # "EOT" and "Secure_Block_Copy" don't generate the related .fcpatch file. 167*ba62d9d3SAndroid Build Coastguard Worker add_custom_command( 168*ba62d9d3SAndroid Build Coastguard Worker OUTPUT ${out_dir}/${obj}_0.dat 169*ba62d9d3SAndroid Build Coastguard Worker DEPENDS ${src} ${out_dir} 170*ba62d9d3SAndroid Build Coastguard Worker WORKING_DIRECTORY ${out_dir} 171*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMC} 172*ba62d9d3SAndroid Build Coastguard Worker -c -Qxcm -Qxcm_jit_target=${cm_genx} -I ${krn_dir}/Source/ -I ${krn_dir}/Source/Common -I ${krn_dir}/Source/Components 173*ba62d9d3SAndroid Build Coastguard Worker -I ${krn_dir}/Source/Core_Kernels -Qxcm_jit_option="-nocompaction" -mCM_emit_common_isa -mCM_no_input_reorder -mCM_unique_labels=MDF_FC -mCM_printregusage 174*ba62d9d3SAndroid Build Coastguard Worker ${src}) 175*ba62d9d3SAndroid Build Coastguard Worker else() 176*ba62d9d3SAndroid Build Coastguard Worker add_custom_command( 177*ba62d9d3SAndroid Build Coastguard Worker OUTPUT ${out_dir}/${obj}_0.dat ${out_dir}/${obj}.fcpatch 178*ba62d9d3SAndroid Build Coastguard Worker DEPENDS ${src} ${out_dir} 179*ba62d9d3SAndroid Build Coastguard Worker WORKING_DIRECTORY ${out_dir} 180*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMC} 181*ba62d9d3SAndroid Build Coastguard Worker -c -Qxcm -Qxcm_jit_target=${cm_genx} -I ${krn_dir}/Source/ -I ${krn_dir}/Source/Common -I ${krn_dir}/Source/Components 182*ba62d9d3SAndroid Build Coastguard Worker -I ${krn_dir}/Source/Core_Kernels -Qxcm_jit_option="-nocompaction" -mCM_emit_common_isa -mCM_no_input_reorder -mCM_unique_labels=MDF_FC -mCM_printregusage 183*ba62d9d3SAndroid Build Coastguard Worker ${src}) 184*ba62d9d3SAndroid Build Coastguard Worker endif() 185*ba62d9d3SAndroid Build Coastguard Worker set(objsname ${objsname} ${obj}) 186*ba62d9d3SAndroid Build Coastguard Worker endforeach() 187*ba62d9d3SAndroid Build Coastguard Worker 188*ba62d9d3SAndroid Build Coastguard Worker #Generate the .hex files from the .dat files by using KrnToHex. 189*ba62d9d3SAndroid Build Coastguard Worker set(hexs "") 190*ba62d9d3SAndroid Build Coastguard Worker 191*ba62d9d3SAndroid Build Coastguard Worker foreach(objname ${objsname}) 192*ba62d9d3SAndroid Build Coastguard Worker add_custom_command( 193*ba62d9d3SAndroid Build Coastguard Worker OUTPUT ${kernel_dir}/${objname}.krn 194*ba62d9d3SAndroid Build Coastguard Worker DEPENDS ${out_dir}/${objname}_0.dat ${kernel_dir} 195*ba62d9d3SAndroid Build Coastguard Worker WORKING_DIRECTORY ${out_dir} 196*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E copy ${out_dir}/${objname}_0.dat ${kernel_dir}/${objname}.krn 197*ba62d9d3SAndroid Build Coastguard Worker ) 198*ba62d9d3SAndroid Build Coastguard Worker endforeach() 199*ba62d9d3SAndroid Build Coastguard Worker 200*ba62d9d3SAndroid Build Coastguard Worker foreach(objname ${objsname}) 201*ba62d9d3SAndroid Build Coastguard Worker add_custom_command( 202*ba62d9d3SAndroid Build Coastguard Worker OUTPUT ${kernel_hex_dir}/${objname}.hex 203*ba62d9d3SAndroid Build Coastguard Worker DEPENDS KrnToHex ${kernel_dir}/${objname}.krn ${kernel_hex_dir} 204*ba62d9d3SAndroid Build Coastguard Worker WORKING_DIRECTORY ${kernel_dir} 205*ba62d9d3SAndroid Build Coastguard Worker COMMAND KrnToHex ${kernel_dir}/${objname}.krn 206*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E copy ${kernel_dir}/${objname}.hex ${kernel_hex_dir}/${objname}.hex 207*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E remove ${kernel_dir}/${objname}.hex 208*ba62d9d3SAndroid Build Coastguard Worker COMMENT "Generate the hex files of cmfc kernel") 209*ba62d9d3SAndroid Build Coastguard Worker set(hexs ${hexs} ${kernel_hex_dir}/${objname}.hex) 210*ba62d9d3SAndroid Build Coastguard Worker endforeach() 211*ba62d9d3SAndroid Build Coastguard Worker 212*ba62d9d3SAndroid Build Coastguard Worker ##Generate the .hex files from the .fcpatch files by using KrnToHex. 213*ba62d9d3SAndroid Build Coastguard Worker 214*ba62d9d3SAndroid Build Coastguard Worker list(REMOVE_ITEM objsname "EOT" "Secure_Block_Copy") # Remove "EOT" and "Secure_Block_Copy". 215*ba62d9d3SAndroid Build Coastguard Worker 216*ba62d9d3SAndroid Build Coastguard Worker foreach(objname ${objsname}) 217*ba62d9d3SAndroid Build Coastguard Worker add_custom_command( 218*ba62d9d3SAndroid Build Coastguard Worker OUTPUT ${patch_dir}/${objname}.krn 219*ba62d9d3SAndroid Build Coastguard Worker DEPENDS ${out_dir}/${objname}.fcpatch ${patch_dir} 220*ba62d9d3SAndroid Build Coastguard Worker WORKING_DIRECTORY ${out_dir} 221*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E copy ${out_dir}/${objname}.fcpatch ${patch_dir}/${objname}.krn 222*ba62d9d3SAndroid Build Coastguard Worker ) 223*ba62d9d3SAndroid Build Coastguard Worker endforeach() 224*ba62d9d3SAndroid Build Coastguard Worker 225*ba62d9d3SAndroid Build Coastguard Worker set(fcpatch_hexs "") 226*ba62d9d3SAndroid Build Coastguard Worker foreach(objname ${objsname}) 227*ba62d9d3SAndroid Build Coastguard Worker add_custom_command( 228*ba62d9d3SAndroid Build Coastguard Worker OUTPUT ${patch_hex_dir}/${objname}.hex 229*ba62d9d3SAndroid Build Coastguard Worker DEPENDS KrnToHex ${patch_dir}/${objname}.krn ${patch_hex_dir} 230*ba62d9d3SAndroid Build Coastguard Worker WORKING_DIRECTORY ${patch_dir} 231*ba62d9d3SAndroid Build Coastguard Worker COMMAND KrnToHex ${patch_dir}/${objname}.krn 232*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E copy ${patch_dir}/${objname}.hex ${patch_hex_dir}/${objname}.hex 233*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E remove ${patch_dir}/${objname}.hex 234*ba62d9d3SAndroid Build Coastguard Worker COMMENT "Generate the hex files of cmfc patch") 235*ba62d9d3SAndroid Build Coastguard Worker set(fcpatch_hexs ${fcpatch_hexs} ${patch_hex_dir}/${objname}.hex) 236*ba62d9d3SAndroid Build Coastguard Worker endforeach() 237*ba62d9d3SAndroid Build Coastguard Worker 238*ba62d9d3SAndroid Build Coastguard Worker # Generating the .bin files for cmfc kernel and patch respectively. 239*ba62d9d3SAndroid Build Coastguard Worker 240*ba62d9d3SAndroid Build Coastguard Worker add_custom_command( 241*ba62d9d3SAndroid Build Coastguard Worker OUTPUT ${kernel_hex_dir}/${krn}.bin ${krn_header} 242*ba62d9d3SAndroid Build Coastguard Worker DEPENDS GenDmyHex GenKrnBin ${hexs} ${link_file} #Generate the dummy hexs from the pre-built header 243*ba62d9d3SAndroid Build Coastguard Worker WORKING_DIRECTORY ${kernel_hex_dir} 244*ba62d9d3SAndroid Build Coastguard Worker COMMAND GenDmyHex ${kernel_hex_dir} ${krn_header} 245*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E copy ${link_file} ${kernel_hex_dir} 246*ba62d9d3SAndroid Build Coastguard Worker COMMAND GenKrnBin ${kernel_hex_dir} ${name} ${genx} tgllp_cmfc 247*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E copy ${krn}.h ${krn_header}) 248*ba62d9d3SAndroid Build Coastguard Worker 249*ba62d9d3SAndroid Build Coastguard Worker add_custom_command( 250*ba62d9d3SAndroid Build Coastguard Worker OUTPUT ${patch_hex_dir}/${krnpatch}.bin 251*ba62d9d3SAndroid Build Coastguard Worker DEPENDS GenKrnBin ${fcpatch_hexs} ${link_file} 252*ba62d9d3SAndroid Build Coastguard Worker WORKING_DIRECTORY ${patch_hex_dir} 253*ba62d9d3SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E copy ${link_file} ${patch_hex_dir} 254*ba62d9d3SAndroid Build Coastguard Worker COMMAND GenKrnBin ${patch_hex_dir} ${name} ${genx} tgllp_cmfcpatch) 255*ba62d9d3SAndroid Build Coastguard Worker 256*ba62d9d3SAndroid Build Coastguard Worker # Generating kernel source files for cmfc kernel and patch. 257*ba62d9d3SAndroid Build Coastguard Worker 258*ba62d9d3SAndroid Build Coastguard Worker add_custom_command( 259*ba62d9d3SAndroid Build Coastguard Worker OUTPUT ${krn_dir}/cmfc/${krn}.c ${krn_dir}/cmfc/${krn}.h 260*ba62d9d3SAndroid Build Coastguard Worker DEPENDS KernelBinToSource ${kernel_hex_dir}/${krn}.bin 261*ba62d9d3SAndroid Build Coastguard Worker COMMAND KernelBinToSource -i ${kernel_hex_dir}/${krn}.bin -o ${krn_dir}/cmfc) 262*ba62d9d3SAndroid Build Coastguard Worker 263*ba62d9d3SAndroid Build Coastguard Worker add_custom_command( 264*ba62d9d3SAndroid Build Coastguard Worker OUTPUT ${krn_dir}/cmfcpatch/${krnpatch}.c ${krn_dir}/cmfcpatch/${krnpatch}.h 265*ba62d9d3SAndroid Build Coastguard Worker DEPENDS KernelBinToSource ${patch_hex_dir}/${krnpatch}.bin 266*ba62d9d3SAndroid Build Coastguard Worker COMMAND KernelBinToSource -i ${patch_hex_dir}/${krnpatch}.bin -o ${krn_dir}/cmfcpatch) 267*ba62d9d3SAndroid Build Coastguard Worker endfunction() 268*ba62d9d3SAndroid Build Coastguard Worker 269*ba62d9d3SAndroid Build Coastguard Worker # List of kernel sources to build. 270*ba62d9d3SAndroid Build Coastguard Worker # NOTE: Order is important!! It should match the order in which sub-kernels are described 271*ba62d9d3SAndroid Build Coastguard Worker # in the corresponding strcuture in the driver. For example, HME kernel should 272*ba62d9d3SAndroid Build Coastguard Worker # match HmeDsScoreboardKernelHeaderG11 273*ba62d9d3SAndroid Build Coastguard Worker list(APPEND HME_KRN_SOURCES 274*ba62d9d3SAndroid Build Coastguard Worker ${CMAKE_CURRENT_LIST_DIR}/gen11/codec/kernel_free/Source/downscale_kernel_genx.cpp 275*ba62d9d3SAndroid Build Coastguard Worker ${CMAKE_CURRENT_LIST_DIR}/gen11/codec/kernel_free/Source/hme_kernel_genx.cpp 276*ba62d9d3SAndroid Build Coastguard Worker ${CMAKE_CURRENT_LIST_DIR}/gen11/codec/kernel_free/Source/downscale_convert_kernel_genx.cpp) 277*ba62d9d3SAndroid Build Coastguard Worker 278*ba62d9d3SAndroid Build Coastguard Worker get_c_macro_int(${CMAKE_CURRENT_LIST_DIR}/common/codec/kernel/codeckrnheader.h 279*ba62d9d3SAndroid Build Coastguard Worker "IDR_CODEC_HME_DS_SCOREBOARD_KERNEL" IDR_CODEC_HME_DS_SCOREBOARD_KERNEL) 280*ba62d9d3SAndroid Build Coastguard Worker 281*ba62d9d3SAndroid Build Coastguard Worker if(GEN11_ICLLP) 282*ba62d9d3SAndroid Build Coastguard Worker #gen_kernel_from_asm(vp gen11_icllp) 283*ba62d9d3SAndroid Build Coastguard Worker #gen_kernel_from_cm(codec gen11 ${IDR_CODEC_HME_DS_SCOREBOARD_KERNEL} "${HME_KRN_SOURCES}") 284*ba62d9d3SAndroid Build Coastguard Worker endif() 285*ba62d9d3SAndroid Build Coastguard Worker 286*ba62d9d3SAndroid Build Coastguard Worker if(GEN12_TGLLP) 287*ba62d9d3SAndroid Build Coastguard Worker #gen_vpkernel_from_cm(vp gen12_tgllp) 288*ba62d9d3SAndroid Build Coastguard Worker endif() 289*ba62d9d3SAndroid Build Coastguard Workerendif() 290*ba62d9d3SAndroid Build Coastguard Worker 291*ba62d9d3SAndroid Build Coastguard Workermedia_include_subdirectory(common) 292*ba62d9d3SAndroid Build Coastguard Worker 293*ba62d9d3SAndroid Build Coastguard Workerif(GEN8) 294*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(gen8) 295*ba62d9d3SAndroid Build Coastguard Workerendif() 296*ba62d9d3SAndroid Build Coastguard Worker 297*ba62d9d3SAndroid Build Coastguard Workerif(GEN8_BDW) 298*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(gen8_bdw) 299*ba62d9d3SAndroid Build Coastguard Workerendif() 300*ba62d9d3SAndroid Build Coastguard Worker 301*ba62d9d3SAndroid Build Coastguard Workerif(GEN9) 302*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(gen9) 303*ba62d9d3SAndroid Build Coastguard Workerendif() 304*ba62d9d3SAndroid Build Coastguard Worker 305*ba62d9d3SAndroid Build Coastguard Workerif(GEN9_CML) 306*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(gen9_cml) 307*ba62d9d3SAndroid Build Coastguard Workerendif() 308*ba62d9d3SAndroid Build Coastguard Worker 309*ba62d9d3SAndroid Build Coastguard Workerif(GEN9_CMPV) 310*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(gen9_cmpv) 311*ba62d9d3SAndroid Build Coastguard Workerendif() 312*ba62d9d3SAndroid Build Coastguard Worker 313*ba62d9d3SAndroid Build Coastguard Workerif(GEN9_BXT) 314*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(gen9_bxt) 315*ba62d9d3SAndroid Build Coastguard Workerendif() 316*ba62d9d3SAndroid Build Coastguard Worker 317*ba62d9d3SAndroid Build Coastguard Workerif(GEN9_SKL) 318*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(gen9_skl) 319*ba62d9d3SAndroid Build Coastguard Workerendif() 320*ba62d9d3SAndroid Build Coastguard Worker 321*ba62d9d3SAndroid Build Coastguard Workerif(GEN9_GLK) 322*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(gen9_glk) 323*ba62d9d3SAndroid Build Coastguard Workerendif() 324*ba62d9d3SAndroid Build Coastguard Worker 325*ba62d9d3SAndroid Build Coastguard Workerif(GEN9_KBL) 326*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(gen9_kbl) 327*ba62d9d3SAndroid Build Coastguard Workerendif() 328*ba62d9d3SAndroid Build Coastguard Worker 329*ba62d9d3SAndroid Build Coastguard Workerif(GEN11) 330*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(gen11) 331*ba62d9d3SAndroid Build Coastguard Workerendif() 332*ba62d9d3SAndroid Build Coastguard Worker 333*ba62d9d3SAndroid Build Coastguard Workerif(GEN11_ICLLP) 334*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(gen11_icllp) 335*ba62d9d3SAndroid Build Coastguard Workerendif() 336*ba62d9d3SAndroid Build Coastguard Worker 337*ba62d9d3SAndroid Build Coastguard Workerif(GEN11_JSL) 338*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(gen11_jsl_ehl) 339*ba62d9d3SAndroid Build Coastguard Workerendif() 340*ba62d9d3SAndroid Build Coastguard Worker 341*ba62d9d3SAndroid Build Coastguard Workerif(GEN12) 342*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(gen12) 343*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(g12) 344*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(../media_softlet/agnostic/gen12) 345*ba62d9d3SAndroid Build Coastguard Workerendif() 346*ba62d9d3SAndroid Build Coastguard Worker 347*ba62d9d3SAndroid Build Coastguard Workerif(GEN12_TGLLP) 348*ba62d9d3SAndroid Build Coastguard Worker media_include_subdirectory(gen12_tgllp) 349*ba62d9d3SAndroid Build Coastguard Workerendif() 350*ba62d9d3SAndroid Build Coastguard Worker 351*ba62d9d3SAndroid Build Coastguard Workerif(GEN12) 352*ba62d9d3SAndroid Build Coastguard Workermedia_include_subdirectory(Xe_M) 353*ba62d9d3SAndroid Build Coastguard Workermedia_include_subdirectory(Xe_R) 354*ba62d9d3SAndroid Build Coastguard Workerendif() 355*ba62d9d3SAndroid Build Coastguard Worker 356*ba62d9d3SAndroid Build Coastguard Workerinclude(${MEDIA_EXT}/agnostic/media_srcs_ext.cmake OPTIONAL) 357