Skip to content

Instantly share code, notes, and snippets.

@ebarlas
Last active June 26, 2022 03:42
Show Gist options
  • Save ebarlas/2e965797fa8322c839948e28a446e5b6 to your computer and use it in GitHub Desktop.
Save ebarlas/2e965797fa8322c839948e28a446e5b6 to your computer and use it in GitHub Desktop.
#include <chrono>
#include "SDL.h"
int main() {
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
SDL_Log("SDL could not initialize. SDL error: %s", SDL_GetError());
return 1;
}
SDL_Window *window = SDL_CreateWindow(
"Test",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
1600,
900,
SDL_WINDOW_SHOWN);
if (window == nullptr) {
SDL_Log("Window could not be created. SDL error: %s", SDL_GetError());
return 2;
}
SDL_Renderer *renderer = SDL_CreateRenderer(
window,
-1,
SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
if (renderer == nullptr) {
SDL_Log("Renderer could not be created. SDL error: %s", SDL_GetError());
return 3;
}
auto now = [] { return std::chrono::time_point_cast<std::chrono::microseconds>(std::chrono::steady_clock::now()); };
SDL_Event e;
bool quit = false;
SDL_Log("starting...");
while (!quit) {
auto t1 = now();
while (SDL_PollEvent(&e) != 0) {
if (e.type == SDL_QUIT) {
quit = true;
}
}
auto t2 = now();
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
SDL_RenderClear(renderer);
auto t3 = now();
SDL_RenderPresent(renderer);
auto t4 = now();
if ((t4 - t3).count() > 20'000) {
SDL_Log("poll=%lld, render=%lld, present=%lld", (t2 - t1).count(), (t3 - t2).count(), (t4 - t3).count());
}
}
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
}
@ebarlas
Copy link
Author

ebarlas commented Jun 26, 2022

Output after running for a minute on my MacBook Pro.

  • 16" MacBook Pro, 2019
  • MacOS Big Sur 11.5.2
  • 2.4 GHz 8-Core Intel Core i9
  • 32 GB 2667 MHz DDR4
  • Intel UHD Graphics 630 1536 MB
  • SDL 2 version 2.0.22 installed via Homebrew
  • Apple clang version 13.0.0
  • Compiled with optimization level 3 -03
$ ./src/sdl 
2022-06-25 18:41:36.976 sdl[5922:121422] INFO: starting...
2022-06-25 18:41:37.429 sdl[5922:121422] INFO: poll=43, render=0, present=20624
2022-06-25 18:41:37.508 sdl[5922:121422] INFO: poll=67, render=1, present=66212
2022-06-25 18:41:37.560 sdl[5922:121422] INFO: poll=71, render=0, present=51510
2022-06-25 18:41:37.675 sdl[5922:121422] INFO: poll=57, render=0, present=33369
2022-06-25 18:41:37.860 sdl[5922:121422] INFO: poll=594, render=1, present=33708
2022-06-25 18:41:40.876 sdl[5922:121422] INFO: poll=73, render=2, present=33003
2022-06-25 18:41:42.642 sdl[5922:121422] INFO: poll=73, render=1, present=32733
2022-06-25 18:41:52.176 sdl[5922:121422] INFO: poll=71, render=1, present=32974
2022-06-25 18:41:55.026 sdl[5922:121422] INFO: poll=76, render=1, present=33043
2022-06-25 18:41:56.559 sdl[5922:121422] INFO: poll=75, render=1, present=32694
2022-06-25 18:42:06.393 sdl[5922:121422] INFO: poll=75, render=1, present=32965
2022-06-25 18:42:08.776 sdl[5922:121422] INFO: poll=73, render=1, present=33091
2022-06-25 18:42:14.693 sdl[5922:121422] INFO: poll=74, render=2, present=33021
2022-06-25 18:42:26.443 sdl[5922:121422] INFO: poll=56, render=0, present=33088
2022-06-25 18:42:28.193 sdl[5922:121422] INFO: poll=69, render=1, present=32650
2022-06-25 18:42:29.343 sdl[5922:121422] INFO: poll=63, render=0, present=33234

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment