[Bug 42587] New: MandelDx11Double doesn' t work Needs support for D3D11 double prec. floats in shaders..

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Mar 4 00:40:12 CST 2017


https://bugs.winehq.org/show_bug.cgi?id=42587

            Bug ID: 42587
           Summary: MandelDx11Double doesn't work Needs support for D3D11
                    double prec. floats in shaders..
           Product: Wine
           Version: 2.2
          Hardware: x86
                OS: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: directx-d3d
          Assignee: wine-bugs at winehq.org
          Reporter: rtfss1 at gmail.com
      Distribution: ---

Created attachment 57512
  --> https://bugs.winehq.org/attachment.cgi?id=57512
Mandelbrot D3D11 demo with double precision support

Hi don't know if interested on implementing D3D11 double precision support as
it's optional feature and not many (any?) apps/games use it..

Any way long time ago I patched shaders of one of firsts D3D11 compute shader
Mandelbrot demos( see Mandel http://users.skynet.be/fquake/) to use double
precision floats for calculations..

demo uses high enough zoom by default to show difference if double works or not
if using single prec you will see large blocks of same color  due to reduced
precision..
I attach my patched demo (see MandelDX11double)..

If run:
Mandel.exe 1 
will run using double precision calculations instead
Mandel.exe 0 
will force to use single prec and will see big blocks of colors due to reduced
precision

Also note initial SM5 double precision supporti don't know if interested on
implementing D3D11 double precision support as it's optional feature and not
many (any?) apps/games use it..

Any way long time ago I patched shaders of one of firsts D3D11 compute shader
Mandelbrot demos( see Mandel http://users.skynet.be/fquake/) to use double
precision floats for calculations..

demo uses high enough zoom by default to show difference if double works or not
if using single prec you will see large blocks of same color  due to reduced
precision..
I attach my patched demo (see MandelDX11double)..

If run:
Mandel.exe 1 
will run using double precision calculations instead
Mandel.exe 0 
will force to use single prec and will see big blocks of colors due to reduced
precision

Also note initial SM5 double precision support includes ops:
dadd
:https://msdn.microsoft.com/en-us/library/windows/desktop/hh446894(v=vs.85).aspx
dmax
dtof
etc..
but complete support came with DX11.1 adding:
drcp
dfma
ddiv (double precision divide):
https://msdn.microsoft.com/en-us/library/windows/desktop/hh920925(v=vs.85).aspx

at least you can exercise ddiv opcode if change in mandel.hlsl file:
 b = b*0.5;
with:
 b= b/2.0;


Note code (mandel.cpp) checks doubles supports:
 g_pd3dDevice->CheckFeatureSupport( D3D11_FEATURE_DOUBLES, &fdDoubleSupport,
sizeof(fdDoubleSupport) );
    GPUcanDoDoubles = fdDoubleSupport.DoublePrecisionFloatShaderOps;

and Wine currently returns 0;
So I modified my local Wine sources to return D3D11_FEATURE_DOUBLES as true and
verified running dxcapsviewer I made the changes correctly..
Even so program crashes..


Also note with Wine 2.3 demo crashes due to using native d3dx11_43 instead of
incorporated d3dx11_42 and D3DCompiler_42 DLL's so I delete this files in
(usr/local/lib/wine) so using included DLLs.. 
at least this way float demo works. has:
dadd
:https://msdn.microsoft.com/en-us/library/windows/desktop/hh446894(v=vs.85).aspx

Note code (mandel.cpp) checks doubles supports:
 g_pd3dDevice->CheckFeatureSupport( D3D11_FEATURE_DOUBLES, &fdDoubleSupport,
sizeof(fdDoubleSupport) );
    GPUcanDoDoubles = fdDoubleSupport.DoublePrecisionFloatShaderOps;

and Wine currently returns 0;
So I modified my local Wine sources to return D3D11_FEATURE_DOUBLES as true and
verified running dxcapsviewer I made the changes correctly..
Even so program crashes..


Also note with Wine 2.3 demo crashes due to using native d3dx11_43 instead of
incorporated d3dx11_42 and D3DCompiler_42 DLL's so I delete this files in
(usr/local/lib/wine) so using included DLLs.. 
at least this way float demo works..

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list