Re: GLX in bad state

Nadav Frum <[email protected]>
Newsgroups gmane.comp.emulators.winex.devel
Message-ID <Pine.LNX.4.44_heb2.10.0403311244180.2456-100000@localhost.localdomain>
On Wed, 11 Feb 2004, I started the above thread.  My objective was to 
highlight the shortcomings of the current GLX implementation in comparison 
to WGL (the Windows implementation).

I cited ARB_render_texture as one GLX extension which is urgently needed.  
I gave a brief explanation as to how this extension may be used to render 
shadows and reflections.  This was a technical and dry explanation.

Because this is an important topic I decided it was time for a 
demonstration.  I urge everybody who is able to assist to do so by posting 
their own results.

Below is a patch which will allow Transgamers to run the Comanche 4 Demo 
benchmark.  It adds a stub to a function that is not yet implemented.

The C4 benchmark makes lots of use of shadows and reflections.  The demo 
is also freely available for download and includes the benchmark. I 
believe that the bad performance I am experiencing with this benchmark is due
to the absence of ARB_render_texture.

The results I get by running the benchmark are as follows:

    Comanche 4 Benchmark Results for 800x600x32  FSAA=0  VSync=OFF  
    DXTC=ENABLED  AUDIO=OFF  SHADERS=DISABLED
 
    Frames per second:        2.18 avg
    Tris per second:       431,485 avg

My system specs are as follows:

    CPU: Intel Celeron 1.7 GHz
    System Memory: 384 MB
    GPU: GForce4 64 MB 440MX AGP x8 

To run the benchmark enter the game's directory and type:

    winex --debugmsg -all c4demo.exe -- /bench

The results will be appended to the 'c4bench.txt' file in the game's 
directory.  If you have access to a Windows machine then the results 
there will also be valuable.  Remember to disable hardware shaders in the 
pop-up menu because pixel shaders are not yet available in WineX.  By 
disabling sound you will further refine the comparison.

This is the patch:

--- winex-20031120.new/dlls/d3d8/d3d8_main.c.ofp	2003-11-18 01:10:35.000000000 +0200
+++ winex-20031120.new/dlls/d3d8/d3d8_main.c	2003-12-01 08:53:17.000000000 +0200
@@ -1020,7 +1020,7 @@
   Direct3DDevice8_SetPixelShader,
   Direct3DDevice8_GetPixelShader,
   (void*)0xdead1061, /* DeletePixelShader */
-  (void*)0xdead1062, /* SetPixelShaderConstant */
+  Direct3DDevice8_SetPixelShaderConstant,
   (void*)0xdead1063, /* GetPixelShaderConstant */
   (void*)0xdead1064, /* GetPixelShaderFunction */
   (void*)0xdead1065, /* DrawRectPatch */
--- winex-20031120.new/dlls/d3d8/pshader.c.ofp	2003-07-30 15:34:54.000000000 +0300
+++ winex-20031120.new/dlls/d3d8/pshader.c	2003-12-01 08:53:17.000000000 +0200
@@ -40,3 +40,14 @@
   TRACE("(%p)\n", stuff);
   return TRUE;
 }
+
+HRESULT WINAPI Direct3DDevice8_SetPixelShaderConstant(LPDIRECT3DDEVICE8 iface,
+                                                      DWORD Register,
+                                                      CONST void* pConstantData,
+                                                      DWORD ConstantCount)
+{
+  /* ICOM_THIS(IDirect3DDevice8Impl, iface); */
+  FIXME("(%p)->(%d, %p,%d): stub\n", iface, Register, pConstantData, ConstantCount);
+  return D3D_OK;
+}
+
--- winex-20031120.new/dlls/d3d8/d3d8_private.h.ofp	2003-10-23 20:14:30.000000000 +0200
+++ winex-20031120.new/dlls/d3d8/d3d8_private.h	2003-12-01 08:53:17.000000000 +0200
@@ -383,6 +383,11 @@
 					      DWORD Handle);
 HRESULT WINAPI Direct3DDevice8_GetPixelShader(LPDIRECT3DDEVICE8 iface,
 					      DWORD* pHandle);
+HRESULT WINAPI Direct3DDevice8_SetPixelShaderConstant(LPDIRECT3DDEVICE8 iface,
+					              DWORD Register,
+						      CONST void* pConstantData,
+						      DWORD ConstantCount);
+
 
 /* state.c */
 HRESULT WINAPI Direct3DDevice8_SetTransform(LPDIRECT3DDEVICE8 iface,

Nadav Frum
----------

P.S.  I believe this patch also stops Operation Flashpoint from crashing.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.