16 Replies Latest reply on May 19, 2014 2:36 PM by darkradeon

    GPUPerf Studio - Windows 8.1

    wh1sp3r

      Hello,

       

      I tested GPUPeft Studio on Windows 8.1 and unfortunately, it's not working.

      After i connect to the server ( this seems to be working ), i choose DX11 API, GPUPerf Studio freeze.

      I tested compability mode, run as administrator, turn firewall off, different port.

       

      I hope, it will be solved soon, this software is really helpful ;-)

        • Re: GPUPerf Studio - Windows 8.1
          wh1sp3r

          I did more tests and i realized, other graphic programs can be debugged.

           

          So, i am confused now, why my application cannot be debugged. Code is compiled with v110 toolset ( VS 2012 ). DirectX 11 is created with debug flag.

          GPUPerf server shows last item "

           

          19:06:03.257790: Message: 4476 Server    :   5: 127.0.0.1  - /5016/DX11/ShowStack

           

          Also, i can't get that data from internet browers too, so perhaps that's why GPUpert studio can't connect and it freeze.

          I also commented out all rendering from my app, and i left only creating graphics and present command. Still can't connect.

          I have no idea, where is a problem

          • Re: GPUPerf Studio - Windows 8.1
            darkradeon

            I confirm that GPUPerfStudio 2 doesn't work on Windows 8.1 Pro RTM (x64)

            • Re: GPUPerf Studio - Windows 8.1
              Lonesled

              Hi, currently GPS2 does not work with applications built against the Win8 SDK. VS2012 (and the Win8 SDK) uses a new runtime that undermines how GPS2 gets inside your application.I would recommend using the VS2012 graphics debugging tools for now until we get a fix.

              • Re: GPUPerf Studio - Windows 8.1
                Lonesled


                Hi, could you try again using the following settings. Before you connect open the client and go to Windows/Settings. In the General tab there is a radio button selection for "Time Spoofing on pause". If your current setting is on Freeze then set it to None and try to connect. Are you using a frame-limiter of some kind? i.e. waiting for time to progress to some value before rendering the next frame? If you are, then the None option should fix this.

                 

                Also, your application must be in a continual rendering loop calling Present at the end of each frame. if you app is back-grounded, it must continue to render (some apps stop rendering if they do not have focus).

                  • Re: GPUPerf Studio - Windows 8.1
                    wh1sp3r

                    Hello,

                    thank you for reply. I tested your suggestions, unfortunately with same results.

                    Application is in continous loop and presets graphics every frame. I am not using anykind of frame limited, except vertical synchronization.

                     

                    Log did not say anything helpful, last log item is

                     

                    PID: 4060, TID: 6648           : Message: 4060 GPUPerfServer :  26: 127.0.0.1  - /3912/DX11/ShowStack

                     

                    Also, I tried something different. When GPUPerf server running, I am able to write URL into my browser like

                     

                    http://127.0.0.1:50000/Process.xml

                     

                    and I am able to get info about process in XML format.

                    when I try http://127.0.0.1:50000/3912/DX11/ShowStack, I am not able to get anything. Only one error in log "Error SocketReadHeader - 0" but it's possible it's my fault as i entered not valid URL , who knows, only developers

                  • Re: GPUPerf Studio - Windows 8.1
                    darkradeon

                    I have the same issue, running Windows 8.1.

                    Other 3rd party profilers (MS VS 2013 graphics debugger, intel gpa) work fine, but of course they cannot give me GCN shader assembly like GPUPerfstudio :\

                    • Re: GPUPerf Studio - Windows 8.1
                      callan

                      We released an update to GPU PerfStudio this week that includes a number of fixes related to running on Windows 8.1.  Can you please let us know if this new release fixes these issues?

                        • Re: GPUPerf Studio - Windows 8.1
                          darkradeon

                          Unfortunately the server crash few second after the lunch and my app does not start, I also recive the following error:

                           

                          "Window: ConnectionManager:  Unable to Connect to the Remote Server. Check to see if your application is running. You mat need to restart your application and re-connect."

                           

                          The application I'm trying to profile is quite simple, 64-bit, only basic use of vertex and pixel shaders, it requires D3D 11.1 (with feature level 11.0 only) and is build with VS 2013, windows sdk 8.1 (the legacy directx sdk of june 2010 is also installed).

                           

                          If I try to profile an application of the "legacy" directx sdk - june 2010, like "BasicHLSL11", the server starts, the application runs and GPU perfstudio seems to work fine.

                           

                          I'm using Windows 8.1 - update 1, 64. bit

                           

                          Does GPU Perfstudio 2 need some "special" requirements from the application or from the system config (ie: some services must running) ?

                            • Re: GPUPerf Studio - Windows 8.1
                              Lonesled

                              Hi, thanks for your report, it would be very helpful to us if you could send us your app for debugging. Please could you reply by clicking on the "Use advanced editor" in the top right. In that editor you will be able to upload a zip file of your application. We will then be able to debug the issue.

                                • Re: GPUPerf Studio - Windows 8.1
                                  darkradeon

                                  Hi, I just revert to use Direct3D 11.0 and DXGI 1.1 (instead of Direct3D 11.1 and DXGI 1.2) and everything now works fine... So I can guess that GPU Perfstudio 2 doesn't work well with Direct3D 11.1 and DXGI 1.2.

                                   

                                  With D3D11.1 and DXGI1.1  I only used the feature level 11.0...

                                   

                                  I actually cannot send you the application, however since it not even started with D3D11.1 & DXGI 1.2 I guess there are some problem with the swapchain... Here is the code for D3D 11.1 and the swapchain:

                                   

                                  // Setup the swap chain.

                                  DXGI_SWAP_CHAIN_DESC1 swapChainDescriptor;

                                  memset( &swapChainDescriptor, 0, sizeof( swapChainDescriptor ) );

                                  swapChainDescriptor.Width = width;

                                  swapChainDescriptor.Height = height;

                                  swapChainDescriptor.Format = outputFormat;

                                  swapChainDescriptor.Stereo = false;

                                  swapChainDescriptor.SampleDesc.Count = 1;

                                  swapChainDescriptor.SampleDesc.Quality = 0;

                                  swapChainDescriptor.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;

                                  swapChainDescriptor.BufferCount = 2;

                                  swapChainDescriptor.Scaling = DXGI_SCALING_STRETCH;

                                  swapChainDescriptor.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;

                                  swapChainDescriptor.AlphaMode = DXGI_ALPHA_MODE_UNSPECIFIED;

                                  swapChainDescriptor.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;*

                                   

                                  // Setup the full-screen mode for the swap chain.

                                  DXGI_SWAP_CHAIN_FULLSCREEN_DESC fullScreenModeDescriptor;

                                  memset( &fullScreenModeDescriptor, 0, sizeof( fullScreenModeDescriptor ) );

                                  if( vsyncEnabled ) {

                                    fullScreenModeDescriptor.RefreshRate.Numerator = 60;

                                    fullScreenModeDescriptor.RefreshRate.Denominator = 1;

                                  }

                                  else {

                                    fullScreenModeDescriptor.RefreshRate.Numerator = 0;

                                    fullScreenModeDescriptor.RefreshRate.Denominator = 1;

                                  }

                                  fullScreenModeDescriptor.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;

                                  fullScreenModeDescriptor.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;

                                  fullScreenModeDescriptor.Windowed = windowed;

                                   

                                  // Create the swap chain for the d3d11_1 device.

                                  IDXGIFactory2* factory = nullptr;

                                  CreateDXGIFactory1( __uuidof( IDXGIFactory2 ), reinterpret_cast< void** >( &factory ) );

                                  factory->CreateSwapChainForHwnd( device, window, &swapChainDescriptor, &fullScreenModeDescriptor, nullptr, &swapChain );

                                   

                                   

                                  The rest of the application is quite the same: just the use of some interface are different (ie: ID3D11Device1 instead of ID3D11Device), some descriptors (like D3D11_BLEND_DESC1 instead of D3D11_BLEND_DESC) and some function (like VSSetConstantBuffers1 instead of VSSetConstantBuffers).

                                    • Re: GPUPerf Studio - Windows 8.1
                                      Lonesled

                                      Thanks for this information. Currently, we do not support DX11.1. We have more work to do intercept the full DX11.1 API. We hope to do this shortly.

                                        • Re: GPUPerf Studio - Windows 8.1
                                          callan

                                          Just to add one comment to this.  GPU PerfStudio currently forces all applications to run in DirectX 11.0 mode.  It does this by overriding the device creation functionality basically ignoring what hardware is actually installed and making it look like only DirectX 11.0 feature level is available.   If you have written a DirectX 11.1 application that does not work with GPU PerfStudio then it is likely because your application is not behaving correctly when the DirectX 11.1 device creation fails.  In this scenario you should not be using any of the DirectX 11.1 functionality otherwise your application will not be able to run on any DirectX 11 hardware that does not support the DX 11.1 feature set.

                                            • Re: GPUPerf Studio - Windows 8.1
                                              darkradeon

                                              Tank you both for the replay.

                                              Yes, I actually know that my application doesn't handle both DirectX 11.0 and DirectX 11.1 (even if it runs @feature_level_11_0), I'm still learning it and I'm still working on the back-end renderer so some wrappers (like a device-creation wrapper that handles correctly both DX11 and DX11.1 is missing ).