Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [nvidia]utilisation CPU intensive si affichage > 512 vertex et vsync activé  (Lu 2523 fois)

0 Membres et 1 Invité sur ce sujet

Phanoo

  • Full Member
  • ***
  • Messages: 136
    • Voir le profil
EDIT : problème résolu, ça concerne ceux qui ont une carte nVidia, utilisent la vsync dans leur appli, et ont l'option' Threaded Optimization ' activée dans leur control panel (elle l'est par défaut)
 
Si vous affichez plus de 512 vertex d'un coup (ça peut être des sf::Text de + de 85 char pour SFML dev (1char=6vertex) / 128 pour SFML 2.1 stable) la conso CPU passe de "pas grand chose" à 100%

voir mon ticket de report : https://github.com/SFML/SFML/issues/611

+ d'infos à ce sujet http://www.retrocopy.com/blog/29/nvidia-threaded-optimization-oxymoron.aspx

Comment le résoudre :
- désactiver la vsync via setVerticalSyncEnabled
OU
- désactiver Threaded Optimization dans votre control panel nVidia

Hey
J'ai déjà posé dans le github mais je voulais savoir si d'autres ont ce problème :
Dans mon programme quand j'utilise de grands sf::Text la consommation CPU augmente de 20% pour seulement un caractère ajouté.

sf::Text de 135 caractères : 2% cpu
sf::Text de 136 caractères : 24% cpu 

je suis pas sur exactement de la limite (125~135) mais on dirait que les sauts de ligne (\n) ne comptent pas

d'autres ont ce soucis?

EDIT: la limite est de 85 chars pour la derniere version dev de SFML
EDIT 2 : la limite se situe au nombre de vertex affichés, 1char=6 vertex, 85*6 = 510, la limite de vertex au dela de laquelle leCPU s'emballe est de 512
EDIT 3 : merci nVidia, il s'agit d'un bug des drivers quand l'option Threaded Optimization est activée
« Modifié: Mai 24, 2014, 08:24:11 pm par ratatax »

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : sf::Text : de 2% à 20%cpu si je dépasse environ 128 catactères
« Réponse #1 le: Mai 23, 2014, 04:45:13 pm »
Un code d'exemple pour tester rapidement ?

math1992

  • Jr. Member
  • **
  • Messages: 77
    • Voir le profil
    • E-mail
Re : sf::Text : de 2% à 20%cpu si je dépasse environ 128 catactères
« Réponse #2 le: Mai 23, 2014, 05:48:54 pm »
J'ai fait un test avec 200 caractères (avec et sans sauts de ligne) et ma consommation CPU ne dépasse pas 5%.

Phanoo

  • Full Member
  • ***
  • Messages: 136
    • Voir le profil
Re : sf::Text : de 2% à 20%cpu si je dépasse environ 128 catactères
« Réponse #3 le: Mai 24, 2014, 01:43:41 pm »
Code de test :
(appuyez sur n'importe quelle touche pour passer de 135 à 136 caractères ce qui fait passer chez moi la consommation cpu de 2 à ~25%)

#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <sstream>
using namespace std;
using namespace sf;

int main(){
        RenderWindow window(VideoMode(1024,768,32),"test");
        window.setFramerateLimit(60);
        Event event;
        Font font;
        font.loadFromFile("font.ttf");
        Text t("press a key to use 20% cpu\naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",font,16);
        Text count("",font,16);
        count.setPosition(200,200);
        printf("%i",t.getString().toAnsiString().length());

        while(window.isOpen()){
                while (window.pollEvent(event)){
                        if (event.type == Event::Closed)
                                window.close();
                        if (event.type == Event::KeyPressed){
                                t.setString(t.getString()+"a");
                                printf("\n");
                                printf("%i",t.getString().toAnsiString().length());
                        }
                }
                window.clear(Color::Black);
                window.draw(t);
                window.draw(count);
                window.display();

        }

        return 0;
}

version compilée : https://mega.co.nz/#!81dmWIhK!jvXKCw3OqL2gKewXtJH6wBkaxWH6YbttQvZDZIFW3Qs

faire ces tests permettra déjà de voir si c'est un problème relatif à mon matériel, compileur (visual studio 2008) ou autre... mes drivers de carte graphique sont jour (nvidia gts250)

Phanoo

  • Full Member
  • ***
  • Messages: 136
    • Voir le profil
Re : utilisation CPU intensive si vertex > 512 et vsync activé
« Réponse #4 le: Mai 24, 2014, 08:20:49 pm »
Pb identifié (pas vraimetn résolu car c'est pas la faute à SFML), voir premier message