Monitor-Noob versucht GSync/FreeSync zu verstehen

MaverickM schrieb:
Ich habe extra das Video oben gepostet. Diese Einstellung ergibt keinen Sinn! V-Sync aus!
Vsync greift bei aktiviertem G-Sync erst, wenn man die max Wiederholrate erreicht. Darunter spielt es keine Rolle ob der Haken aktiviert ist oder nicht. Das ist genauso wie Tripple Buffer egal ist, wenn Vsync ausgeschaltet ist.
Wenn man ein Framelimit unterhalb der max Wiederholrate nutzt, kann Vsync nie greifen, daher ist egal, auf was Vsync eingestellt ist.
Was mich etwas wundert ist:
tvr240 schrieb:
(im Spiel ist auch VSync aktiviert), aber es gibt diverse Situationen mit erheblichen Frame-Einbrüchen, Rucklern und Screen Tearing
Wenn Vsync an ist, kann kein Tearing entstehen. Man erkauft sich das durch Input Lag, weil das Bild zurückgehalten wird.
 
  • Gefällt mir
Reaktionen: MaverickM
In diesem Kontext, was haltet Ihr von der V-Sync Option "schnell" ? Habe damit gestern etwas experimentiert und konnte den input lag im Vergleich zu Vsync an + FPS Limiter 2-3 Frames unter Maximum HZ des Monitors spürbar reduzieren. Allerdings wird das ja eigtl nur empfohlen, wenn man mehr Frames generiert, als der Monitor HZ hat, was bei mir nicht der Fall war.
 
MaverickM schrieb:
mit einem richtig eingestellten Framelimit dann kommt es auch nicht zu Tearing, weil man immer im G-Sync/FreeSync Limit bleibt.
SavageSkull schrieb:
Wenn man ein Framelimit unterhalb der max Wiederholrate nutzt, kann Vsync nie greifen, daher ist egal, auf was Vsync eingestellt ist.
Das gilt nur bei komplett glatten Frametimes (oder wenn dein FPS Limit so weit entfernt ist, dass es die Frametimevarianzen abfängt).
Ein FPS Limit ist nur ein Durchschnittswert pro Sekunde.
Hast du 100 FPS (10ms) als Limit eingestellt, könnte das bedeuten das in dieser einen Sekunde 50 Frames in 8ms (=125FPS) gerendert wurden und 50 Frames in 12ms(=83,3FPS).

(immer noch https://blurbusters.com/gsync/gsync101-input-lag-tests-and-settings/15/#faq-2)
Dimez schrieb:
In diesem Kontext, was haltet Ihr von der V-Sync Option "schnell" ?
Wurde auch bereits geprüft:
https://blurbusters.com/gsync/gsync101-input-lag-tests-and-settings/8/
 
  • Gefällt mir
Reaktionen: Ja_Ge
Ich kann die Grafik was Fastsync angeht jedenfalls nicht bestätigen, der Inputlag ist geringer als mit vsync on + fps limit -2. Dazu brauch ich keine Messinstrumente, das sagen mir der direkte Vergleich und viele Jahre und tausende Stunden gaming.

Wieso muss das bei Nvidia so merkwürdig sein :D ? Bei AMD + Freesync einfach Vsync überall deaktivieren, Freesync aktivierne = gg. Es gab ja immer viel gejammer bei Gsyncmodulen von wegen proprietäre technik, aber es funktionierte doch gut...
 
Dimez schrieb:
Wieso muss das bei Nvidia so merkwürdig sein :D ? Bei AMD + Freesync einfach Vsync überall deaktivieren,
Wie schon geschrieben führt dass in verschiedenen Situationen trotzdem zu Tearing, was dann mit VSync verhindert wird.
 
  • Gefällt mir
Reaktionen: Dimez
Wo bin ich hier schrieb:
Ein FPS Limit ist nur ein Durchschnittswert pro Sekunde.

Ein Limit ist ein Limit, kein Durchschnittswert. Es kommt zwar durchaus vor, dass es manchmal in der Praxis minimal übers Ziel hinaus schießt, aber das sind maximal 1-2 Frames. Daher stellt man eben ein paar Frames unter der maximalen Range ein.

Ja_Ge schrieb:
Wie schon geschrieben führt dass in verschiedenen Situationen trotzdem zu Tearing, was dann mit VSync verhindert wird.

Tut es bei AMD absolut und definitiv nicht. Ist zwar schon eine Weile her, dass ich eine nVidia Karte im Rechner hatte, aber auch da habe ich dieses Verhalten bei deaktiviertem V-Sync nicht beobachten können. Das eingangs erwähnte Video bestätigt meine Aussagen auch.
 
MaverickM schrieb:
Tut es bei AMD absolut und definitiv nicht.
Da ist der Punkt, warum diese Diskussion auf keinen Nenner kommen wird. Was du meinst ist, dass es bei dir nicht vorkommt oder du es nicht mehr wahrnimmst. Bei mir schon, vor allem bei starken FPS Schwankungen (z.B. von caped 120FPS auf 75 und zurück), und wie viele hier schreiben und wie es eine Google - Suche ergibt wohl auch woanders. Daher ist deine Erfahrung nicht zu verallgemeinern.

Ich habe einen älteren BenQ Monitor, mir hat dieser Tip geholfen:
https://www.benq.com/en-us/knowledge-center/knowledge/adaptive-sync-tearing.html

Bei meinen Nvidia Karten am TV das hier:
https://www.corsair.com/us/en/explo...ld-you-turn-it-on-for-gaming-or-leave-it-off/

Ich habe mir die gelinkten Posts von allen durchgelesen und die Empfehlung ist eigentlich klar: Vsync an, G/Freesync an und einen FrameLimiter einige FPs unter der Max. Range, da ein Limiter nicht 100% genau ist. So habe ich das schon immer gemacht.
 
Ja_Ge schrieb:
Daher ist deine Erfahrung nicht zu verallgemeinern.

Mein Beitrag dazu ist mindestens genauso anekdotisch, wie der Deine.

Daher habe ich ja auch eingangs ein Video mit harten Fakten gepostet. Keine Ahnung, wie man das noch weg diskutieren will, aber scheinbar können/wollen das manche. :rolleyes:
 
@MaverickM
Ich hatte dir technischen Gründe geliefert. Ich hatte ein Youtube-Video geliefert, dass die Notwendigkeit von VSync zeigt. Und ich hatte am Ende als Nachtrag nochmal in kurz und einfachen Worten erklärt, warum VSync auch unterhalb des FrameLimits notwendig ist.

Wenn du dich weiterhin an diesem einzigen Video festklammerst, welches deine Aussage nicht mal bestätigt, weiterhin alle gelieferten Informationen von verschiedenen Usern ignorierst.......nun, dann ist es halt so. 🤷‍♂️

Mehr will ich dazu nicht sagen.
 
  • Gefällt mir
Reaktionen: Suspektan, Ja_Ge, N0Thing und eine weitere Person
Darkman.X schrieb:
Ich hatte dir technischen Gründe geliefert.

Die halt in diesem Kontext keinen Sinn ergaben, respektive deine Theorie halt falsch ist, auch wenn Du dich auf den Kopf stellst.
 
MaverickM schrieb:
Die halt in diesem Kontext keinen Sinn ergaben
Hier wird das Problem live gezeigt (240Hz Monitor, 236 FPS Limit, G-Sync an, V-Sync aus -> Tearing):
youtu.be/f3FcUVa3vyY?t=313
1771518755444.png


Dann bin ich auch raus. Der "Kontext" in dem du dich bewegst ist unklar und die "harten Fakten", die du mit nichts untermauerst sind nur noch ermüdend 🤷‍♂️

MaverickM schrieb:
respektive deine Theorie halt falsch ist
Es ist keine Theorie.
 
  • Gefällt mir
Reaktionen: Suspektan, Nolag, Ja_Ge und 2 andere
Wo bin ich hier schrieb:
Hier wird das Problem live gezeigt (240Hz Monitor, 236 FPS Limit, G-Sync an, V-Sync aus -> Tearing):
Tearing kann aber auch noch auftreten, wenn man deutlich weiter von der maximalen Bildrate entfernt ist. Ich habe bei einer kurzen Suche keinen Tearing Test im Netz finden können mit dem man das schnell zeigen könnte, also habe ich mal alten Java Code von mir ausgegraben und daraus einen Tearing Test gebastelt. Damit bekomme ich auf Nvidia Karten mit deaktiviertem V-Sync auch noch manchmal bei einem 90 FPS Limit Tearing am unteren BIldrand. Ich habe mal 120 Hz und die gängigsten Auflösungen vorgesehen. Bei 120 Hz ist es einfacher zu sehen, aber es funktioniert auch bei 240 Hz und z.B. einem 180 FPS Limit.
Ich habe auch auf einer AMD RX 6600 testen können und konnte dort kein Tearing feststellen. AMD deaktiviert den V-Sync wohl scheinbar nicht, wenn FreeSync aktiv ist.
Auf einer RX 6000 war bei mir auch Tearing zu beobachten, aber es war dort erst bei Limits ab 110 FPS häufiger zu sehen.
Java:
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferStrategy;
import java.util.concurrent.TimeUnit;

public class TearingTest {
    private static int FREQ = 120;

    private static DisplayMode[] BEST_DISPLAY_MODES = new DisplayMode[] {
            new DisplayMode(3840, 2160, 32, FREQ),
            new DisplayMode(3440, 1440, 32, FREQ),
            new DisplayMode(2560, 1440, 32, FREQ),
            new DisplayMode(1920, 1080, 32, FREQ)};

    private static boolean RUNNING = true;

    private static void draw(Graphics2D g2d, int ofs) {
        Rectangle bounds = g2d.getDeviceConfiguration().getBounds();
        g2d.setBackground(new Color(32, 32, 32));
        g2d.clearRect(0, 0, bounds.width, bounds.height);
        g2d.setColor(Color.white);
        g2d.setFont(new Font("Dialog", Font.BOLD, 30));
        g2d.drawString("Click to exit...", 100, 100);
        g2d.fillRect(ofs, 0, 20, bounds.height);
    }

    private static void render(Frame frame) throws Exception {
        BufferStrategy bufferStrategy = frame.getBufferStrategy();
        Rectangle bounds = frame.getBounds();
        long start = System.nanoTime();
        System.out.println(bounds);

        while (RUNNING) {
            Graphics g = bufferStrategy.getDrawGraphics();
            Graphics2D g2d = (Graphics2D) g;
            AffineTransform t = g2d.getTransform();
            t.setToScale(1, 1);
            g2d.setTransform(t);
            if (!bufferStrategy.contentsLost()) {
                int ofs = (int) TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start) * 2 % bounds.width;
                draw(g2d, ofs);
                bufferStrategy.show();
                g2d.dispose();
            }
        }
        System.exit(0);
    }

    private static DisplayMode getBestDisplayMode(GraphicsDevice device) {
        for (int x = 0; x < BEST_DISPLAY_MODES.length; x++) {
            DisplayMode[] modes = device.getDisplayModes();
            for (int i = 0; i < modes.length; i++) {
                if (modes[i].getWidth() == BEST_DISPLAY_MODES[x].getWidth()
                        && modes[i].getHeight() == BEST_DISPLAY_MODES[x]
                        .getHeight()
                        && modes[i].getBitDepth() == BEST_DISPLAY_MODES[x]
                        .getBitDepth()) {
                    return BEST_DISPLAY_MODES[x];
                }
            }
        }
        return null;
    }

    private static Frame createFrame(int numBuffers, GraphicsDevice device) {
        GraphicsConfiguration gc = device.getDefaultConfiguration();
        Frame mainFrame = new Frame(gc);
        mainFrame.setUndecorated(true);
        mainFrame.setIgnoreRepaint(true);
        device.setFullScreenWindow(mainFrame);
        if (device.isDisplayChangeSupported()) {
            DisplayMode mode = getBestDisplayMode(device);
            if (mode != null) {
                device.setDisplayMode(mode);
                mainFrame.createBufferStrategy(numBuffers);
                mainFrame.addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseClicked(MouseEvent e) {
                        super.mouseClicked(e);
                        RUNNING = false;
                    }
                });
                return mainFrame;
            }
        }
        System.out.printf("Unable to set 120 Hz Fullscreen mode");
        mainFrame.dispose();
        return null;
    }

    public static void main(String[] args) throws Exception {
        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice device = env.getDefaultScreenDevice();
        Frame frame = createFrame(2, device);
        if (frame != null) {
            render(frame);
        }
        Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
    }
}
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Wo bin ich hier
Nolag schrieb:
. AMD deaktiviert den V-Sync wohl scheinbar nicht, wenn FreeSync aktiv ist.
Im Treiber kannst du pro Spiel oder Anwendung seperat Freesync und VSync mit jeweils verschiedenen Optionen auswählen.
 
@Ja_Ge Bei Nvidia kannst du halt den V-Sync auf dem untersten Level deaktivieren, wenn du im Treiber Vertikale Synchronisation auf "Aus" stellst. Bei AMD scheint das nicht zu passieren, weshalb es das Problem mit Tearing innerhalb der Sync Range dort nicht gibt. Mir ist es jedenfalls nicht gelungen bei AMD den V-Sync vollständig zu deaktivieren, wenn FreeSync aktiv ist.
 
Ok, bei "Immer aus" lässt es sich auch bei AMD bei Limits oberhalb von 110 FPS beobachten.
 
Zuletzt bearbeitet:
Hier ist eine Aufnahme einer RX 6600 mit Tearing bei 115 FPS@120Hz:
RX6660_Tearing_115FPS@120Hz.jpg

Nun auch mit Frametime Graph. Man sieht, dass es nicht einmal schwankende Frametimes braucht damit Buffer Swap und Scanout auseinanderlaufen.
RX6660_Tearing_115FPS@120Hz_FT.jpg
 
Zuletzt bearbeitet:
Du kannst dein Programm bei AMD auch als „Game“ hinzufügen, dann hast du alle Möglichkeiten. Wie z.B. Freesync dafür auszumachen.
 
Ja_Ge schrieb:
Wie z.B. Freesync dafür auszumachen.
FreeSync soll ja schon aktiv bleiben. Der Sinn des Tests ist ja zu zeigen, dass ein Frame Rate Limiter auch bei Adaptive Sync kein Tearing verhindern kann. Ich dachte bisher immer, dass die Empfehlung V-Sync im Treiber nicht komplett auszuschalten, nur für den Nvidia gilt, aber nach meinen aktuellen Tests würde ich sagen, dass das für AMD auch gilt.
 
  • Gefällt mir
Reaktionen: Ja_Ge
Zurück
Oben