FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
6465 Discussions

Incorrect Frame Buffer Stride Validation in VVP Frame Buffer

dscully
Novice
1,798 Views

Hello,

 

We believe we have discovered an issue with the VVP Frame Buffer component GUI validation for checking invalid values for Inter-buffer Stride in Quartus Pro 23.2.

 

The documentation says the TCL validates the values of Inter-buffer Stride and Inter-line Stride:

dscully_2-1694557336529.png

 

But the calculation of the maximum frame size in the TCL (intel_vvp_vfb_hw.tcl) doesn't take into account that the Inter-line Stride can introduce unused space.  (This is in addition to the unused space resulting from pixel packing, which is correctly accounted for.)

 

The attached screenshots show an invalid set of settings that does not error.

dscully_0-1694557269540.png

dscully_3-1694557427225.png

 

The Inter-line Stride of 16kB multiplied by the maximum field height of 1080 lines gives a minimum Inter-buffer Stride of 16.875MB.

The actual Inter-buffer Stride is 16MB, so the buffer is overflowed by 896kB = 56 lines.  However, no error is displayed.

 

We believe the solution would be to change line 307 in 
intelFPGA_pro\23.2\ip\altera\mtm\cores\vvp\frame_buffer\intel_vvp_vfb\intel_vvp_vfb_hw.tcl

From:

 

set max_bytes_per_frame [expr $max_bytes_per_line * $max_height] 

 

To:

set max_bytes_per_frame [expr $mem_line_stride * $max_height]

 

Thanks,

David

Labels (1)
0 Kudos
1 Solution
blakes_seven
Employee
1,413 Views

David, thanks for spotting this bug, I understand it will be fixed in 23.4.  Your solution looks correct.

View solution in original post

0 Kudos
8 Replies
ZH_Intel
Employee
1,646 Views

Hi David,

 

Thank you for reaching out.

Just to let you know that Intel has received your support request and currently we are confirming the details with our internal team.

I shall come back to you with findings.

 

Thank you for your patience.

 

Best Regards,

ZulsyafiqH_Intel


0 Kudos
ZH_Intel
Employee
1,545 Views

Hi David,


Apologize for the delayed respond.

I understand that this is not a bug.

Only active video frame is stored in frame buffer.

For example, when Htotal = 4400 Vtotal = 2250, only H-active = 3840 and Vactive = 2160 data is stored in frame buffer. The size of a frame in frame buffer is 3840x2160x byte of a pixel.


Thank you.

Best Regards,

Zul


0 Kudos
dscully
Novice
1,524 Views

Hi Zul,

 

"The size of a frame in frame buffer is 3840x2160x byte of a pixel". This is only correct when the inter-line stride is equal to the maximum bytes per line. In general, the size of a frame in frame buffer is max_height x Inter-line stride. Which can be greater than max_width x max_height x byte_of_pixel.

 

In practice, we were using these settings in our video pipeline and the last 56 lines of the frame appeared to be overwritten periodically.  I've attached a screenshot showing this behavior.

 

The behavior disappeared when we changed the Inner-Line stride from 0x4000 (16384) to 0x3000 (12288).


If it is not a bug, can you explain the behavior?

 

Thanks,

David

0 Kudos
ZH_Intel
Employee
1,447 Views

Hi David,


Good day.

We may need more time to clarify on this.

Could you share with us your design project?


Thank you.

Best Regards,

Zul


0 Kudos
ZH_Intel
Employee
1,443 Views

Hi David,


Good day.

We may need more time to clarify on this.

Could you share with us your design project? also the Ip settings(video resolution)?


Thank you.

Best Regards,

Zul


0 Kudos
blakes_seven
Employee
1,414 Views

David, thanks for spotting this bug, I understand it will be fixed in 23.4.  Your solution looks correct.

0 Kudos
ZH_Intel
Employee
1,396 Views

Hi Blakes,


Good day.

Thank you for this clarification and addressing the question.

David, Do you still have further inquiries on this case?

If there is no further inquiries, I will transition this thread to community support. 


Thank you.

Best Regards,

Zul



0 Kudos
dscully
Novice
1,368 Views

Hi Zul,

 

I am glad that this will be addressed in a future version of Quartus. I have accepted Blakes response as a solution.

 

Thank you for your support,

David

0 Kudos
Reply