diff --git a/media_driver/agnostic/common/vp/hal/vphal_render_composite.cpp b/media_driver/agnostic/common/vp/hal/vphal_render_composite.cpp index c9f6108fe71..272c32b2ed2 100644 --- a/media_driver/agnostic/common/vp/hal/vphal_render_composite.cpp +++ b/media_driver/agnostic/common/vp/hal/vphal_render_composite.cpp @@ -3321,6 +3321,11 @@ int32_t CompositeState::SetLayer( //----------------------------------- for (i = 0; i < iSurfaceEntries; i++, iBTentry++) { + if (pSurfaceEntries[i] == nullptr) + { + continue; + } + // Obtain Sampler ID and Type eStatus = GetSamplerIndex(pSurfaceEntries[i], &iSamplerID, @@ -3370,7 +3375,10 @@ int32_t CompositeState::SetLayer( if (iSamplerID == VPHAL_SAMPLER_Y && pSource->bUseSamplerLumakey) { - if (IsNV12SamplerLumakeyNeeded(pSource, pRenderHal)) + //From Gen10,HW support 1 plane LumaKey process on NV12 format, Gen9 only support 2 plane LumaKey process + //if go to 1 plane, MHW_GFX3DSTATE_SURFACEFORMAT_PLANAR_420_8 format will be used, LumaKey value need to be set on Y channel, the corresponding bit range is 15:8 + //if go to 2 plane, MHW_GFX3DSTATE_SURFACEFORMAT_R8_UNORM format will be used, LumaKey value need to be set on R channel, the corresponding bit range is 23:16 + if (IsNV12SamplerLumakeyNeeded(pSource, pRenderHal) || (pSurfaceEntries[i]->dwFormat == MHW_GFX3DSTATE_SURFACEFORMAT_R8_UNORM)) { dwLow = pSource->pLumaKeyParams->LumaLow << 16; dwHigh = (pSource->pLumaKeyParams->LumaHigh << 16) | 0xFF00FFFF; diff --git a/media_driver/agnostic/common/vp/hal/vphal_render_renderstate.h b/media_driver/agnostic/common/vp/hal/vphal_render_renderstate.h index 24fed3b0c68..1cb36e98026 100644 --- a/media_driver/agnostic/common/vp/hal/vphal_render_renderstate.h +++ b/media_driver/agnostic/common/vp/hal/vphal_render_renderstate.h @@ -102,12 +102,6 @@ class RenderpassData return TempOutputSurfaces[uiOutSurfaceIndex]; } - // remove it after refactoring - PVPHAL_SURFACE GetTempOutputSurfaceByIndex(uint32_t index) - { - return TempOutputSurfaces[index]; - } - void MoveToNextTempOutputSurface() { uiOutSurfaceIndex++; diff --git a/media_driver/agnostic/gen11/vp/hal/vphal_render_vebox_g11_base.cpp b/media_driver/agnostic/gen11/vp/hal/vphal_render_vebox_g11_base.cpp index 9e221d35fb9..23c1ca680ad 100644 --- a/media_driver/agnostic/gen11/vp/hal/vphal_render_vebox_g11_base.cpp +++ b/media_driver/agnostic/gen11/vp/hal/vphal_render_vebox_g11_base.cpp @@ -2664,6 +2664,11 @@ bool VPHAL_VEBOX_STATE_G11_BASE::IsRTFormatSupported( bRet = true; } + if (pRTSurface->Format == Format_P010) + { + bRet = true; + } + return bRet; } diff --git a/media_driver/agnostic/gen11_icllp/vp/kernel/README.md b/media_driver/agnostic/gen11_icllp/vp/kernel/README.md new file mode 100644 index 00000000000..a3b10c9ea88 --- /dev/null +++ b/media_driver/agnostic/gen11_icllp/vp/kernel/README.md @@ -0,0 +1,132 @@ +# Media Driver Open Source Kernel + +## Step1: Building IGA (Intel Graphics Assembler) + +1. Download or clone IGC (Intel Graphics Compiler) + + https://github.com/intel/intel-graphics-compiler.git + +2. Chdir into 'intel-graphics-compiler' (or any other workspace folder of choice) + + It should read the following folder strucutre: + + workspace + |- visa + |- IGC + |- inc + |- 3d + |- skuwa + +3. Chdir into IGA sub-component +``` + cd visa/iga +``` +4. Create build directory +``` + mkdir build +``` +5. Change into build directory +``` + cd build +``` +6. Run cmake +``` + cmake ../ +``` +7. Run make to build IGA project +``` + make +``` +8. Get the output executable "iga64" in IGAExe folder + + +## Step2: Building the other post processing tools + +1. Download or clone Tool + + https://github.com/intel/media-driver + +2. Chdir into "Tools/MediaDriverTools/GenKrnBin" + +3. Create build directory +``` + mkdir build +``` +5. Change into build directory +``` + cd build +``` +6. Run cmake +``` + cmake ../ +``` +7. Run make to build GenKrnBin project +``` + make +``` +8. Get the output executable "GenKrnBin" in build folder + +9. Chdir into "Tools/MediaDriverTools/KernelBinToSource" + +10. Create build directory +``` + mkdir build +``` +11. Change into build directory + + cd build + +12. Run cmake +``` + cmake ../ +``` +13. Run make to build KernelBinToSource project +``` + make +``` +14. Get the output executable "KernelBinToSource" in build folder + +15. Chdir into "Tools/MediaDriverTools/KrnToHex_IGA" + +16. Create build directory +``` + mkdir build +``` +17. Change into build directory +``` + cd build +``` +18. Run cmake +``` + cmake ../ +``` +19. Run make to build KrnToHex_IGA project +``` + make +``` +20. Get the output executable "KrnToHex_IGA" in build folder + + +## Step3: Building the kernel asm code to igvpkrn_g11_icllp.c and igvpkrn_g11_icllp.h + +1. Download or clone Driver source code + + https://github.com/intel/media-driver + +2. Chdir into "./agnostic/gen11_icllp/vp/kernel" + +3. Create compile directory +``` + mkdir compile +``` +4. Copy tool biniary (GenKrnBin, KernelBinToSource and KrnToHex_IGA) from step2 to compile folder + +3. Create IGA directory +``` + mkdir IGA +``` +5. Copy tool biniary (iga64) from step1 to IGA folder + +6. Chdir into "./agnostic/gen11_icllp/vp/kernel" + +7. run build.py script to generate igvpkrn_g11_icllp.c and igvpkrn_g11_icllp.h \ No newline at end of file