Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 544323
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T10:38:32+00:00 2026-05-13T10:38:32+00:00

In an application which is GPU bound, I am wondering at what point the

  • 0

In an application which is GPU bound, I am wondering at what point the CPU will wait on the GPU to complete rendering. Is it different between DirectX and OpenGL?

Running an example similar to below, obviously the CPU doesn’t run away – and looking in task manager, CPU usage (If it were a single core machine) would be below 100%.

While (running){

    Clear ();

    SetBuffers (); // Vertex / Index

    SetTexture ();

    DrawPrimitives ();

    Present ();
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-13T10:38:33+00:00Added an answer on May 13, 2026 at 10:38 am

    The quick summary is that you will probably see the wait in Present(), but it really depends on what it is the Present() call.

    Generally, unless you specifically say you want notice of when the GPU is finished, you might end up waiting at the (random to you) point the driver’s input buffer fills up. Think of the GPU driver & card as a very long pipeline. You can put in work at one end and eventually after a while it comes out to the display. You might be able to put in several frames worth of commands into the pipeline before it fills up. The card could be taking a lot of time drawing primitives, but you might see the CPU waiting at a point several frames later.

    If your Present() call contains the equivalent of glFinish(), that entire pipeline must drain before that call can return. So, the CPU will wait there.

    I hope the following can be helpful:

    Clear ();
    

    Causes all the pixels in the current buffer to change color, so the GPU is doing
    work. Lookup your GPU’s clear pix/sec
    rate to see what time this should be taking.

    SetBuffers (); 
    SetTexture ();
    

    The driver may do some work here, but generally it wants to wait until you
    actually do drawing to use this new data. In any event, the GPU doesn’t do
    much here.

    DrawPrimitives ();
    

    Now here is where the GPU should be doing most of the work. Depending on the
    primitive size you’ll be limited by vertices/sec or pixels/sec. Perhaps you have
    an expensive shader you’ll be limited by shader instructions/sec.

    However, you may not see this as the place the CPU is waiting. The driver
    may buffer the commands for you, and the CPU may be able to continue on.

    Present ();
    

    At this point, the GPU work is minimal. It just changes a pointer to start displaying from a different buffer.

    However, this is probably the point that appears to the CPU to be where it is waiting on the GPU. Depending on your API, “Present()” may include something like glFlush() or glFinish(). If it does, then you’ll likely wait here.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I've got an OpenGL application which I'm afraid is GPU bound. How can I
Is there an application which can show me GPU usage history in the same
I am creating an application which will store a (semi) real-time feed of a
I have developed an application which allows the user to switch between themes. I'm
I'm creating an application which lets you define events with a time frame. I
I have an application which really should be installed, but does work fine when
I have a rails application which is still showing the cachebusting numeric string at
I have an application which extracts data from an XML file using XPath. If
I have a Java application which I want to shutdown 'nicely' when the user
We have an application which needs to use Direct3D. Specifically, it needs at least

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.