This week I started working on metrics and integration.
I started the week building the input latency counter. Currently, it takes any input from the user and measures the latency from the user’s input to the VSYNC pulse that signals the the end of the current frame being sent to the display. This counter includes a small delay that accounts for the time that our system needs to process each input before generating the new colors for the new state of the system.
There are some flaws with this measurement design. For one, if the user’s playfield is already rendered, then the new data input will not be available to the user until the next frame. Since the screen is rendered pixel-by-pixel, the information is also available to the user before the VSYNC pulse. I plan to continue iterating on this metric over the next week. Hopefully we can settle on something that is not too area-intensive, but is reasonably accurate. This is our primary performance metric after all. I know that, at worst, our latency should be a full frame plus some portion of the prior frame if the user’s input arrives late in the prior frame. However, at 75Hz, this means that the last 25% of the prior frame and the full current frame can be generated in the time it takes for a frame to render at 60Hz, our original metric. I’m comfortable with that worst case.
Eric finished a portion of the networking stack last week, so this week we started integrating the stack into our design. At the moment we have a dummy sender on one board, that just generates valid packets with garbage lines to load into the playfield, and the full game running on the other. This works surprisingly well and I’m looking forward to integrating the rest of the stack next week.
So this next week I will be integrating the rest of the network stack and improving the latency measurement. I’m hoping we’ll be done at the end of next week leaving us a week to film the demo video and edit our design review into a final report. This is a reasonable schedule, the only item that I think I’ll have to drop off my todo list was to redo our graphics rendering to produce assets in place of the colored blocks on the screen. This was a stretch goal to begin with, so I’m not too concerned.