Graphics Reference
In-Depth Information
Multithreaded
Rendering
7.1 Introduction
As we have discussed throughout the first half of this topic, Direct3D 11 has introduced
some very interesting and powerful new concepts and abilities to its arsenal. However,
some of the most important new features of the API revolve around multithreading. The
average number of CPU cores in a typical user's PC has been steadily increasing, while the
frequencies at which those cores operate have plateaued, and this trend is expected to con-
tinue for the foreseeable future (Sutter). With the availability of these additional processing
cores, the developer must find techniques to use them for tasks that have traditionally been
performed in single threads of execution. It is in the developer's interest to convert as many
tasks as possible to use parallel processing.
Direct3D 11 has been specifically designed to allow an application's rendering sys-
tem to take advantage of multiple cores, and hence, of multiple threads of execution. The
core interfaces that an application uses to interact with Direct3D 11 have been carefully
designed to exhibit well-defined behaviors in multithreaded programs. This promotes the
use of multithreaded programming, while at the same time not explicitly requiring it ei-
ther. All prior versions of Direct3D had either poor or non-existent multithreading support,
making D3D11 a fundamentally different type of API. This also requires a fundamental
review of existing software designs to take advantage of these new abilities. As we will
see later in this chapter, these multithreading, capabilities have been designed to provide
the potential for increased rendering performance by spreading the work required to render
355
Search WWH ::




Custom Search