Close

Current Status

A project log for QuickSilver Neo: Open Source GPU

A 3D Graphics Accelerator for FPGAs

ruud-schellekensRuud Schellekens 05/30/2016 at 13:470 Comments

As the deadline for the Hackaday Prize is fast approaching, I thought I'd give you all a quick update on the current status of the project.

This here is the overall block diagram:

A bit bigger than the one we've been building in the project logs so far, but not much more complicated. Starting from the back, I've made the VGA output an explicit component. I've added an additional scanline buffer, the UV-Buffer, which stores higher precision values for R, G and B, which are processed by the Shader as either high-precision colours, or as UV-coordinates for texture mapping. Textures will of course need some amount of caching, and to save on bandwidth, I'm applying Texture Compression (a derivative of DXT1). On the drawing side not much has changed, just the addition of a Z-Buffer. Triangle input will be passed through memory (for which we need a memory controller).

I'm basically using the memory as a big triangle sorter. Rather than demanding the processor to sort all triangles, triangles are placed into "buckets" in memory, each bucket storing triangles with the same top Y-coordinate. QuickSilver then reads each bucket one by one.

A quick overview of the current status:

ComponentCategoryState
VGA OutPixelDone (minor defects)
Pixel BufferPixelDone
Shader (Basic)FragmentDone
UV BufferFragmentDone
Texture CacheTextureTodo
Texture UnpackTextureTodo
Z-BufferRasterDone
DrawlineRasterDone (minor defects)
CalclineRasterDone (minor defects)
Triangle FIFOPreCalcDone (defects)
PreCalcPreCalcDone
Bucket MemoryTriangleActive
Memory ControllerMemoryTesting

Currently I'm cleaning up the drawing pipeling, from PreCalc to Drawline, where there were still some issues. I think you'll like my debug image ;)

Discussions