none
C++ AMP and Direct3D VSync? RRS feed

  • General discussion

  • I'm using Direct3D to present the result of my C++ AMP computation and have noticed that the C++ AMP calculation are a lot slower when using vertical sync (on a different direct3d device than what C++ AMP uses).

    i.e. the following is slow:

    scoped_blocking_signal blocking_signal;
    this->swap_chain->Present(1, 0);

    While either of the following is faster:

    scoped_blocking_signal blocking_signal;
    this->swap_chain->Present(1, 0);
    Sleep(20);

    this->swap_chain->Present(0, 0);

    I have checked CPU usage and the vertical sync is not busy waiting. I'm using Nvidia cards.

    Any ideas as to what might be causing this?

    I'm currently on Windows 7, but once I've upgraded to Windows 8 I hope to use the following code, which hopefully doesn't suffer from this problem:

    HRESULT res = this->swap_chain->Present(1, DXGI_PRESENT_DO_NOT_WAIT);
    while(res == DXGI_ERROR_WAS_STILL_DRAWING)
    {
    	Context::Yield();
    	res = this->swap_chain->Present(1, DXGI_PRESENT_DO_NOT_WAIT);
    }




    • Edited by Dragon89 Friday, September 14, 2012 8:39 PM
    Friday, September 14, 2012 8:38 PM

All replies