Flickering Tv-guide and other overlays with EVR enabled (10 Viewers)

MoPhat

Retired Team Member
  • Premium Supporter
  • June 17, 2007
    816
    226
    Berg
    Home Country
    Switzerland Switzerland
    Hi chemelli, i have a intel processor to an does flickering :(

    1x Intel Core 2 Duo 6400 & 1x AMD HD3650 / 1920x1080p 50Hz 32Bit, Driver 8.3 = flickering.

    The flickering is since the last SVN not so oftern, but still there.

    MoPhat
     

    bitbucket

    MP Donator
  • Premium Supporter
  • October 19, 2007
    500
    10
    Home Country
    Germany Germany
    I will try to test with just one of them on Thursday. It's a bit trickey since they are water cooled and the length of the hoses do not allow to remove just one of them without disconnecting the circuit. But I will try.

    I noticed this when I used Forceware 169.25 at both systems.

    I spent some time to test with my AMD 780G system. There are two ways to get rid of the flickering GUI: using VMR9 instead of EVR or forcing the Cyberlink codec not to use hardware acceleration. Both are resulting in remarkable higher CPU load.

    Some additional info about the operating systems:

    Intel E6700 + NV 8600GT = Vista 32
    Intel E6700 + 2x 8800 Ultra SLI = Vista x64
    AMD 4850e + 780G = Vista 32 SP1

    EDIT: using VMR9 instead of EVR just works for HD not for SD content
     

    bitbucket

    MP Donator
  • Premium Supporter
  • October 19, 2007
    500
    10
    Home Country
    Germany Germany
    ok, did some testing in the meantime. these are my results:

    my problem regarding flickering gui when evr is enabled with my 8800 sli system seems to be just sli related.

    though i had no chance to remove a card physically from the system i disabled sli mode and tried with just one card rendering. no problems at all :)

    back to sli mode i noticed that i had system freezes with mp rc1 running when the clocks (gpu+shader+ram) were not exactly the same on both cards (have two slightly differnt cards). as long as i ensure that the clocks are the same -> no problems with evr enabled :)

    i think that evr seems to be somewhat sensitive since vmr9 didn't cause any problems at all - regardless of the circumstances.

    edit: tested with forceware 174.74
     

    Nybbe67

    Portal Pro
    December 28, 2007
    154
    3
    Gothenburg
    Home Country
    Sweden Sweden
    Hi
    I have the same behaviour with my ATI HD2600XT card and RC1. But only when I have been watching HD channel, SVT HD, and not when I watch standard TV. If I watch standard TV and go to the TV guide I dont get any flickering.
    Catalyst 8.4, ATI Avivo 8.4 and EVR on Vista SP1.
     

    tourettes

    Retired Team Member
  • Premium Supporter
  • January 7, 2005
    17,301
    4,800
    I added some debugging to the PlaneScene.PresentSurface() method and got some interesting results.

    Maximum allowed time per frame == 1s / 50 fps -> 20 ms

    DVD in full screen (power save scheme)
    Code:
    2008-05-21 22:56:49.094800 [Info.][12]: time in PresentSurface 6
    2008-05-21 22:56:49.113800 [Info.][12]: time in PresentSurface 5
    2008-05-21 22:56:49.133800 [Info.][12]: time in PresentSurface 5
    2008-05-21 22:56:49.153800 [Info.][12]: time in PresentSurface 5
    2008-05-21 22:56:49.172800 [Info.][12]: time in PresentSurface 4
    2008-05-21 22:56:49.202800 [Info.][12]: time in PresentSurface 12
    2008-05-21 22:56:49.214800 [Info.][12]: time in PresentSurface 6
    2008-05-21 22:56:49.232800 [Info.][12]: time in PresentSurface 4
    2008-05-21 22:56:49.258800 [Info.][12]: time in PresentSurface 10
    2008-05-21 22:56:49.278800 [Info.][12]: time in PresentSurface 6
    2008-05-21 22:56:49.327800 [Info.][12]: time in PresentSurface 27
    2008-05-21 22:56:49.341800 [Info.][12]: time in PresentSurface 13
    2008-05-21 22:56:49.354800 [Info.][12]: time in PresentSurface 11

    DVD in full screen (high performance)
    Code:
    2008-05-21 22:57:50.870800 [Info.][12]: time in PresentSurface 2
    2008-05-21 22:57:50.890800 [Info.][12]: time in PresentSurface 2
    2008-05-21 22:57:50.910800 [Info.][12]: time in PresentSurface 2
    2008-05-21 22:57:50.930800 [Info.][12]: time in PresentSurface 3
    2008-05-21 22:57:50.950800 [Info.][12]: time in PresentSurface 3
    2008-05-21 22:57:50.970800 [Info.][12]: time in PresentSurface 2
    2008-05-21 22:57:50.991800 [Info.][12]: time in PresentSurface 4
    2008-05-21 22:57:51.010800 [Info.][12]: time in PresentSurface 3
    2008-05-21 22:57:51.030800 [Info.][12]: time in PresentSurface 3
    2008-05-21 22:57:51.050800 [Info.][12]: time in PresentSurface 2
    2008-05-21 22:57:51.071800 [Info.][12]: time in PresentSurface 2
    2008-05-21 22:57:51.090800 [Info.][12]: time in PresentSurface 2
    2008-05-21 22:57:51.110800 [Info.][12]: time in PresentSurface 2
    2008-05-21 22:57:51.130800 [Info.][12]: time in PresentSurface 2
    2008-05-21 22:57:51.150800 [Info.][12]: time in PresentSurface 2
    2008-05-21 22:57:51.170800 [Info.][12]: time in PresentSurface 2
    2008-05-21 22:57:51.191800 [Info.][12]: time in PresentSurface 2
    2008-05-21 22:57:51.212800 [Info.][12]: time in PresentSurface 3
    2008-05-21 22:57:51.237800 [Info.][12]: time in PresentSurface 8
    2008-05-21 22:57:51.263800 [Info.][12]: time in PresentSurface 15
    2008-05-21 22:57:51.275800 [Info.][12]: time in PresentSurface 7
    2008-05-21 22:57:51.290800 [Info.][12]: time in PresentSurface 2

    EPG guide (power save)
    Code:
    2008-05-21 22:54:09.795800 [Info.][12]: time in PresentSurface 49
    2008-05-21 22:54:09.842800 [Info.][12]: time in PresentSurface 44
    2008-05-21 22:54:09.884800 [Info.][12]: time in PresentSurface 39
    2008-05-21 22:54:09.967800 [Info.][12]: time in PresentSurface 81
    2008-05-21 22:54:10.025800 [Info.][12]: time in PresentSurface 55
    2008-05-21 22:54:10.077800 [Info.][12]: time in PresentSurface 51
    2008-05-21 22:54:10.124800 [Info.][12]: time in PresentSurface 45
    2008-05-21 22:54:10.165800 [Info.][12]: time in PresentSurface 39
    2008-05-21 22:54:10.207800 [Info.][12]: time in PresentSurface 35
    2008-05-21 22:54:10.231800 [Info.][12]: time in PresentSurface 22
    2008-05-21 22:54:10.260800 [Info.][12]: time in PresentSurface 26
    2008-05-21 22:54:10.286800 [Info.][12]: time in PresentSurface 24
    2008-05-21 22:54:10.335800 [Info.][12]: time in PresentSurface 47
    2008-05-21 22:54:10.363800 [Info.][12]: time in PresentSurface 26

    EPG guide (High performance)
    Code:
    2008-05-21 22:58:53.736800 [Info.][12]: time in PresentSurface 9
    2008-05-21 22:58:53.757800 [Info.][12]: time in PresentSurface 10
    2008-05-21 22:58:53.780800 [Info.][12]: time in PresentSurface 12
    2008-05-21 22:58:53.797800 [Info.][12]: time in PresentSurface 10
    2008-05-21 22:58:53.816800 [Info.][12]: time in PresentSurface 9
    2008-05-21 22:58:53.838800 [Info.][12]: time in PresentSurface 11
    2008-05-21 22:58:53.856800 [Info.][12]: time in PresentSurface 9
    2008-05-21 22:58:53.880800 [Info.][12]: time in PresentSurface 12
    2008-05-21 22:58:53.898800 [Info.][12]: time in PresentSurface 9
    2008-05-21 22:58:53.919800 [Info.][12]: time in PresentSurface 10
    2008-05-21 22:58:53.938800 [Info.][12]: time in PresentSurface 9
    2008-05-21 22:58:53.962800 [Info.][12]: time in PresentSurface 13
    2008-05-21 22:58:53.977800 [Info.][12]: time in PresentSurface 9
    2008-05-21 22:58:54.004800 [Info.][12]: time in PresentSurface 15
    2008-05-21 22:58:54.026800 [Info.][12]: time in PresentSurface 17
    2008-05-21 22:58:54.041800 [Info.][12]: time in PresentSurface 13
    2008-05-21 22:58:54.057800 [Info.][12]: time in PresentSurface 9
    2008-05-21 22:58:54.126800 [Info.][12]: time in PresentSurface 58

    Timing code used:
    Code:
          System.DateTime startTime = DateTime.Now;
    
          ... actual code ...
    
          System.DateTime endTime = DateTime.Now;
          System.TimeSpan span = endTime - startTime;
          Log.Info("time in PresentSurface {0}", span.Milliseconds);
     

    rtv

    Retired Team Member
  • Premium Supporter
  • April 7, 2005
    3,622
    301
    Osnabruck
    Home Country
    Germany Germany
    GraphicContext.TimePassed basically uses QueryPerformanceCounter like this:
    duration = (stop - start) / frequency

    The frequency however is only determined by QueryPerformanceFrequency when the Timer is initialised for the first time. With Cool&Quiet enabled you'll have different frequencies later for sure (e.g. higher CPU load during media playback).

    I've fixed the frequency to be retrieved on every timer call now (Still wondering why the API does offer to call something like QueryPerformanceCounter without QueryPerformanceFrequency; the other way could be useful - but this?).

    In addition I've added a simple yet effective approach to drop up to 5 frames of MP's GUI rendering when those are too late to keep up with a video preview running a maximum of 60 FPS.
    This should cure stuttering previews on stressing screens (like TV Guide).

    Both fixes together might fix the non-EVR related part of the flickering issue. Please tell me how it works out.
     

    tourettes

    Retired Team Member
  • Premium Supporter
  • January 7, 2005
    17,301
    4,800
    GraphicContext.TimePassed basically uses QueryPerformanceCounter like this:
    duration = (stop - start) / frequency

    The frequency however is only determined by QueryPerformanceFrequency when the Timer is initialised for the first time. With Cool&Quiet enabled you'll have different frequencies later for sure (e.g. higher CPU load during media playback).

    I've fixed the frequency to be retrieved on every timer call now (Still wondering why the API does offer to call something like QueryPerformanceCounter without QueryPerformanceFrequency; the other way could be useful - but this?).

    Unfortunately I tried already that same, before reading some documentation and noticing that its not going to help as:

    "The QueryPerformanceFrequency function retrieves the frequency of the high-resolution performance counter, if one exists. The frequency cannot change while the system is running."

    QueryPerformanceFrequency Function ()

    In addition I've added a simple yet effective approach to drop up to 5 frames of MP's GUI rendering when those are too late to keep up with a video preview running a maximum of 60 FPS.
    This should cure stuttering previews on stressing screens (like TV Guide).

    That could have some positive effects, but I still wonder what happens when the PlaneScene is going to spend more than the allowed 20ms for the first time when we start to run out of the time. I'll test the results this evening, when I have some free time.
     

    armandp

    Retired Team Member
  • Premium Supporter
  • April 6, 2008
    987
    623
    Zoetermeer
    Home Country
    Netherlands Netherlands
    i thought catalyst 8.5 solved the overlay flickering but it returned some time after the installation :(
    For me it seems to be related to the deinterlacing method used on the particular broadcast (it's on automatic from CCC).

    i can let it flicker on command (most of the time) by doing:

    Getting into the TV menu or TV guide + Lowering the topmenu (with the play, stop buttons etc..) + highlighting the tv preview
    If the topmenu rolls up the flickering is gone.

    Also SD channels seem more affected then HD channels.
     

    rtv

    Retired Team Member
  • Premium Supporter
  • April 7, 2005
    3,622
    301
    Osnabruck
    Home Country
    Germany Germany
    The frequency however is only determined by QueryPerformanceFrequency when the Timer is initialised for the first time. With Cool&Quiet enabled you'll have different frequencies later for sure (e.g. higher CPU load during media playback).
    "The QueryPerformanceFrequency function retrieves the frequency of the high-resolution performance counter, if one exists. The frequency cannot change while the system is running."

    QueryPerformanceFrequency Function ()

    Despite of many hints from game developers there are "official" remarks about that as well -
    from Microsoft's Stopwatch Documentation
    Note:

    On a multiprocessor computer, it does not matter which processor the thread runs on. However, because of bugs in the BIOS or the Hardware Abstraction Layer (HAL), you can get different timing results on different processors. To specify processor affinity for a thread, use the ProcessThread..::.ProcessorAffinity method.
     

    Users who are viewing this thread

    Top Bottom