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;
-    
 }

Reply via email to