-
-
Notifications
You must be signed in to change notification settings - Fork 82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The procedure entry point clCreateFromGLBuffer could not be located in the dynamic link library OpenCL.dll #88
Comments
An important note I forgot: I have installed "Intel CPU Runtime for OpenCL Applications 18.1 for Windows OS (64bit or 32bit)" - Should I maybe uninstall that? CPU is 16 core Intel Xeon / Coffee Lake / E-2288G CPU @ 3.70GHz |
I guess I do need the above runtime, because otherwise there is no opencl.dll in the Windows system directories. I tried the other Intel OpenCL installer, but that appears to be for Intel CPU's with onboard Graphics. The OpenCL test/benchmark program ViennaCLBench fails to run with that, but runs with the runtime that I linked in the post above this one. The MESA docs say that it should be completely overriding all OpenCL calls anyway. I can't test MESA with ViennaCLBench because it's a 32 bit program, and the x86 builds of clover have failed so far in MESA. ;) Here's Resolve 15.3.1 free/trial if you want to test it. |
Hey! Thanks for the reply! :) Unfortunately, I couldn't get it to work. Resolve now starts like there is no OpenCL on the system, and gives the message, ""DaVinci Resolve could not find any OpenCL capable GPUs." What files should not be in the program directory? Here's what I've got so far: Made directory Copied in the following:
Created Dword32 entry In the Resolve application directory, I have:
All MESA files from 21.3.5 MSVC release. Vulkan-1.dll from VulkanRT-1.2.198.1-Components.zip. I checked resolve.exe with x64dbg and created a log file. Looking at the file, I can see that it loads all four MESA OpenGL files listed above from the application directory. It doesn't load opengl32.dll from the Windows System directory. With OpenCL, it loads:
That's everything I noticed. MesaOpenCL.dll does throw numerous exceptions in the log file. Here's the entire x64dbg log file: https://pastebin.com/bWPY9aaW Resolve does appear to be looking for a hardware GPU, so maybe it just simply won't work with MESA. Or it could be something stupid like a file needing to be named something specific. I remember when I was trying to get Topaz applications to run with MESA and had just about given up, thinking it wasn't possible, and I have no idea what made me think to try this, but I made a second copy of MESA's opengl32.dll in the application directory and named it opengl32sw.dll, and that actually worked. I was shocked when I saw the application run. I discovered that it would only work if both opengl32.dll (MESA) and opengl32sw.dll (duplicate copy of MESA opengl32.dll) were present in the application directory. Delete one, and it no longer works. There was NOTHING from looking at any debugger, logs, or otherwise to lead anyone to think that that would be what makes it work. So it's possible there's something like that going on here. (I have no idea, just guessing.) |
Copy |
It didn't work. Oh well, thanks for trying! :\ It gives this error: If I click "Update Configuration" it shows this: I believe that's the problem. It should list an entry in there for the "GPU" which is the Intel CPU runtime for OpenCL, like it shows here in ViennaCLBench: I mean, MESA shouldn't really be necessary, since the Intel drivers I have installed are supposed to be a complete software rendering runtime. So it must mean Resolve 15 is coded in such a way as to need to see a physical GPU card. The reason I tried at all is that I've heard of people running Resolve 15 on Linux using MESA, so I thought it should work for Windows, since OpenCL is now part of the Windows build here (at least for x64 so far). It must be that the Linux version of Resolve is coded without the limitation of needing a physical GPU. I suppose I could try older versions of Resolve, but I think I've spent too much time on this so far! Thanks again for the replies. :) |
I tried running this: http://wiki.luxcorerender.org/LuxMark_v3 It crashed. I then removed the registry entry of After doing that, LuxMark now runs. So I guess Resolve is hard coded not to use a software renderer for OpenCL. LuxMark should work with the MESA version of OpenCL though, shouldn't it?
|
Precisely, it demands a CL GPU type device, see pal1000/save-legacy-intel-graphics#4.
you are way bellow the requirements for latter. I tested ViennaCLBench but it's not relevant to this issue because it's a 32-bit program so it can't use Mesa clover and it also uses CL CPU type devices if available. |
I keep trying new MESA versions, including the latest 22 r2, and so far I have not found a single thing working with OpenCL. Same crash on Luxmark, etc. The release notes seem to indicate changes and such for clover... is ANYTHING supposed to be working for OpenCL? If not, what is the point of these non working builds? Not trying to sound insulting or anything... just confused. |
Well, clond3d12 is also available for Windows 10 and 11 and it works even without a D3D12 graphics driver by using the CPU. I may give up on clover if I keep getting reports that is so broken. |
At this point I'm just trying Luxmark with new releases to see if it will start. Still crashes with mesa3d-22.1.0-release-msvc. 😞 MESA folder contains |
also please notice this The OpenCL CPU runtimes will be installed to the following directory: Known Issues and Limitations Workaround: this issue can be fixed with the method below. Manually update the registry key: for x64 add a new key with following key-value pair: for x64 for x32 the file named C:\Windows\system32\MSVCR120.dll that file is for Visual Studio 2015, 2017, 2019, and 2022 Architecture Link
also notice every visual studio got it version number for the The version number is 14.0 for Visual Studio 2015, 2017, 2019, and 2022 because the latest Redistributable is binary compatible with previous versions back to 2015 |
Yeah, that's fine, I have that registry key and OpenCL for Intel CPU works fine. It's the MESA Clover OpenCL GPU software emulation that is not working... yet. Hopefully it will, someday? :p |
The upstream was closed with "Closing now that Clover's probably going away." Not sure if that means that Windows will not support OpenCL at all for the future, or if Clover will be replaced with something else. |
Windows has CLonD3D12 driver but it may have stopped working with switch to LLVM/Clang 15.
It's being replaced by Rusticl, but this new driver doesn't build for Windows yet. |
As usual, please forgive my ignorance... How does one go about configuring the system for openclon12 / CLonD3D12? I tried the simple "copy all dll's from the latest release into the application directory," but that didn't work for Luxmark. I tried both MSVC and MingW. |
Using CLonD3D12 works the same way it worked with clover ICD ( |
What other files should be in the directory that contains |
Registering OpenCL or Vulkan drivers in general doesn't involve copying files over to program folder at all, instead it works by writing to registry or setting environment variables that point to driver full path. |
I understand that, what I am asking is, what files other than |
I recommend you to just extract mesa-dist-win release package somewhere and then the paths to CLonD3D12 driver would be For Vulkan and OpenCL drivers you don't have to copy any files to program directory. OpenCL ICD loader and Vulkan runtime respectively handle finding drivers' depending DLLs for us. To satisfy your curiosity |
OK, thanks very much for the clarification. Again (sorry for so many basic questions), does the Vulcan runtime need to be in the driver path folder along with MESA, or does the Vulcan runtime go in its own driver path? (Or in the Windows\System32 directory)? Remember, I'm attempting to get a MESA to run as GPU MESA, on a system that does not have a GPU, which I'm assuming should be possible in the same way that OpenGL is able to run OpenGL dependent applications on a system without a GPU (i.e., a VPS). |
Vulkan runtime is packaged an excusable installer. Just run it as it's unpacked in Windows\System32. |
Hello again and Happy Holidays! I finally had time to try openclon12.dll. It didn't work, Luxmark still crashes, but it looks a bit different now. It appears to crash at the point where it would start drawing onscreen. Event log just shows Luxmark crashing itself (luxmark.exe), so that isn't really useful. Here's what I did (Windows 10 x64 2004 final build 19041.1415): 1 - System path environment variable added 2 - Place all files from 3 - Create zero value DWORD registry entry 4 - Install Vulkan runtime I think that should be everything? So this is what happens when I try to run Luxmark: Unfortunately, since it crashes nearly right away, I cannot scroll down the log text on the bottom, or export it since the application is in a crashed state. Does this require a GPU to work? The Vulkan runtime is for a GPU, and this is a system with no GPU. If it does need a GPU, then I wonder what is the point, as I thought this was supposed to be a GPU software renderer for OpenCL, unless I am misunderstanding something. (Should I be doing anything with Swiftshader?) |
I got crash with Luxmark 3.1 and CLonD3D12 as well so it's not just you. Try collecting a call stack (MSVC) or backtrace (MinGW). Help yourself with debug packages. Report the crash to Mesa3D CLC or CLonnD3D12 ICD depending on module crashing |
I tried the latest MESA version 24 in LuxMark and it no longer crashes, but it still fails to use MESA and gives a "No OpenCL device selected or available" message in the log: MSVC or MingW behaves the same. It appears that there is a bug in MESA 24.0.0 on how WARP is exposed to the system, as it appears as device type UNKNOWN. I'm not sure if this is a problem with OpenCLon12 was changed in version 23.0.0 to expose WARP as a CPU device, so unless they implement an environment variable that can select how WARP is exposed to the system (as either CPU or GPU), then I'm still out of luck, as I need it to be exposed as GPU. :( |
I got OpenCL on MESA 24.0.0 to work! But, just MSVC... MINGW crashes LuxMark. If I select " BUT, if I select only MESA ("Microsoft Basic Render Driver") on the right, and select " It is slower than the Intel driver, but it is complete and renders more like a GPU without any diffusion dithering. https://pastebin.com/BMJfUBjU (line 85 and forward) It's not going to be usable however with any applications that expect either an OpenCL CPU or GPU device due to the issue with WARP being exposed as device type UNKNOWN. It might actually work for Resolve and other applications that only allow OpenCL GPU devices if there was a way to select how WARP is exposed to the system (CPU or GPU) via an environment variable. :( I wonder if there is a way to compile MESA or OpenCLon12 so that it is seen as a GPU? |
Try 24.0.3. I updated CLonD3D12 ICD to include fix for microsoft/OpenCLOn12#58 |
Using MESA 21.3.5 MSVC.
Trying to use DaVinci Resolve 15 on GPU-less workstation, it uses either CUDA or OpenCL.
It starts and gives expected "Can't find OpenCL GPU" message when run.
I copied all dll files from mesa3d-21.3.5-release-msvc\x64 into Resolve directory.
Now when Resolve 15 is started, it says,
"The procedure entry point clCreateFromGLBuffer could not be located in the dynamic link library OpenCL.dll."
Just to experiment, I renamed OpenCL.dll to OpenCL.dll.bak and MesaOpenCL.dll to OpenCL.dll. Now, it gives the message,
"The procedure entry point clEnqueueBarrier could not be located in the dynamic link library OpenCL.dll."
Are there some environment variables I might be missing, or other files I'm maybe missing from other packages somewhere? I tried putting in vulkan-1.dll from VulkanRT-1.2.198.1-Components\x64 but it made no difference.
Also, the message still comes up if ONLY OpenCL.dll and/or MesaOpenCL.dll is in the application directory.
I tried 22.0.0-rc1 and it had no effect on the above.
The text was updated successfully, but these errors were encountered: