Bläddra i källkod

Fix Proton bleeding-edge compilation

Kron4ek 1 vecka sedan
förälder
incheckning
b8f1233d2a
2 ändrade filer med 479 tillägg och 0 borttagningar
  1. 1 0
      build_wine.sh
  2. 478 0
      proton-opencl.patch

+ 1 - 0
build_wine.sh

@@ -228,6 +228,7 @@ elif [ "$WINE_BRANCH" = "proton" ]; then
 
 	WINE_VERSION="$(cat wine/VERSION | tail -c +14)-$(git -C wine rev-parse --short HEAD)"
 	if [[ "${PROTON_BRANCH}" == "experimental_"* ]] || [ "${PROTON_BRANCH}" = "bleeding-edge" ]; then
+		patch -d wine -Np1 < "${scriptdir}"/proton-opencl.patch
 		BUILD_NAME=proton-exp-"${WINE_VERSION}"
 	else
 		BUILD_NAME=proton-"${WINE_VERSION}"

+ 478 - 0
proton-opencl.patch

@@ -0,0 +1,478 @@
+--- b/configure.ac
++++ a/configure.ac
+@@ -1418,6 +1418,15 @@
+                      [enable_winex11_drv])
+ fi
+ 
++dnl **** Check for OpenCL ****
++if test "$ac_cv_header_CL_cl_h" = "yes"
++then
++    AC_CHECK_LIB(OpenCL,clGetPlatformInfo,[AC_SUBST(OPENCL_LIBS,["-lOpenCL"])])
++fi
++WINE_NOTICE_WITH(opencl,[test "x$ac_cv_lib_OpenCL_clGetPlatformInfo" != xyes],
++                 [OpenCL ${notice_platform}development files not found, OpenCL won't be supported.],
++                 [enable_opencl])
++
+ dnl **** Check for libpcap ****
+ if test "$ac_cv_header_pcap_pcap_h" = "yes"
+ then
+--- b/dlls/opencl/unix_private.h
++++ a/dlls/opencl/unix_private.h
+@@ -38,12 +38,8 @@
+ #define CL_USE_DEPRECATED_OPENCL_2_0_APIS
+ #define CL_TARGET_OPENCL_VERSION 220
+ #include <CL/cl.h>
+-#define HAVE_OPENCL
+ #elif defined(HAVE_OPENCL_OPENCL_H)
+ #include <OpenCL/opencl.h>
+-#define HAVE_OPENCL
+-#else
+-#include "opencl_types.h"
+ #endif
+ 
+ #include "unixlib.h"
+--- b/dlls/opencl/unix_thunks.c
++++ a/dlls/opencl/unix_thunks.c
+@@ -7,7 +7,6 @@
+ #include "config.h"
+ #include "unix_private.h"
+ 
+-#ifdef HAVE_OPENCL
+ static NTSTATUS wrap_clCreateBuffer( void *args )
+ {
+     struct clCreateBuffer_params *params = args;
+@@ -565,401 +564,6 @@
+ 
+     return clWaitForEvents( params->num_events, params->event_list );
+ }
+-#else
+-static NTSTATUS wrap_clCreateBuffer( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clCreateCommandQueue( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clCreateImage( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clCreateImage2D( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clCreateImage3D( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clCreateKernel( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clCreateKernelsInProgram( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clCreateProgramWithBinary( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clCreateProgramWithBuiltInKernels( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clCreateProgramWithSource( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clCreateSampler( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clCreateSubBuffer( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clCreateSubDevices( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clCreateUserEvent( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueBarrier( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueBarrierWithWaitList( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueCopyBuffer( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueCopyBufferRect( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueCopyBufferToImage( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueCopyImage( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueCopyImageToBuffer( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueFillBuffer( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueFillImage( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueMapBuffer( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueMapImage( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueMarker( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueMarkerWithWaitList( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueMigrateMemObjects( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueNDRangeKernel( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueReadBuffer( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueReadBufferRect( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueReadImage( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueTask( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueUnmapMemObject( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueWaitForEvents( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueWriteBuffer( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueWriteBufferRect( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clEnqueueWriteImage( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clFinish( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clFlush( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetCommandQueueInfo( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetContextInfo( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetDeviceIDs( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetDeviceInfo( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetEventInfo( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetEventProfilingInfo( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetImageInfo( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetKernelArgInfo( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetKernelInfo( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetKernelWorkGroupInfo( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetMemObjectInfo( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetPlatformIDs( void *args )
+-{
+-    struct clGetPlatformIDs_params *params = args;
+-
+-    if (params->num_platforms) *params->num_platforms = 0;
+-    return CL_SUCCESS;
+-}
+-
+-static NTSTATUS wrap_clGetPlatformInfo( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetProgramBuildInfo( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetProgramInfo( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetSamplerInfo( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clGetSupportedImageFormats( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clReleaseCommandQueue( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clReleaseContext( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clReleaseDevice( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clReleaseEvent( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clReleaseKernel( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clReleaseMemObject( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clReleaseProgram( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clReleaseSampler( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clRetainCommandQueue( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clRetainContext( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clRetainDevice( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clRetainEvent( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clRetainKernel( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clRetainMemObject( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clRetainProgram( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clRetainSampler( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clSetKernelArg( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clSetUserEventStatus( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clUnloadCompiler( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clUnloadPlatformCompiler( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-static NTSTATUS wrap_clWaitForEvents( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-#endif
+ 
+ const unixlib_entry_t __wine_unix_call_funcs[] =
+ {
+--- b/dlls/opencl/unix_wrappers.c
++++ a/dlls/opencl/unix_wrappers.c
+@@ -26,7 +26,6 @@
+ 
+ WINE_DEFAULT_DEBUG_CHANNEL(opencl);
+ 
+-#ifdef HAVE_OPENCL
+ NTSTATUS wrap_clBuildProgram( void *args )
+ {
+     struct clBuildProgram_params *params = args;
+@@ -55,22 +54,6 @@
+                                                  NULL, NULL, params->errcode_ret );
+     return STATUS_SUCCESS;
+ }
+-#else
+-NTSTATUS wrap_clBuildProgram( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-NTSTATUS wrap_clCreateContext( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-
+-NTSTATUS wrap_clCreateContextFromType( void *args )
+-{
+-    return CL_INVALID_OPERATION;
+-}
+-#endif
+ 
+ NTSTATUS wrap_clEnqueueNativeKernel( void *args )
+ {