[Beignet] [PATCH] Add the pci id support for gbe_generate

Yang, Rong R rong.r.yang at intel.com
Tue May 20 00:57:01 PDT 2014


This patch detect the building platform's pci id and generate the bin for host when building, it is necessary to generate the corresponding binary for IVB and HSW.
I think support cross platform bin generate and use a string in command line is next step.

-----Original Message-----
From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of Song, Ruiling
Sent: Tuesday, May 20, 2014 2:35 PM
To: He Junyan; beignet at lists.freedesktop.org
Cc: Junyan He
Subject: Re: [Beignet] [PATCH] Add the pci id support for gbe_generate

You directly use pcid, right?
What about changing to use a string as the command argument. Like 'ivb', 'hsw'?
That would be meaningful for users.

Thanks!
Ruiling

-----Original Message-----
From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of He Junyan
Sent: Tuesday, May 20, 2014 1:33 PM
To: beignet at lists.freedesktop.org
Cc: Junyan He
Subject: Re: [Beignet] [PATCH] Add the pci id support for gbe_generate

ping for review

On Tue, 2014-05-13 at 09:34 +0800, junyan.he at inbox.com wrote:
> From: Junyan He <junyan.he at linux.intel.com>
> 
> Signed-off-by: Junyan He <junyan.he at linux.intel.com>
> ---
>  backend/src/gbe_bin_generater.cpp |   20 +++++++++++++++++++-
>  src/CMakeLists.txt                |    8 +++++++-
>  src/GetGenID.sh                   |    2 ++
>  utests/CMakeLists.txt             |    7 ++++++-
>  4 files changed, 34 insertions(+), 3 deletions(-)  create mode 100755 
> src/GetGenID.sh
> 
> diff --git a/backend/src/gbe_bin_generater.cpp
> b/backend/src/gbe_bin_generater.cpp
> index 15bdbd1..b6248ae 100644
> --- a/backend/src/gbe_bin_generater.cpp
> +++ b/backend/src/gbe_bin_generater.cpp
> @@ -46,6 +46,8 @@ using namespace std;  #define FILE_BUILD_FAILED 3 
> #define FILE_SERIALIZATION_FAILED 4
>  
> +static int gen_pci_id = 0;
> +
>  class program_build_instance {
>  
>  protected:
> @@ -249,7 +251,7 @@ int main (int argc, const char **argv)
>          argv_saved.push_back(string(argv[i]));
>      }
>  
> -    while ( (oc = getopt(argc, (char * const *)argv, "o:p:s")) != -1 ) {
> +    while ( (oc = getopt(argc, (char * const *)argv, "t:o:p:s")) !=
> + -1 ) {
>          switch (oc) {
>          case 'p':
>          {
> @@ -283,6 +285,22 @@ int main (int argc, const char **argv)
>              used_index[optind-1] = 1;
>              break;
>  
> +        case 't':
> +        {
> +            char *s = optarg;
> +            if (optarg[0] == '0' && (optarg[1] == 'x' || optarg[1] == 'X'))
> +            s += 2;
> +
> +            if (s[0] < '0' || s[0] > '9') {
> +                cout << "Invalid target option argument" << endl;
> +                return 1;
> +            }
> +
> +            gen_pci_id = (s[0] - '0') << 12 | (s[1] - '0') << 8 | (s[2] - '0') << 4 | (s[3] - '0');
> +            used_index[optind-1] = 1;
> +            break;
> +        }
> +
>          case 's':
>              program_build_instance::set_str_fmt_out(true);
>              used_index[optind-1] = 1; diff --git a/src/CMakeLists.txt 
> b/src/CMakeLists.txt index 8164a44..f93ddcd 100644
> --- a/src/CMakeLists.txt
> +++ b/src/CMakeLists.txt
> @@ -4,6 +4,12 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}
>                      ${CMAKE_CURRENT_SOURCE_DIR}/../backend/src/backend/
>                      ${CMAKE_CURRENT_SOURCE_DIR}/../include
>                      ${MESA_SOURCE_INCLUDES})
> +
> +set(GEN_PCI_ID)
> +execute_process(COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/GetGenID.sh"
> +    OUTPUT_VARIABLE GEN_PCI_ID)
> +message(STATUS "Platform Gen PCI id is " ${GEN_PCI_ID})
> +
>  macro (MakeKernelBinStr KERNEL_PATH KERNEL_FILES)  foreach (KF
> ${KERNEL_FILES})
>    set (input_file ${KERNEL_PATH}/${KF}.cl) @@ -12,7 +18,7 @@ foreach 
> (KF ${KERNEL_FILES})
>    add_custom_command(
>      OUTPUT ${output_file}
>      COMMAND rm -rf ${output_file}
> -    COMMAND ${GBE_BIN_GENERATER} -s ${input_file} -o${output_file}
> +    COMMAND ${GBE_BIN_GENERATER} -s ${input_file} -o${output_file} 
> + -t${GEN_PCI_ID}
>      DEPENDS ${input_file}
> ${CMAKE_CURRENT_BINARY_DIR}/../backend/src/gbe_bin_generater)
>  endforeach (KF)
>  endmacro (MakeKernelBinStr)
> diff --git a/src/GetGenID.sh b/src/GetGenID.sh new file mode 100755 
> index 0000000..3114bd8
> --- /dev/null
> +++ b/src/GetGenID.sh
> @@ -0,0 +1,2 @@
> +#!/bin/bash
> +lspci -nn | grep "Gen .* Graphics" -i  | grep "\[8086:.*\]" -o | awk -F : '{print $2}' | awk -F ] '{print $1}'
> diff --git a/utests/CMakeLists.txt b/utests/CMakeLists.txt index
> 704438d..2a9ea66 100644
> --- a/utests/CMakeLists.txt
> +++ b/utests/CMakeLists.txt
> @@ -180,10 +180,15 @@ set (utests_sources
>    utest_file_map.cpp
>    utest_helper.cpp)
>  
> +set(GEN_PCI_ID)
> +execute_process(COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/GetGenID.sh"
> +    OUTPUT_VARIABLE GEN_PCI_ID)
> +
> +message(STATUS "Platform Gen PCI id is " ${GEN_PCI_ID})
>  SET (kernel_bin ${CMAKE_CURRENT_SOURCE_DIR}/../kernels/compiler_ceil)
>  ADD_CUSTOM_COMMAND(
>      OUTPUT ${kernel_bin}.bin
> -    COMMAND ${GBE_BIN_GENERATER} ${kernel_bin}.cl -o${kernel_bin}.bin
> +    COMMAND ${GBE_BIN_GENERATER} ${kernel_bin}.cl -o${kernel_bin}.bin 
> + -t${GEN_PCI_ID}
>      DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/../backend/src/gbe_bin_generater ${kernel_bin}.cl
>      )
>  



_______________________________________________
Beignet mailing list
Beignet at lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/beignet
_______________________________________________
Beignet mailing list
Beignet at lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list