Chameleon: WaitVideoOutputStable fails |
|
Issue descriptionHi Tom, I found that on nyan_big, WaitVideoOutputStable often fails. This affects test with audio/video dumping. I added more logs and tried to see what caused the failure. It seems that chameleond thinks receiver is in dual mode (by comparing the PCLK with _PIXEL_MODE_PCLK_THRESHOLD_HIGH (130MHz) However, what got from FPGA is that receiver only dumps to one VideoDumper. So, instead of [(960, 1200), (960, 1200)], it gets [(0, 0), (1920, 1200)] I am not sure if this means receiver is working in single pixel mode. In field manager, it computes the resolution as (0 + 1920, 0). https://cs.corp.google.com/chromeos_public/src/platform/chameleon/chameleond/utils/field_manager.py?type=cs&q=ComputeResolution+package:%5Echromeos_public$&l=68 So, we get different resolution forever. I have tried increasing the timeout but that does not help. 2016-06-30 22:33:47,575 INFO PCLK = 134.652439024 2016-06-30 22:33:47,576 INFO _is_dual_pixel_mode = True 2016-06-30 22:33:47,576 INFO dual_pixel_mode = True 2016-06-30 22:33:47,577 INFO Do_FSM: pixel_mode_changed: False 2016-06-30 22:33:47,579 INFO resolutions in field manager in dual: [(0L, 0L), (1920L, 1200L)] 2016-06-30 22:33:47,579 WARNING Different resolutions between paths: 0x0 != 1920x1200 2016-06-30 22:33:47,586 INFO fpga resolution: 1920x0 2016-06-30 22:33:47,587 INFO rx resolution: 1920x1200 2016-06-30 22:33:47,587 INFO diff resolution: fpga:1920x0 != rx:1920x1200 I am not sure what is the mechanism to detect whether receiver is in dual frame mode. The comment in the code is confusing. # The firmware for the 6803 reference board sets the rx in dual pixel mode # when the pixel clock is greater than 160. Here, we use 130 instead of 160 # as the FPGA works more reliably when the pixel clock is under this value. # Two thresholds defining a hysteresis zone to avoid rapid mode changes due # to pixel clock noise. In the above instance, receiver seems to be working in single pixel mode at PCLK = 134.652MHz In another instance, receiver works in dual mode at 131.446MHz 2015-09-29 01:33:51,287 INFO PCLK = 131.446428571 2015-09-29 01:33:51,287 INFO _is_dual_pixel_mode = True 2015-09-29 01:33:51,288 INFO Do not change mode for hysteresis. Return 2015-09-29 01:33:51,288 INFO Do_FSM: pixel_mode_changed: False 2015-09-29 01:33:51,290 INFO resolutions in field manager in dual: [(960L, 1200L), (960L, 1200L)] 2015-09-29 01:33:51,298 INFO fpga resolution: 1920x1200 2015-09-29 01:33:51,298 INFO rx resolution: 1920x1200 2015-09-29 01:33:51,299 INFO same resolution: 1920x1200 I am wondering if there is a better way to detect whether device is dual mode or single mode. There was an old issue https://bugs.chromium.org/p/chromium/issues/detail?id=453416#c73 changing the threshold value of mode from [115, 125] to [126, 130]. It seems that using PCLK to detect mode is not a reliable approach. Could you please take a look if we can detect mode reliably? Thanks a lot!
,
Jul 1 2016
Hi Tom, think you for the explanation. I see what you mean. So, starting from __init__ of HdmiInputFlow, _is_dual_pixel_mode is set to True. Then, InputFlow Initialize() calls rx Initialize, which set receiver to dual pixel mode. So, the mode is fully controlled by chameleond. In the _SetPixelMode() of HdmiInputFlow, we check PCLK and see if we need to change the mode. Previously, I thought we don't know what mode receiver is in, and we use PCLK to detect it. Now I see I was wrong. The problem now becomes, why does field manager sees resolution [(0L, 0L), (1920L, 1200L)], when it should actually be [(960, 1200), (960, 1200)]. I found that this happens from time to time. For example, I can not reproduce any of this error for the device in the lab. But I can reproduce on my chameleon. I will do more testing on my chameleon and attach logs. Thank you very much!
,
Jul 1 2016
Unfortunately, I can not reproduce this error on my chameleon board today. I will update with the logs if I encounter this in the future. Thanks!
,
Jul 4 2016
Hi Tom, I just reproduced the issue. The chameleond log is attached. The debug information is added by this CL https://chromium-review.googlesource.com/#/c/358370/ Field manager sees resolution [(0L, 0L), (1920L, 1200L)] Is this RX dump useful to check why the resolution seems wrong ? 'TI\x02h\xb1\x00\x00\xc601\xbf\xd0@\x07\xff\x00\x00\x00\x00\x00\x00\x00\x80\xc0\x00\x80\x00\x00\x00\x00\xc0\x00\x00\x90\x00\x00\x00\x00\x00\x1f\x1f\x1f3\x00\x03$\x00\x00\x109\x02\x14\xc0C!\xa6\x00\x90\x00\x00\x00\x00\x00\x1f\x1f\x1f\x13\x00\x03$\x00\x00\x109\x00C!\xa6V\x88\xb3\x00 \x00\x10\x00\xff\xff33\xaa\x89\xff\xff\xff\xff\xff\xff\xff?\x00\x00H\x80\x00\n\x83\x04\x05\x06\x00\x00\x00\x08\x00\x00 `\xe4\x00\x00\x18\xd0\x02 \x08\x00\x01\x01\x04\xff\x0f\x00\x0c\x95\x92\x00\x033\x80\t\xff\xff\xff\x00\x14\x00\x14\x00\x12\x01\xc0\xc4\x0c)\xff \x08\x80\x07 \x000\xd3D\xb0\x06\x03\x08\x00\x00\x00\x00\x00\x02\x00\x03\x00\x00\x07\x00\x00\x00\x00\x07\x00\x00\x00\xff\xff\xff\xff@\x00\x00\xffa>\x00\xffa>\xff\xff\xff\xff\xff\xff\x04<\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff' Thank you very much! |
|
►
Sign in to add a comment |
|
Comment 1 by waihong@chromium.org
, Jun 30 2016