Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package level-zero for openSUSE:Factory checked in at 2023-01-20 17:38:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/level-zero (Old) and /work/SRC/openSUSE:Factory/.level-zero.new.32243 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "level-zero" Fri Jan 20 17:38:47 2023 rev:3 rq:1059838 version:1.8.12 Changes: -------- --- /work/SRC/openSUSE:Factory/level-zero/level-zero.changes 2022-10-12 18:27:22.398044073 +0200 +++ /work/SRC/openSUSE:Factory/.level-zero.new.32243/level-zero.changes 2023-01-20 17:39:03.736648022 +0100 @@ -1,0 +2,8 @@ +Sat Jan 7 16:50:24 UTC 2023 - Dirk Müller <[email protected]> + +- update to 1.8.12: + * Add Image View Handle to image map for SetArgument for translating image + handles for multi drivers + * Support for translating images/samplers for multi drivers + +------------------------------------------------------------------- Old: ---- v1.8.8.tar.gz New: ---- v1.8.12.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ level-zero.spec ++++++ --- /var/tmp/diff_new_pack.DLlepw/_old 2023-01-20 17:39:05.444657469 +0100 +++ /var/tmp/diff_new_pack.DLlepw/_new 2023-01-20 17:39:05.448657491 +0100 @@ -1,7 +1,7 @@ # # spec file for package level-zero # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # Copyright (c) 2022 Alessandro de Oliveira Faria (A.K.A CABELO) <[email protected]> # # All modifications and additions to the file contributed by third parties @@ -18,7 +18,7 @@ Name: level-zero -Version: 1.8.8 +Version: 1.8.12 Release: 0 Summary: oneAPI Level Zero Specification Headers and Loader License: MIT ++++++ v1.8.8.tar.gz -> v1.8.12.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/level-zero-1.8.8/CHANGELOG.md new/level-zero-1.8.12/CHANGELOG.md --- old/level-zero-1.8.8/CHANGELOG.md 2022-10-06 22:15:55.000000000 +0200 +++ new/level-zero-1.8.12/CHANGELOG.md 2022-12-12 18:50:17.000000000 +0100 @@ -1,5 +1,9 @@ # Level zero loader changelog +## v1.8.12 +* Add Image View Handle to image map for SetArgument for translating image handles for multi drivers +* Support for translating images/samplers for multi drivers + ## v1.8.8 * Update Extension and Experimental Features to return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE instead of ZE_RESULT_ERROR_UNINITIALIZED when not found. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/level-zero-1.8.8/scripts/templates/ldrddi.cpp.mako new/level-zero-1.8.12/scripts/templates/ldrddi.cpp.mako --- old/level-zero-1.8.8/scripts/templates/ldrddi.cpp.mako 2022-10-06 22:15:55.000000000 +0200 +++ new/level-zero-1.8.12/scripts/templates/ldrddi.cpp.mako 2022-12-12 18:50:17.000000000 +0100 @@ -30,6 +30,11 @@ %>${th.append_ws(_factory_t, 35)} ${_factory}; %endif %endfor + %if re.match(r"ze_ldrddi", name): + /////////////////////////////////////////////////////////////////////////////// + std::unordered_map<ze_image_object_t *, ze_image_handle_t> image_handle_map; + std::unordered_map<ze_sampler_object_t *, ze_sampler_handle_t> sampler_handle_map; + %endif %for obj in th.extract_objs(specs, r"function"): /////////////////////////////////////////////////////////////////////////////// @@ -126,15 +131,38 @@ %>for( size_t i = ${item['range'][0]}; ( nullptr != ${item['name']} ) && ( i < ${item['range'][1]} ); ++i ) ${item['name']}Local[ i ] = reinterpret_cast<${item['obj']}*>( ${item['name']}[ i ] )->handle; %else: - // convert loader handle to driver handle %if item['optional']: + // convert loader handle to driver handle ${item['name']} = ( ${item['name']} ) ? reinterpret_cast<${item['obj']}*>( ${item['name']} )->handle : nullptr; %else: + %if re.match(r"\w+ImageDestroy$", th.make_func_name(n, tags, obj)): + // remove the handle from the kernel arugment map + image_handle_map.erase(reinterpret_cast<ze_image_object_t*>(hImage)); + %endif + %if re.match(r"\w+SamplerDestroy$", th.make_func_name(n, tags, obj)): + // remove the handle from the kernel arugment map + sampler_handle_map.erase(reinterpret_cast<ze_sampler_object_t*>(hSampler)); + %endif + // convert loader handle to driver handle ${item['name']} = reinterpret_cast<${item['obj']}*>( ${item['name']} )->handle; %endif %endif %endfor + %if re.match(r"\w+KernelSetArgumentValue$", th.make_func_name(n, tags, obj)): + // convert pArgValue to correct handle if applicable + void *internalArgValue = const_cast<void *>(pArgValue); + if (pArgValue) { + // check if the arg value is a translated handle + ze_image_object_t **imageHandle = static_cast<ze_image_object_t **>(internalArgValue); + ze_sampler_object_t **samplerHandle = static_cast<ze_sampler_object_t **>(internalArgValue); + if( image_handle_map.find(*imageHandle) != image_handle_map.end() ) { + internalArgValue = &image_handle_map[*imageHandle]; + } else if( sampler_handle_map.find(*samplerHandle) != sampler_handle_map.end() ) { + internalArgValue = &sampler_handle_map[*samplerHandle]; + } + } + %endif // forward to device-driver %if add_local: result = ${th.make_pfn_name(n, tags, obj)}( ${", ".join(th.make_param_lines(n, tags, obj, format=["name", "local"]))} ); @@ -142,8 +170,12 @@ delete []${array_name}; %endfor %else: + %if re.match(r"\w+KernelSetArgumentValue$", th.make_func_name(n, tags, obj)): + result = pfnSetArgumentValue( hKernel, argIndex, argSize, const_cast<const void *>(internalArgValue) ); + %else: result = ${th.make_pfn_name(n, tags, obj)}( ${", ".join(th.make_param_lines(n, tags, obj, format=["name"]))} ); %endif + %endif <% del arrays_to_delete del add_local%> @@ -171,8 +203,19 @@ *${item['name']} = reinterpret_cast<${item['type']}>( ${item['factory']}.getInstance( *${item['name']}, dditable ) ); %else: + %if re.match(r"\w+ImageCreate$", th.make_func_name(n, tags, obj)) or re.match(r"\w+SamplerCreate$", th.make_func_name(n, tags, obj)) or re.match(r"\w+ImageViewCreateExp$", th.make_func_name(n, tags, obj)): + ${item['type']} internalHandlePtr = *${item['name']}; + %endif *${item['name']} = reinterpret_cast<${item['type']}>( ${item['factory']}.getInstance( *${item['name']}, dditable ) ); + %if re.match(r"\w+ImageCreate$", th.make_func_name(n, tags, obj)) or re.match(r"\w+ImageViewCreateExp$", th.make_func_name(n, tags, obj)): + // convert loader handle to driver handle and store in map + image_handle_map.insert({ze_image_factory.getInstance( internalHandlePtr, dditable ), internalHandlePtr}); + %endif + %if re.match(r"\w+SamplerCreate$", th.make_func_name(n, tags, obj)): + // convert loader handle to driver handle and store in map + sampler_handle_map.insert({ze_sampler_factory.getInstance( internalHandlePtr, dditable ), internalHandlePtr}); + %endif %endif %endif } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/level-zero-1.8.8/source/loader/ze_ldrddi.cpp new/level-zero-1.8.12/source/loader/ze_ldrddi.cpp --- old/level-zero-1.8.8/source/loader/ze_ldrddi.cpp 2022-10-06 22:15:55.000000000 +0200 +++ new/level-zero-1.8.12/source/loader/ze_ldrddi.cpp 2022-12-12 18:50:17.000000000 +0100 @@ -28,6 +28,9 @@ ze_physical_mem_factory_t ze_physical_mem_factory; ze_fabric_vertex_factory_t ze_fabric_vertex_factory; ze_fabric_edge_factory_t ze_fabric_edge_factory; + /////////////////////////////////////////////////////////////////////////////// + std::unordered_map<ze_image_object_t *, ze_image_handle_t> image_handle_map; + std::unordered_map<ze_sampler_object_t *, ze_sampler_handle_t> sampler_handle_map; /////////////////////////////////////////////////////////////////////////////// /// @brief Intercept function for zeInit @@ -2451,8 +2454,11 @@ try { // convert driver handle to loader handle + ze_image_handle_t internalHandlePtr = *phImage; *phImage = reinterpret_cast<ze_image_handle_t>( ze_image_factory.getInstance( *phImage, dditable ) ); + // convert loader handle to driver handle and store in map + image_handle_map.insert({ze_image_factory.getInstance( internalHandlePtr, dditable ), internalHandlePtr}); } catch( std::bad_alloc& ) { @@ -2477,6 +2483,8 @@ if( nullptr == pfnDestroy ) return ZE_RESULT_ERROR_UNINITIALIZED; + // remove the handle from the kernel arugment map + image_handle_map.erase(reinterpret_cast<ze_image_object_t*>(hImage)); // convert loader handle to driver handle hImage = reinterpret_cast<ze_image_object_t*>( hImage )->handle; @@ -3266,8 +3274,20 @@ // convert loader handle to driver handle hKernel = reinterpret_cast<ze_kernel_object_t*>( hKernel )->handle; + // convert pArgValue to correct handle if applicable + void *internalArgValue = const_cast<void *>(pArgValue); + if (pArgValue) { + // check if the arg value is a translated handle + ze_image_object_t **imageHandle = static_cast<ze_image_object_t **>(internalArgValue); + ze_sampler_object_t **samplerHandle = static_cast<ze_sampler_object_t **>(internalArgValue); + if( image_handle_map.find(*imageHandle) != image_handle_map.end() ) { + internalArgValue = &image_handle_map[*imageHandle]; + } else if( sampler_handle_map.find(*samplerHandle) != sampler_handle_map.end() ) { + internalArgValue = &sampler_handle_map[*samplerHandle]; + } + } // forward to device-driver - result = pfnSetArgumentValue( hKernel, argIndex, argSize, pArgValue ); + result = pfnSetArgumentValue( hKernel, argIndex, argSize, const_cast<const void *>(internalArgValue) ); return result; } @@ -3766,8 +3786,11 @@ try { // convert driver handle to loader handle + ze_sampler_handle_t internalHandlePtr = *phSampler; *phSampler = reinterpret_cast<ze_sampler_handle_t>( ze_sampler_factory.getInstance( *phSampler, dditable ) ); + // convert loader handle to driver handle and store in map + sampler_handle_map.insert({ze_sampler_factory.getInstance( internalHandlePtr, dditable ), internalHandlePtr}); } catch( std::bad_alloc& ) { @@ -3792,6 +3815,8 @@ if( nullptr == pfnDestroy ) return ZE_RESULT_ERROR_UNINITIALIZED; + // remove the handle from the kernel arugment map + sampler_handle_map.erase(reinterpret_cast<ze_sampler_object_t*>(hSampler)); // convert loader handle to driver handle hSampler = reinterpret_cast<ze_sampler_object_t*>( hSampler )->handle; @@ -4269,8 +4294,11 @@ try { // convert driver handle to loader handle + ze_image_handle_t internalHandlePtr = *phImageView; *phImageView = reinterpret_cast<ze_image_handle_t>( ze_image_factory.getInstance( *phImageView, dditable ) ); + // convert loader handle to driver handle and store in map + image_handle_map.insert({ze_image_factory.getInstance( internalHandlePtr, dditable ), internalHandlePtr}); } catch( std::bad_alloc& ) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/level-zero-1.8.8/source/loader/ze_loader.h new/level-zero-1.8.12/source/loader/ze_loader.h --- old/level-zero-1.8.8/source/loader/ze_loader.h 2022-10-06 22:15:55.000000000 +0200 +++ new/level-zero-1.8.12/source/loader/ze_loader.h 2022-12-12 18:50:17.000000000 +0100 @@ -7,6 +7,7 @@ */ #pragma once #include <vector> +#include <map> #include "ze_ddi.h" #include "zet_ddi.h" @@ -58,5 +59,4 @@ extern context_t *context; extern ze_event_factory_t ze_event_factory; - }
