Programmable graphics

Matt Pharr, Aaron Lefohn, Craig Kolb, Paul Lalonde, Tim Foley, Geoff Berry
2008 ACM SIGGRAPH 2008 classes on - SIGGRAPH '08  
Overview Recent innovations in computer hardware architecture-the arrival of multi-core CPUs, the generalization of graphics processing units (GPUs), and the imminent increase in bandwidth available between CPU and GPU cores-make a new era of interactive graphics possible. As a result of these changes, game consoles, PCs and laptops will have the potential to provide unprecedented levels of visual richness, realism, and immersiveness, making interactive graphics a compelling killer app for
more » ... modern computer systems. However, current graphics programming models and APIs, which were conceived of and developed for the previous generation of GPU-only rendering pipelines, severely hamper the type and quality of imagery that can be produced on these systems. Fulfilling the promise of programmable graphics-the new era of cooperatively using the CPU, GPU, and complex, dynamic data structures to efficiently synthesize imagesrequires new programming models, tools, and rendering systems that are designed to take full advantage of these new parallel heterogeneous architectures. Neoptica is developing the next-generation interactive graphics programming model for these architectures, as well as new graphics techniques, algorithms, and rendering engines that showcase the unprecedented visual quality that they make possible. PCI-Express), rapidly-improving interconnect technology (e.g. AMD Torrenza and Intel Geneseo) and the promise of integrating CPUs and GPUs on a single chip (e.g. AMD Fusion) allow CPUs and GPUs to share data much more efficiently, thereby enabling graphics applications to intermix computation styles to optimally use the system's computational resources. The success of these new heterogeneous parallel architectures hinges upon consumer applications taking full advantage of their computational power. In order for this to happen, programmers must be presented with intuitive and efficient parallel programming models for these systems. However, decades of work on parallel programming solutions have shown that low-level primitives such as mutexes, semaphores, threads, and message passing are not amenable to creating reliable, complex software systems. Furthermore, existing higher-level parallel programming abstractions have not proven widely successful; these models typically limit developers to a single type of parallelism (i.e., exclusively data-parallel or exclusively task-Neoptica Programmable Graphics-The Future of Interactive Rendering
doi:10.1145/1401132.1401153 dblp:conf/siggraph/PharrLKLFB08 fatcat:xgkajwze6jaaxjjj632syy4w3m