Giter Club home page Giter Club logo

opengpu's Introduction

OpenGPU is an Open Source Hardware Graphics Processing Unit. Its main objective is to be a complete development framework for graphics and general processing(GPGPU).

The current implementation is synthesizable and runs in a Terasic DE1 SoC board, which has an Altera Cyclone V embedding a FPGA and an ARM single core processor in the same chip. Most of the processing occurs on top of a Linux environment, passing the graphic pipeline to the implemented rasterizer, returning to software processing and showing any OpenGL application on a VGA screen.

Next challenges are stabilish a better memory manager, a shader processing system and a framework for fixed functions like data compression and video coding.

Research and specific applications are also welcome... Feel free to contribute or even fork this repository! Remember to tell me you made a contribution, then I can add you to the following contributors list.

Authoring

Original author

Fabrício Ribeiro Toloczko

Institutions
  • University of São Paulo
  • LSI-USP
  • CITI-USP
  • Polytechnic School of University of São Paulo
Special thanks

Professor Marcelo Zuffo as counselor and advisor.

Contributors

Thiago Luqueta - DE1 SoC FPGA preparation

Licensing

OpenGPU is licensed under Apache 2.0 license conditions.

It is available in file LICENSE.txt. Read it before use any part of OpenGPU's code.

How it works

OpenGPU is simple today. It runs all graphic and non graphic pipeline over Mesa3D software stack. The rasterization process, excluding depth test, is done sending triangle data to FPGA implemented rasterizer and getting the quads for pixel shading. Then the process continues on software until it's finally rendered to screen.

Gallium softpipe driver is used for current driver implementation. Modified files from original Mesa sources: sp_setup.c and sp_setup.h. These files are some messed and changes are left mostly uncommented. I should correct this as soon as possible, including separate FPGA specific code in other files. One of the most important organization objectives is to prepare a new Gallium driver for correct merge in a possible Mesa contribution -- if it's important some day, of course.

Contributing

Help me in development, organizing stuff or even telling me some mistake I did. I frequently do things in a statistic large variance way, so help from others and from time is essential to me :)

Thanks for reading!

opengpu's People

Contributors

fabriciorit avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.