Reviewed-by: Liming Gao
> -Original Message-
> From: Zhu, Yonghong
> Sent: Monday, October 17, 2016 5:46 PM
> To: edk2-devel@lists.01.org
> Cc: Gao, Liming
> Subject: [Patch] BaseTools: Enhance tool to generate
> EFI_HII_IIBT_DUPLICATE image block
>
> When *.IDF file contains multiple definitions of image which point to the
> same image, current build tool generates multiple image blocks which
> contain the same image content.
> This patch enhance tool to generate EFI_HII_IIBT_DUPLICATE image blocks
> for non-first images for such case, to save the HII package size.
>
> Fixes: https://bugzilla.tianocore.org/show_bug.cgi?id=145
>
> Cc: Liming Gao
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Yonghong Zhu
> ---
> BaseTools/Source/Python/AutoGen/GenC.py | 14 ++
> 1 file changed, 14 insertions(+)
>
> diff --git a/BaseTools/Source/Python/AutoGen/GenC.py
> b/BaseTools/Source/Python/AutoGen/GenC.py
> index 8089e3a..de6eb0e 100644
> --- a/BaseTools/Source/Python/AutoGen/GenC.py
> +++ b/BaseTools/Source/Python/AutoGen/GenC.py
> @@ -1637,10 +1637,11 @@ def CreateIdfFileCode(Info, AutoGenC, StringH,
> IdfGenCFlag, IdfGenBinBuffer):
> PaletteInfoOffset = 0
> ImageBuffer = pack('x')
> PaletteBuffer = pack('x')
> BufferStr = ''
> PaletteStr = ''
> +FileDict = {}
> for Idf in ImageFiles.ImageFilesDict:
> if ImageFiles.ImageFilesDict[Idf]:
> for FileObj in ImageFiles.ImageFilesDict[Idf]:
> for sourcefile in Info.SourceFileList:
> if FileObj.FileName == sourcefile.File:
> @@ -1661,10 +1662,23 @@ def CreateIdfFileCode(Info, AutoGenC, StringH,
> IdfGenCFlag, IdfGenBinBuffer):
> if (ValueStartPtr - len(DEFINE_STR + ID)) <= 0:
> Line = DEFINE_STR + ' ' + ID + ' ' +
> DecToHexStr(Index, 4) +
> '\n'
> else:
> Line = DEFINE_STR + ' ' + ID + ' ' *
> (ValueStartPtr -
> len(DEFINE_STR + ID)) + DecToHexStr(Index, 4) + '\n'
>
> +if File not in FileDict:
> +FileDict[File] = Index
> +else:
> +DuplicateBlock = pack('B',
> EFI_HII_IIBT_DUPLICATE)
> +DuplicateBlock += pack('H', FileDict[File])
> +ImageBuffer += DuplicateBlock
> +BufferStr = WriteLine(BufferStr, '// %s: %s:
> %s' %
> (DecToHexStr(Index, 4), ID, DecToHexStr(Index, 4)))
> +TempBufferList = AscToHexList(DuplicateBlock)
> +BufferStr = WriteLine(BufferStr,
> CreateArrayItem(TempBufferList, 16) + '\n')
> +StringH.Append(Line)
> +Index += 1
> +continue
> +
> TmpFile = open(File.Path, 'rb')
> Buffer = TmpFile.read()
> TmpFile.close()
> if File.Ext.upper() == '.PNG':
> TempBuffer = pack('B',
> EFI_HII_IIBT_IMAGE_PNG)
> --
> 2.6.1.windows.1
___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel