Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Crone123 le Octobre 28, 2012, 03:32:59 pm

Titre: [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Crone123 le Octobre 28, 2012, 03:32:59 pm
Bonjour,
Voici donc le sujet de rapport de bug pour l'affichage des sf::ConvexShape sur les cartes ATI.
Beaucoup de dégradés réalisés avec des sf::ConvexShape ne s'affichent pas correctement sur les cartes ATI.
J'ai a ma disposition pour le test des cartes Nvidia et des cartes ATI, le rendu est pareil pour les cartes de la même marque.
En revanche, il y a des différences de rendu entre les cartes Nvidia et les cartes ATI.
Quand je dis ATI, entendez ATI/AMD.
J'ai fait un certain nombre de captures d'écran, j'en poste que quelques unes (petites) ici, les autres je les met sous forme de lien.
Les captures de la carte Nvidia dans ce test seront prises sur une Nvidia GT 220 depuis Ubuntu 12.04 LTS 64bits.
Les captures de la carte ATI dans ce test seront prises sur une ATI Mobility Radeon HD 4570 depuis Ubuntu 12.04 LTS 64bits.
Exemple d'un bouton affiché normalement sur une carte Nvidia:
(http://dl.smglive.org/FJ_1351431724.8102_View)
(Les trucs verts sont des particules en mouvement, ignorez les, ça fait moche sur la capture, mais dans le jeu c'est joli grâce a l'effet de mouvement..)
Le même bouton sur la carte ATI:
(http://dl.smglive.org/FJ_1351431782.3929_View)
Le bouton central est un sprite, le texte est un sf::Text et l'effet de surbrillance est 4 sf::ConvexShape.

Voilà, plutôt que de vous passer pleins de liens, autant vous passer une archive contenant toutes les captures. (2 dossiers, un ATI, un Nvidia)
Vous constaterez que pour les mêmes images, des fois les cartes ATI affichent correctement, ou presque correctement les sf::ConvexShape, et sinon la plupart du temps ça fait un rendu hyper mauvais.
http://s2.smglive.org/SMG_RPG/ConvexShapeATI-Nvidia.7z

Aussi, j'ai d'autres informations qui pourraient êtes utiles, lorsque le jeu quitte sur une carte Nvidia, tout va bien, mais sur une carte ATI:
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff4a2cc58 in XQueryExtension ()
   from /usr/lib/x86_64-linux-gnu/libX11.so.6
(gdb) bt
#0  0x00007ffff4a2cc58 in XQueryExtension ()
   from /usr/lib/x86_64-linux-gnu/libX11.so.6
#1  0x00007ffff4a20c55 in XInitExtension ()
   from /usr/lib/x86_64-linux-gnu/libX11.so.6
#2  0x00007ffff3ed502b in XextAddDisplay ()
   from /usr/lib/x86_64-linux-gnu/libXext.so.6
#3  0x00007ffff4d6a119 in ?? () from /usr/lib/fglrx/libGL.so.1
#4  0x00007ffff4d60b42 in ?? () from /usr/lib/fglrx/libGL.so.1
#5  0x00007fffffffe050 in ?? ()
#6  0x00007ffff4dc38b1 in ?? () from /usr/lib/fglrx/libGL.so.1
#7  0x00007fffffffe050 in ?? ()
#8  0x00007ffff7de992d in ?? () from /lib64/ld-linux-x86-64.so.2
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

Notez que j'utilise les pilotes propriétaires Nvidia et ATI sur les cartes graphiques, les pilotes libres ne savent pas encore lancer de jeux comme ça.
Merci :)
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Laurent le Octobre 28, 2012, 06:28:47 pm
Il faudrait que tu fournisses un code complet et minimal qui reproduit le problème.
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Crone123 le Octobre 28, 2012, 07:01:13 pm
Bah, jusqu'à présent tous mes projets ont été affectés, et quel que soit le code, la preuve sur les captures.
Il vous suffit de déclarer un sf::ConvexShape et vous avez 9 chances sur 10 que ça bug.
Donc, pour code minimal, a peu près n'importe quoi est affecté, et ensuite 9 fois sur 10 ça va bugguer.
J'ai par contre l'impression que certaines formes sont plus affectées que les autres, voyez l'effet de surbrillance le coté gauche souvent n'est pas du tout affiché, haut et droite c'est n'importe quoi et le bas est généralement plutôt bien affiché.


Pour les barres de vies par exemple, vous avez vu que des fois elles s'affichent et des fois non.
J'ai remarqué que dans le vert (quasiment complète) elle s'affiche assez fréquemment correctement, quand elle arrive vers la moitié elle ne s'affiche jamais correctement et quand elle est quasiment vide elle s'affiche aussi assez fréquemment correctement.

Pour le code minimal, je veux bien voir, mais je n'en vois pas vraiment l’intérêt puisque tous les objets que j'ai utilisé ont fait ça sur les cartes ATI, sans jamais bugguer sur les cartes Nvidia. (quelque soit leurs tailles ou leurs formes).
C'est paradoxal, parce que sur la SFML 1.6 ce sont les sprites qui ne passaient pas les 3/4 du temps sur les cartes ATI, et justement les sf::Shape étaient les seuls trucs qui passaient bien...
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Laurent le Octobre 28, 2012, 08:46:28 pm
L'intérêt du code minimal ? Me fournir une base saine pour commencer à debugger. Ne pas perdre de temps à mettre en place un test et examiner le code, potentiellement pour rien.

Dans 95% des cas c'est l'utilisateur qui a fait une connerie dans son code, je ne peux pas croire les gens sur parole ;)
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Crone123 le Octobre 29, 2012, 11:46:24 am
OK, je vais voir ça.
Mais ici ça serait une connerie qui marche sur Nvidia et qui ne marche pas sur ATI, donc c'est quasiment a coup sûr de la SFML, d'autant plus que des fois ça s'affiche a peu près correctement, et tu relances le programme, ça ne marche plus...

Je regarde...
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Laurent le Octobre 29, 2012, 11:47:38 am
Disons qu'ici le code minimal, d'après ce que tu dis, est très court et facile à écrire. Alors pourquoi s'en priver ? ;)
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Crone123 le Octobre 29, 2012, 11:50:09 am
Oui oui, il arrive, c'est juste que j'avais la flemme d'installer les outils de développement sur mon PC portable avec la carte ATI vu que je développe sur ma tour qui a la carte Nvidia, et j'ai remarqué le problème de l'un a l'autre....(j'avais essayé un moment de développer sur le PC portable avec ce bug c'était l'horreur)
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Crone123 le Octobre 30, 2012, 12:38:03 am
Bon, alors j'ai repris le code source de mon jeu, je l'ai juste adapté pour qu'il soit minimal: le code qui fait l'effet de surbrillance:
#include <iostream>
#include <SFML/Graphics.hpp>
using namespace std;
sf::Texture Degrade_Blanc_Droite, Degrade_Blanc_Gauche, Degrade_Blanc_Bas, Degrade_Blanc_Haut;
void displaySurBrillance(sf::Vector2f Position, sf::Vector2f Size, sf::RenderWindow& App)
{
        int X(Position.x), Y(Position.y);
        int SX(Size.x), SY(Size.y);
        sf::ConvexShape LeftShape;
        LeftShape.setPosition(X, Y);
        LeftShape.setPointCount(4);
        LeftShape.setPoint(0, sf::Vector2f(0, 0));
        LeftShape.setPoint(1, sf::Vector2f(0, SY));
        LeftShape.setPoint(2, sf::Vector2f(-10, SY + 10));
        LeftShape.setPoint(3, sf::Vector2f(-10, -10));
        LeftShape.setTexture(&Degrade_Blanc_Droite);
        sf::ConvexShape RightShape;
        RightShape.setPosition(X, Y);
        RightShape.setPointCount(4);
        RightShape.setPoint(0, sf::Vector2f(SX, 0));
        RightShape.setPoint(1, sf::Vector2f(SX + 10, -10));
        RightShape.setPoint(2, sf::Vector2f(SX + 10, SY + 10));
        RightShape.setPoint(3, sf::Vector2f(SX, SY));
        RightShape.setTexture(&Degrade_Blanc_Gauche);
        sf::ConvexShape UpShape;
        UpShape.setPosition(X, Y);
        UpShape.setPointCount(4);
        UpShape.setPoint(0, sf::Vector2f(0, 0));
        UpShape.setPoint(1, sf::Vector2f(-10, -10));
        UpShape.setPoint(2, sf::Vector2f(SX + 10, -10));
        UpShape.setPoint(3, sf::Vector2f(SX, 0));
        UpShape.setTexture(&Degrade_Blanc_Bas);
        sf::ConvexShape DownShape;
        DownShape.setPosition(X, Y);
        DownShape.setPointCount(4);
        DownShape.setPoint(0, sf::Vector2f(0, SY));
        DownShape.setPoint(1, sf::Vector2f(-10, SY + 10));
        DownShape.setPoint(2, sf::Vector2f(SX + 10, SY + 10));
        DownShape.setPoint(3, sf::Vector2f(SX, SY));
        DownShape.setTexture(&Degrade_Blanc_Haut);
        App.draw(LeftShape);
        App.draw(RightShape);
        App.draw(UpShape);
        App.draw(DownShape);
}
int main(int argc, char *argv[])
{
    sf::RenderWindow App(sf::VideoMode(1024, 768, 32), "Test sf::ConvexShape");
    sf::Image White_Haut, White_Bas, White_Droite, White_Gauche;
    int W(255);
    White_Haut.create(255, 255, sf::Color(0, 0, 0));
    for(unsigned int Y(0); Y < 255; ++Y)
    {
        for(unsigned int X(0); X < 255; ++X)
        {
            White_Haut.setPixel(X, Y, sf::Color(W, W, W, W));
        }
        --W;
    }
    Degrade_Blanc_Haut.create(255, 255);
    Degrade_Blanc_Haut.update(White_Haut);
    White_Bas.create(255, 255, sf::Color(0, 0, 0));
    for(unsigned int Y(0); Y < 255; ++Y)
    {
        for(unsigned int X(0); X < 255; ++X)
        {
            White_Bas.setPixel(X, Y, sf::Color(Y, Y, Y, Y));
        }
    }
    Degrade_Blanc_Bas.create(255, 255);
    Degrade_Blanc_Bas.update(White_Bas);
    White_Droite.create(255, 255, sf::Color(0, 0, 0));
    for(unsigned int X(0); X < 255; ++X)
    {
        for(unsigned int Y(0); Y < 255; ++Y)
        {
            White_Droite.setPixel(X, Y, sf::Color(X, X, X, X));
        }
    }
    Degrade_Blanc_Droite.create(255, 255);
    Degrade_Blanc_Droite.update(White_Droite);
    White_Gauche.create(255, 255, sf::Color(0, 0, 0));
    W = 255;
    for(unsigned int X(0); X < 255; ++X)
    {
        for(unsigned int Y(0); Y < 255; ++Y)
        {
            White_Gauche.setPixel(X, Y, sf::Color(W, W, W, W));
        }
        --W;
    }
    Degrade_Blanc_Gauche.create(255, 255);
    Degrade_Blanc_Gauche.update(White_Gauche);
    App.setFramerateLimit(60);
    while(App.isOpen())
    {
        App.clear(sf::Color(0, 0, 0));
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
        {
            App.close();
        }
        displaySurBrillance(sf::Vector2f(200, 300), sf::Vector2f(200, 60), App);
        App.display();
    }
    return 0;
}
 
Alors, a ma plus grande surprise: Sur la carte ATI ça fonctionne très bien, et je n'ai pas d'erreur de segmentation a la fin du programme... :o
Le problème que j'ai maintenant c'est que ce même code fait des rendus horribles dans mon jeu.
Et malgré que le code minimal fonctionne, y a quand même un problème quelque part qu'il serait bon de corriger :)
J'ai ré-essayé un jeu SFML1.6 sur les drivers ATI actuels, et je n'ai pas de bug non plus (pour ce jeu en tout cas).
J'ai ré-essayé mon jeu complet en SFML2.0 RC, et le codé présenté ci-dessus fait des affichages horribles avec l'erreur de segmentation présentée dans le premier post... (et ce n'est pas tout, tout le jeu est affiché comme je l'ai déjà montré..)

Y a t-il un lien possible entre le bug graphique et le fait que mes jeux sont des interfaces Qt dans lequel tournent le rendu de la SFML?


→ J'ai repris quasiment tel quel que QSFMLCanva pour la SFML 2.0, j'ai juste modifié les fonctions qui n'existaient plus pour la SFML, et rajouté des namespaces là où les fonctions Qt et SFML ont le même nom.
(Oui, en fait, il faut savoir que le passage des majuscules au minuscules pour les fonctions engendre les problèmes au niveau des noms, Qt a déjà des fonctions qui portent un certain nom, et la SFML a des fonctions qui portent des fois le même nom a cause du changement de majuscule en minuscule)
N'y aurait-il pas une fonction a rajouter, où un paramètre a changer pour la compatibilité SFML 2.0 / Qt?
Ce que je ne comprends pas, c'est que des fois ça marche très bien et des fois ça bug au possible, et des fois pour le même sf::ConvexShape il suffit de changer un peu la taille et il passe de "imbuvable" a normal et inversement: C'est le cas des barres de vies, quand elle est presque pleine, dans certains cas (1 fois sur 10) elle fonctionne et pareil si elle est presque vide, mais entre les 2 elle bug :o
Merci :)

PS: Et je ne vois vraiment pas ce qui peut clocher dans le code source étant donné que sur la carte Nvidia tout fonctionne correctement...


EDIT: Je fais des tests sur un code minimal qui propose 2 options:
Soit un rendu simple, soit un rendu dans Qt.
Pour l'instant j'ai la même chose sur les rendu Qt et simples, et sur les 2 cartes graphiques.
Je remarque bien le bug des carrés autour du texte dès que celui-ci grossi un peu.
Je cherche la combinaison qui permet de faire le bug sur un sf::ConvexShape....

EDIT2: Ayant la même chose, j'ai tenté de sauver les textures générées pour les sf::ConvexShape (au cas où le bug vienne de là..), j'ai donc convertit la texture en sf::Image a sa création et l'ai sauvé.
J'en ai sauvé une quinzaine comme ça, sur Nvidia et ATI.
Euh, je ne pense pas que ça vienne de ce fait, mais j'ai pu jouer normalement au jeu sur mon PC portable.
J'ai quand même eut des bugs de texte (les carrés autours des lettres) plus importants que sur ma carte Nvidia mais c'était correct.
J'ai relancé plusieurs fois, pas de bug.
ça a l'air d'être un phénomène assez passager. (mais bien présent, et bien fréquent, et ça ne touche pas que mon PC, mais aussi quelques autres PC avec une carte ATI sur lesquels j'ai lancé le jeu, tous les autres avec une carte Nvidia n'ont aucuns problèmes...)
D'autant plus que le jeu fait toujours une erreur de segmentation quand il quitte sur la carte ATI... (et vous pouvez regarder au dessus, ça plante en plein dans les pilotes graphiques..)
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Laurent le Octobre 30, 2012, 08:15:47 am
Citer
Bon, alors j'ai repris le code source de mon jeu, je l'ai juste adapté pour qu'il soit minimal:
Je ne suis pas sûr qu'on ait besoin de 5 fois le même code dupliqué pour reproduire ce problème. Si ce sont les ConvexShape qui buggent, fais juste un main() avec un ConvexShape. Le concept du code minimal c'est que ce soit une version minimale du problème, pas de ton jeu ;)

Citer
Alors, a ma plus grande surprise: Sur la carte ATI ça fonctionne très bien, et je n'ai pas d'erreur de segmentation a la fin du programme...
Maintenant tu comprends pourquoi je demande systématiquement un code complet minimal...

Citer
Je remarque bien le bug des carrés autour du texte dès que celui-ci grossi un peu.
C'est corrigé dans les dernières sources ;)

Bon, sinon je te laisse bidouiller le code minimal jusqu'à ce que tu tombes sur ce qui fait bugger. Bon courage :P
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Crone123 le Octobre 30, 2012, 12:32:26 pm
Sur mon ordi des fois ça marche, j'ai essayé sur l'ordi de mon frère, sur lequel ça a l'air de marcher aussi.
C'est bizzare, mais j'ai encore quelques sf:ConvexShape qui buggent...
Au passage, je voulais préciser que le code de retour du programme après son erreur de segmentation lorsqu'il quitte et sur un PC avec une carte ATI est: 35584
Segmentation Fault (core dumped), pour préciser l'erreur dont j'ai passé le débogage dans le premier post...

Je vais chercher avec le code minimal.
Je me demande si il n'y a pas une possibilité que ça soit du a des positions décimales qui pourraient par exemple des fois être mal interprétées par la carte.
Exemple:
1/3*100
Où des trucs du genre.
Je vais encore chercher pour voir :)
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Crone123 le Novembre 01, 2012, 07:45:40 pm
Bon, bah je ne sais pas pourquoi mais j'ai quasiment plus aucun bug sur les cartes ATI :o
Si j'en ai de nouveau ou si j'arrive a voir d'où ça viens je poste ici, mais sans rien changer a mon code maintenant ça marche la plupart du temps :o
Bug passager?
Je sais pas, vu que ça fait au moins 6 mois si pas plus que j'ai des bugs avec ça..donc pour l'instant va falloir que je cherche encore...
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: christophedlr le Novembre 06, 2012, 04:06:06 pm
Si tu peux me donner une copie de test du programme, je peux tenter de voir sur le PC de ma mère (un portable avec carte ATI), histoire de voir si ça le fait aussi ou si ça fonctionne. Ca donnera d'autres informations pour voir d'où ça viens ;)
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Crone123 le Novembre 06, 2012, 04:21:48 pm
Il y a un code source de test ici:
http://fr.sfml-dev.org/forums/index.php?topic=9533.msg65077#msg65077
C'est le même que celui qui bug assez souvent dans le jeu, et je le répète: Il ne bug pas partout et pas a chaque fois, mais ne bug jamais sur les cartes Nvidia.
Pour la même fonction avec exactement les mêmes paramètres des fois ça va marcher, des fois ça va bugguer.
Et c'est comme ça pour tous les sf::ConvexShape que j'utilise.. a priori je ne fais rien de barbare dans ce code non?
(Sauf peut être les sf::Texture en global mais ça c'est pour le code de test...)
Merci :)
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: christophedlr le Novembre 06, 2012, 04:38:59 pm
Merci pour le lien, je regarde dès que je suis rentré à la maison car là au boulot d'une part le serveur est une vrai merde d'autre part j'ai pas les outils de dev et bien entendu je ne peux rien tester (oui vive les formations avec du matos de merde).

Ce soir en rentrant, je regarde, je teste sur le PC de ma mère et je donnerais le résultat (comme c'est un PC ATI, avec de la chance ça fera le problème mdr).
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Crone123 le Novembre 06, 2012, 07:11:35 pm
OK Merci :)
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: christophedlr le Novembre 06, 2012, 09:20:55 pm
Crone123,

Je viens d'effectuer deux tests : un sur le PC de ma mère avec carte graphique ATI (le portable est récent, il date d'il y a un an) et voici le résultat : (http://image.noelshack.com/minis/2012/45/1352232879-capture.png) (http://www.noelshack.com/2012-45-1352232879-capture.png)

Enfin sur mon propre PC qui tourne avec une carte graphique NVidia très récente (GTX 650 qui venais de sortir quand j'ai acheté mon PC il y a un mois environ) : (http://image.noelshack.com/minis/2012/45/1352232950-test-blem-ati-2012-11-06-21-09-32.png) (http://www.noelshack.com/2012-45-1352232950-test-blem-ati-2012-11-06-21-09-32.png)

Le résultat est strictement identique et ne correspond même pas à tes captures d'écrans.
Le problème me semble donc externe aux drivers. Vu que sur plusieurs ordinateurs avec du matériel différent et même en utilisant une CG Nvidia, le  rendu est totalement différent, je dirais que c'est soit directement la SFML qui déconne soit ton code qui a un soucis.

Là hélas en ce moment j'ai peu de temps en particulier avec mon exposé qui arrive (sur la SFML d'ailleurs ;) ), mais dès que je peux je tenterais de faire un code plus minimal de ce que tu as donné. Je testerais le rendu et je te le filerais afin de que tu le test aussi, ce qui nous donnera plus d'informations quant au problème afin d'aider Laurent si c'est bien la SFML le soucis.


D'ailleurs par rapport à tout cela, je pense qu'on devrait passer plutôt par MP afin d'éviter un topic de 10 pages de blabla pour enfin avoir des données intéressantes à exploitées. Donc je pense que l'on doit passer par les MP pour s'échanger les idées etc., les résultats de tests eux on met sur le topic, ce qui le laisse propre et on y ajoute nos réflexions juste à ce moment là.

En espérant que l'on puisse à deux (trois si Laurent à le temps de nous rejoindre) mettre le doigt sur le noeud du problème (qui a eu l'idée de faire des noeuds dans le torchon ? lol).
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Crone123 le Novembre 06, 2012, 09:41:10 pm
Moi aussi sous Linux ce code a marché, mais ce même code ne fonctionne pas a tous les coups, dans mon jeu pour exactement le même code, des fois ça marche, et des fois ça bug au même endroit..
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Laurent le Novembre 06, 2012, 10:17:23 pm
Citer
si Laurent à le temps de nous rejoindre
Tant que vous avancez je vous laisse faire :P
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Laurent le Novembre 07, 2012, 10:20:32 pm
Le driver Catalyst 12.11 beta semble corriger le problème.

http://support.amd.com/us/gpudownload/windows/Pages/radeonaiw_vista64.aspx#1
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: christophedlr le Novembre 08, 2012, 08:30:48 am
Je ne pense pas que le driver corrige totalement le soucis, je pense qu'ils ont contourné une partie seulement puisque avec ma carte Nvidia, j'ai pas du tout le même rendu, j'ai rien de ce qui est attendu et je pense pas que les drivers Nvidia ET ATI aient un soucis ; le problème doit être ailleurs je pense (pas forcément la SFML attention).
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Laurent le Novembre 08, 2012, 08:45:13 am
En fait il est possible que je me mélange complètement les pinceaux. Je pensais qu'ici c'était le sujet qui parlait de la disparition des sprites/textes après avoir dessiné un shape. Mais visiblement non, c'est autre chose. Du coup où est le sujet que j'avais en tête ?

Ici le problème me paraît encore un peu vague. En tout cas ce serait bien d'avoir une vraie version minimale du code. On se fiche un peu (beaucoup) d'avoir 5 shapes et des supers dégradés ;)
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Crone123 le Novembre 08, 2012, 11:05:47 pm
La problème c'est que j'ai bien l'impression qu'un sf::ConvexShape tout seul s'affiche correctement, et que, lorsqu'il y a autre chose autour crée un problème...

Ensuite, sur les cartes Nvidia il n'y a aucun soucis, le problème est présent uniquement sur les cartes ATI.
On sait d'ailleurs que ATI a eut d'énormes bugs graphiques sur Linux, au début GNOME3 ne fonctionnait même pas, maintenant ça s'améliore mais c'est pas encore ça...

Niveau drivers, peut être que chez ATI il y a un problème?
Peut être que la SFML a un problème?
Peut être que mon code a un problème?

Moi je vise plutôt ATI en premier lieu et la SFML ensuite pour plusieurs raisons:
- Mon code fonctionne tout seul sur toutes les cartes, et fonctionne dans le jeu sur cartes Nvidia.
- Mon code fonctionne aussi dans le jeu sur cartes ATI mais le rendu est souvent buggué, et je n'y suis pour rien, ça fonctionne sur une carte Nvidia, c'est pas moi qui commande les cartes graphiques c'est soit la SFML, soit OpenGL, soit les drivers.
Ensuite, pourquoi viser la SFML?
- Parce que c'est la seule bibliothèque qui a ce genre de problèmes, peut être quelle n'appelle pas exactement ce qu'il faut sous Linux et que ça crée un bug pour les cartes ATI....
Mais attention, malgré tout la SFML fonctionne correctement sur la plupart des cartes, et la où ça bug le plus c'est sur les cartes ATI, donc on peut viser les drivers ATI.
- Mon code se compile, il fonctionne sur les cartes Nvidia, tout seul il fonctionne sur les cartes ATI, avec autre chose autour non ou rarement, donc mon code est valide. D'ailleurs vous l'auriez vu dans ce code si mon code était invalide, et si on arrive pas a reproduire de bug avec c'est bien qu'il est valide.

La page pour les drivers Linux est ici: http://support.amd.com/us/gpudownload/linux/legacy/Pages/legacy-radeon_linux.aspx
Mais attention, souvent ces drivers ATI sont pires que les drivers des dépôts....
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Crone123 le Novembre 18, 2012, 12:22:52 am
J'ai essayé de compiler (la semaine dernière) mon application sous Windows, et j'ai pas réussi, quand sous Linux ça marche tout de suite, sous Windows un truc est censé fonctionner ne fonctionne pas.
En fait j'utilise une bibliothèque "maison" et je ne sais pas pourquoi mais autant pour d'autres projets j'ai pu l'utiliser sans problèmes, autant là, elle se compile, mais quand il doit la linker: Toutes les fonctions que j'appelle de la Bibliothèque maison (soit beaucoup) sont considérées comme non-déclarées dans le .dll, alors quelles sont dedans :o
J'ai utilisé QtCreator pour créer le .dll et j'ai jamais eut de problèmes de ce type auparavant...(et aucun pb ne correspond sur internet)
Donc ma bibliothèque maison dépends de la SFML et le jeu dépends de la SFML et de la bibliothèque maison. (la bibliothèque maison servant a rendre toutes mes applications compatibles entre elles sur le mode de fonctionnement, elle ne sert pas a remplacer la SFML ou faire une surcouche entre l'application et la SFML, son usage est bien différent, ses dépendances a la SFML et a Qt sont pour permettre des classes personnalisées disponibles pour toutes les applications, etc... [mais plutôt du niveau sprite donc pas de risque de créer un bug ici])

Je retente de compiler dès que je peux....
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Crone123 le Novembre 24, 2012, 04:00:10 pm
J'ai trouvé ça par hasard: "Avec les pilotes propriétaires, la fermeture du PC pose un problème. Affichage anormal, ne se ferme pas,… La manifestation du bug est aléatoire. "
http://doc.ubuntu-fr.org/amd-ati
Il se trouve que je suis justement sur Ubuntu 12.04 LTS et que j'ai fréquemment ce bug.
ça m'étonnerait donc pas que les pilotes contiennent d'autres bugs, et par ailleurs mon jeu fait une erreur de segmentation au niveau des pilotes graphiques en quittant et uniquement sur les cartes ATI.

J'ai essayé de compiler le jeu sous Windows.
J'ai finalement réussi, mais la version de Qt est un peu vieille sur le Windows, et donc la compilateur ne fonctionne pas avec la version 2.0rc de la SFML. (ça plante au lancement du programme)
Faudrait soit que je re-compile la SFML (mais je n'ai pas les sources de la 2.0rc, c'est la version là qu'il me faut et pas les daily build car les daily build on des différences au niveau des sf::Text non négligeables, et je ne peux pas m'amuser a tout changer maintenant) soit que je mette a jour la version de Qt mais je n'arrive pas a faire fonctionner QtCreator avec le dernier SDK...

Avant le SDK comprenais QtCreator + Qt 4.6 (ou 4.4) et les 2 étaient installés ensemble, maintenant j'ai 2 installateurs séparés pour Qt 4.8 et QtCreator ne détecte pas MinGW fourni avec Qt4.8 et encore moins Qt 4.8 lui même :o
Donc je ne sais pas trop quoi faire là.. j'étais à 2 doigts de pouvoir tester mais là ça ne marche pas :(
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Laurent le Novembre 24, 2012, 09:51:35 pm
Citer
je n'ai pas les sources de la 2.0rc
https://github.com/SFML/SFML/archive/2.0-rc.zip
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Crone123 le Novembre 24, 2012, 11:54:26 pm
Je vais donc pouvoir essayer de le compiler avec le même compilateur que le jeu :)
Merci :D
Titre: Re : [SFML 2.0 RC][Linux] Problème d'affichage sur carte ATI
Posté par: Crone123 le Décembre 15, 2012, 06:36:27 pm
J'ai eu des semaines chargées, j'ai pas encore pu tester.
ça sera pour les vacances donc a partir du 22.

Par contre, en changeant la version des pilotes ATI ça crée le bug plus ou moins fort (et bizarrement ça marche mieux avec la version des dépôts qu'avec la dernière version du site officiel d'ATI)

Hier, j'ai trouvé un truc très intéressant.
Connaissez-vous "Docky", un dock assez sympathique.
Vous pouvez l'installer sur Ubuntu et en profiter sur votre bureau.
J'avais déjà essayé ce dock sur mes tours (nvidia) et il fonctionnait impeccablement.

Maintenant, j'ai essayé hier par hasard de l'installer sur mon PC portable avec la carte ATI.
Résultat: Quand on passe sur le dock, il y a des bugs graphiques équivalents a ceux que je rencontre dans la SFML. Ces bugs étaient aussi présent sur GNOME3 avec version précédente d'Ubuntu (11.10 par exemple) et donc des pilotes précédents, maintenant GNOME3 à moins de bug sur les cartes ATI, mais toujours pareil, pour GNOME3 il n'y a jamais eut de bugs de ce type sur les cartes Nvidia.

Et j'ai aussi remarqué que souvent quand le Kernel quitte sur un PC avec une carte ATI, ça Freeze. (bug connu des développeurs d'Ubuntu qui ont indiqué que ça provenait des pilotes ATI).
Vous enlevez l'animation "Ubuntu" de plymouth pour avoir les détails et vous trouvez un crash au niveau du dkms fglrx (pilote ATI). (le même crash que quand mon jeu quitte, mais cette fois ci, ça tue le kernel)


Donc, dès que je peux je finalise le test sur Windows, mais a mon avis c'est très clair: Les pilotes ATI sont toujours instables du moins sous Linux et ils sont la cause du bug.
N'y a t-il pas moyen de contacter ATI pour leurs informer du bug? (ça serait bien qu'une équipe de développeurs le fasse...)
Merci :)