Hello again,

After further investigation it seems to me that wglMakeContextCurrentARB is not implemented by gallium llvmpipe, that's why it gets a null pointer.

Can we add a stub or something?


Il 2017-03-14 03:44, Brian Paul ha scritto:
Looks like my KOTOR patch never made it to master. I'm attaching it below so you can try it. I should commit it master. In any case, let me know if it helps.

-Brian

On 03/13/2017 10:55 AM, Federico Dossena wrote:
Hi Jose, thanks for replying, I've seen your name inside many files in
mesa ;)

I have tried mesa master (previously I was using 17.0.1) but it still
crashes for the same null pointer.
Do you have a link to that patch you've mentioned for kotor?

I have used apitrace and took traces of both the nvidia driver (which
runs kotor) and mesa (up until the crash).
Here's a link to them:
https://drive.google.com/file/d/0B6qj91UlSYlYa3dIM0FtaHNULW8/view?usp=sharing <https://urldefense.proofpoint.com/v2/url?u=https-3A__drive.google.com_file_d_0B6qj91UlSYlYa3dIM0FtaHNULW8_view-3Fusp-3Dsharing&d=DwMDaQ&c=uilaK90D4TOVoH58JNXRgQ&r=Ie7_encNUsqxbSRbqbNgofw0ITcfE8JKfaUjIQhncGA&m=u9OxTt6a0b4XxAVoFjjG7RmQNYLAIe3smaD2NtY0mhE&s=h5NDyV1_DsR1WIruLOfH3IDrWkYTa8VEHeC3vIiucF4&e=>

I tried reading them with the dump function but it's way above my
comprehension.

I know that some applications use wglGetProcAddress to check if an
extension if available, but I've seen KOTOR check for the
WGL_ARB_render_texture, and when it's present it enables frame buffer
effects and soft shadows, which use wglMakeContextCurrentARB (not
wglBindTexImageARB, I was wrong in my previous mail), which for some
reason is a null pointer.

////


Il 2017-03-13 14:39, Jose Fonseca ha scritto:
On 13/03/17 11:09, Emil Velikov wrote:
On 11 March 2017 at 11:51, Federico Dossena <dossenu...@gmail.com>
wrote:
In the last week I've been trying to bring an "old" game back to
life, Star
Wars Knights of the old republic (KOTOR, for short). It's from 2003
and uses
OpenGL 1.4.

I have used Mesa, libtxc_dxtn and some trickery to decompress the
textures
to boost performance, and right now I have it up and running
smoothly with
Gallium on LLVMPipe, compiled on Windows. (I can upload a copy if
someone is
interested). This took me about 2 days of compiling and figuring out
stuff.

Here's where the weirdness begins:
Turning on framebuffer effects or soft shadows make the game crash
right
after the menu. Using a disassembler and debugger and what little
knowledge
I have of reverse engineering, I managed to track down the issue to a
function which uses wglGetProcAddress to get the addresses of
several OpenGL
functions. Some of these calls return a null pointer (even if there
is a
valid context and it is current), and when the game tries to call
them, it
crashes. The first one that makes it crash is a pointer to
wglBindTexImageARB, but there are a few others. NOPing the offending
instructions did not work, and returning a nop function just makes
the game
display artifacts.

Strange - afaict mesa (st/wgl) exposes both wglBindTexImageARB and the
WGL_ARB_render_texture extension.
You can break on DrvGetProcAddress and trace where/how we end up with
NULL function pointer.

-Emil
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Federico,

You should be using latest master for this.   There have been recent
changes/fixes to our WGL implementation.


Last fall Brian Paul fixed an issue with WGL extension seen on KOTOR.
I'm not sure the the issue has been crossported to Mesa master yet,
and it might be unrelated.


Generally speaking, wglGetProcAddress returning NULL by itself is not
a problem.  Many games wrongly rely on wglGetProcAddress NULL results
to detect whether an GL/WGL extension is present (which goes against
the spec).  Other libraries try to bindly get every possible
entrypoint through wglGetProcAddress, then check which ones to use
based on supported extensions (which is actually fine by the spec.)


For the record, getting an apitrace is usually useful to debug this
sort of issues.  One can use apitrace straigh from windows or with
WINE -- https://github.com/apitrace/apitrace/wiki/WINE


Jose



_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Ddev&d=DwIGaQ&c=uilaK90D4TOVoH58JNXRgQ&r=Ie7_encNUsqxbSRbqbNgofw0ITcfE8JKfaUjIQhncGA&m=u9OxTt6a0b4XxAVoFjjG7RmQNYLAIe3smaD2NtY0mhE&s=jnsrLdbWwBr7d8cUeUr_dxHK8sN25_6TfLQjoVbMCj8&e=



_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to