GPUBench Test: FpFilltest

Back to Main Page
Fpfilltest measures pixel throughput when performing a simple fragment program that fetches 1-4 values, performs two addition operations, and writes the result out to the framebuffer. While this functionality is similar to that provided by floatbandwidth's streaming (sequential) access test, fpfilltest allows for packing values into a texel of a single texture, or spreading them across up to 4 input textures. Equivalently, output of the shaders data can be packed into a single render target, or spread across up to for MRT output buffers.
Common Functionality
Many of commandline options for this test are present for in other GPUBench tests as well. Input textures are created with the same (SIZExSIZE) dimensions as the framebuffer, thus the test rasterizes SIZE*SIZE fragments. The --min and --max options set the range of sizes to be tested (in increments of --step or, if --exponential is specified, texture/framebuffer size is doubled each time until reaching the maximum size). Supplying a range of values is useful for comparison as well as graph generation purposes.
When packing values into texels, 1,2,3, and 4 component textures are permitted as specified by the --components option. Rasterization of fragments can be controlled in two ways: --render specifies whether a screen covering quad or large triangle is rasterized to generate fragments. If --chunksize [NUM] is provided, instead of a single primitive being drawn, multiple primitives are issued, each covering NUMxNUM sections of the screen. We hoped to emulate CPU-style blocking with this feature.
Test Specific Details
By default, the test packs 'components' values into each texel of the input textures and framebuffer. When the --usemrt option is specified, 'components' single component buffers are used. Thus if 'components' is set to 4 and --usemrt is enabled, then 4 texture fetches would be performed to get the data for a shader, and output would be spread across 4 output buffers.
Example Usage
Pixel throughput when accessing single component textures.
fpfilltest -m 512 -x 512 --components 1
Spread data across 4 textures and output to 4 buffers.
fpfilltest -m 512 -x 512 --usemrt --components 4

Commandline Usage

Usage: gpubench\bin\fpfilltest.exe <options>
  -m, --min=SIZE
             min quad size to test (default: 512)
  -x, --max=SIZE
             max quad size to test (512)
  -s, --step=SIZE
             step size from min to max (1)
  -c, --components=SIZE
            number of components for texture and
            render target. (4)
  -r, --render=STRING
            Specifies how to render the quad
            quad:     issues exact quad
            triangle: issues large triangle (default)
  -e, --exponential
            flag to turn on exponential stepping
  -t, --usemrt
            Use MRT
  -k, --chunksize=SIZE
            Chunk the rendering to SIZExSIZE blocks
  -n, --nocomments
            No comments, just the facts.

GPUBench was developed at the Stanford University Graphics Lab.