text:
|Publication number
|Publication type
|Application number
|Publication date
|Dec 13, 2005
|Filing date
|Mar 6, 2003
|Priority date
|Mar 12, 2002
|Fee status
|Also published as
|Publication number
|Michael G. Lavelle
|Original Assignee
|Sun Microsystems, Inc.
|Export Citation
|BiBTeX, EndNote, RefMan
|Patent Citations (19), Non-Patent Citations (1), Referenced by (10), Classifications (6), Legal Events (4)
|External Links: USPTO, USPTO Assignment, Espacenet
This application claims the benefit of U.S. Provisional Application No. 60/363,596 filed on Mar. 12, 2002 entitled "Dynamically Adjusting Sample Density and/or Number of Rendering Passes in a Graphics System", which is hereby incorporated by reference in its entirety.
1. Field of the Invention
This invention relates generally to the field of computer graphics and, more particularly, to a graphics computing system configured to dynamically adjust a number of rendering passes to achieve a targeted quality constraint (e.g., a minimum supersample density).
2. Description of the Related Art
A graphical computing system may perform supersampling, i.e., may generate samples at higher than pixel resolution, and may filter the samples to generate pixels. Final image quality is in part dependent on the sample density (i.e., the number of samples generated per unit pixel area). Furthermore, the graphical computing system may be configured to operate in a windowing environment in which a user may resize an onscreen window. Because the memory available for sample storage is limited, the product of sample density times widow size (measured in pixels) is bounded. Thus, increases in window size are typically accompanied by decreases in sample density, and thus, image quality suffers. Therefore, there exists a need for a graphical computing system, and corresponding control methodologies, capable of maintaining a target sample density in spite of variations in window size.
In one set of embodiments, a graphics system may include a hardware accelerator and a frame buffer. The frame buffer includes a sample storage area and a double-buffered display pixel area. The hardware accelerator is operable to (a) render a stream of primitives to generate samples, (b) store the samples into the sample storage area of the frame buffer, (c) read the samples from the sample storage area, (d) filter the samples to generate pixels, and (e) store the pixels into a first buffer of the display pixel area of the frame buffer. Furthermore, the hardware accelerator is operable to perform (a), (b), (c), (d) and (e) one or more times on one or more corresponding streams of primitives to complete a frame of an animation before passing control of the first buffer to a video output processor.
In another set of embodiments, a method for maintaining the quality of images generated by a graphics system may be arranged as follows. (The graphics system may be configured to render samples into an available space of a frame buffer based on a programmable sample density, to filter the samples from the sample buffer into a double-buffered display area of the frame buffer.) The method may involve:
(a) computing a realizable sample density corresponding to a first number of passes of the graphics system for an animation frame in response to receiving input defining a new window size;
(b) performing (a) one or more times to determine a value for the first number which corresponds to a realizable sample density which is greater than or equal to a user specified sample density;
(c) writing to one or more programmable registers in the graphics system to set the first number of passes of the graphics system equal to the value.
Such a method may be executed on a host computer coupled to the graphics accelerator through a system bus or a computer network.
In yet another set of embodiments, a method for maintaining the quality of images generated by a graphics system may involve:
(a) receiving input defining a window width and width height for an adjusted window;
(b) selecting a sample density value, from a set of sample densities achievable by the graphics system;
(d) selecting a positive integer value N;
(c) computing a first ceiling of the window width divided by a page width corresponding to the selected sample density;
(d) dividing the window height by the integer value N to determine a first resultant;
(e) computing a second ceiling of the first resultant divided by a page height corresponding to the selected sample density;
(f) multiplying the first ceiling and the second ceiling to determine a per-pass page estimate;
(g) increasing the integer value N and repeating (c), (d), (e) and (f) if the per-pass page estimate is greater than the available space of the frame buffer;
(h) writing to one or more programmable registers in the graphics system to configured to graphics system for N-pass rendering of animation frames.
A better understanding of the present invention can be obtained when the following detailed description is considered in conjunction with the following drawings, in which:
While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present invention as defined by the appended claims. Note, the headings are for organizational purposes only and are not meant to be used to limit or interpret the description or claims. Furthermore, note that the word "may" is used throughout this application in a permissive sense (i.e., having the potential to, being able to), not a mandatory sense (i.e., must)." The term "include", and derivations thereof, mean "including, but not limited to". The term "connected" means "directly or indirectly connected", and the term "coupled" means "directly or indirectly connected".
In one set of embodiments, a graphics rendering system may include a media processor 14, a hardware accelerator (HA) 18, a frame buffer 22 , and a video output processor 24 as suggested by
RAM is an acronym for random access memory.
SRAM is an acronym for static random access memory.
DRAM is an acronym for dynamic random access memory.
SDRAM is an acronym for synchronous dynamic random access memory.
RDRAM is an acronym for Rambus DRAM.
DRDRAM is an acronym for direct Rambus DRAM.
PROM is an acronym for programmable read-only memory
DAC is an acronym for digital-to-analog converter.
RGB is an acronym for red-green-blue.
The media processor 14 may receive a stream of graphics data defining primitives such as polygons, lines and dots from an external system (e.g. a host processor), and perform a number of preprocessing operations on the graphics data steam. The preprocessed graphics data may be forwarded to the hardware accelerator. The hardware accelerator may generate samples for the graphics primitives, and store the samples in a sample buffer allocated in the frame buffer. The hardware accelerator may read the samples from the sample buffer, filter the samples to generate pixels, and store the pixels in a double-buffered display buffer also allocated within the frame buffer. It is noted that a single frame of pixels may be composed from multiple passes of the sample rendering and sample filtering processes. The video output processor may read pixels from the display buffer, and generate a video output signal (or digital video stream) for output to a display device.
In one set of embodiments, the graphics rendering system has a number of features which are targeted for the efficient use of the limited-size sample buffer (allocated within the frame buffer memory).
1.0 System Architecture
The media processor 14 may perform transform and lighting operations and other general-purpose processing operations on the received graphics data. The media processor may include a graphics preprocessor 150 and two processing units (PUs) running at RPU megahertz.
The media processor 14 may use multiple bus interfaces. In one embodiment, the media processor includes a north interface 11 (e.g. an enhanced UPA64S interface), a direct RAMBUS interface 154, and a south interface 160. An external processor (e.g. a host processor) may use the north interface to control the graphics rendering system. The direct RAMBUS interface may support one or more DRAM memories. The south interface may be an extended variant of the UPA64S bus, and allows the media processor to control the hardware accelerator.
In one embodiment, the shared memory 16 may include two or more DRDRAM chips. The shared memory 16 may be used to store program instructions (e.g. microcode) and temporary data. The shared memory may also be used to store buffers for communications between the graphics rendering system and a host system, and to store context information for context switching. The shared memory may also be used as display list memory.
The hardware accelerator 18 may perform 2D and 3D rasterization, 2D and 3D texturing, pixel transfers, imaging operations, and fragment processing.
VP=vertex processor.
PSU=presetup unit.
SU=setup unit.
EW=edge walker.
SW=span walker.
SG=sample generator.
SE=sample evaluator.
TE=texture environment.
FP=fragment pipeline.
FBA=frame buffer address unit.
FBI=frame buffer interface.
FB=frame buffer.
TA=texture address unit.
TRB=texture-buffer read buffer.
TF=texture filter.
FRB=frame-buffer read buffer.
SF=sample filter.
PXM=pixel transfer multiplexor.
PX=pixel transfer unit.
TBM=texture buffer multiplexor.
TBI=texture buffer interface.
The hardware accelerator 18 may have multiple interfaces. For example, in one embodiment, the hardware accelerator may have four interfaces including:
(a) a first interface 161 (e.g. an extended UPA64S interface) through which the hardware accelerator receives commands and/or data from the media processor;
(b) second interface 176 through which the hardware accelerator addresses the device boot PROM and controls the video output processor;
(c) a third interface 187 (e.g., for an eight-way interleaved texel bus) through which the hardware accelerator reads and writes the texture buffer 20;
(d) a fourth interface 300 (e.g., a four-way interleaved pixel bus) through which the hardware accelerator reads and writes the frame buffer 22 .
The texture buffer memory 20 may include an array of SDRAMS (i.e. synchronous dynamic random access memories). For example, in one embodiment, the texture buffer may have eight SDRAMs. The texture buffer may be used to store texture maps, image processing buffers and accumulation buffers. The hardware accelerator 18 may read or write a set of NTMA bits of texture buffer data at SDRAM clock rates. For example, NTMA may equal 128 bits. However, a variety of other values for NTMA are possible and contemplated. In one set of embodiments, each pair of SDRAMs may be independently row and column addressable, to allow arbitrary addressing of 2�2 texture footprints. Furthermore, within each pair, the two SDRAMs may receive independent column addresses.
The frame buffer 22 may include an array of DRAM memory devices (DMDs). The array may include NDRAM of the DRAM memory devices. A first subset of the DRAM memory devices may be accessible by the hardware accelerator, and a second subset of the DRAM memory devices may be accessible by both the hardware accelerator and the video output processor 24. For example, in one embodiment, NDRAM may equal sixteen, and each subset may include eight of the DRAM memory devices. Furthermore, the 16 DRAM memory devices may organized into 4 ranks as suggested by
The hardware accelerator 18 may include a frame buffer interface 300. The frame buffer interface asserts address and control signals which control the flow of data into and out of the DRAM memory devices. The frame buffer interface may be configured to handle requests for frame buffer data (i.e. data stored in the frame buffer) asserted by the video output processor 24.
The storage capacity CFB of the frame buffer 22 may take any of wide variety of values. In one embodiment, the frame buffer may store 72 megabytes. The frame buffer may have a capacity of up to 5.2 million data items. A data item may represent a pixel or a sample. Each pixel of storage in the frame buffer may have 116 planes including:
60 bits of color information (i.e. 30 bit double-buffered RGB),
8 bits of alpha,
8 bits of overlay,
10 bits of window ID,
26 bits of z depth,
4 bits of stencil.
In one embodiment, the hardware accelerator 18 may write up to four pixels or eight samples in a single frame buffer clock, and may read four pixels or samples in two frame buffer clocks.
The DRAM memory devices (DMDs) of the frame buffer 22 may have serial output ports. In one embodiment, a first subset of eight DRAM memory devices may have their serial output ports coupled to the video output processor, and may be used to store displayable pixel buffers, offscreen pixel buffers or multisample buffers. A second subset of DRAM memory devices may not have connections to the video output processor, and thus, may be used to store offscreen pixel or multisample buffers. As a result, in one embodiment, the frame buffer may display up to 2.6 million pixels, and the sample buffer have store up to 5.2 million samples minus the number of displayed pixels. The terms multisample and supersample are used as synonyms herein.
The video output processor 24 may buffer and process the video data output from the first subset of DRAM memory devices. The video output processor may read video data from the DRAM memory devices in bursts. A burst may be Nburst pixels in length. During the burst, Ncc pixels may be transferred for every two video clocks. For example, in one embodiment, Nburst may equal 160 and Ncc may equal 8. It is noted that a wide variety of values may be assigned to Nburst and Ncc. Video output processor may also be configured to perform gamma correction, pseudocolor color maps, and cursor generation. The video output processor may include two (or more) independent raster timing generators that provide two video output streams. For example, one of the video output streams may be provided to the RGB DAC 26 and one of the video output streams may be provided to the video encoder 28.
The RGB DAC 26 may provide a high resolution RGB analog video output at dot rates of up to Rdot megahertz. For example, in one embodiment, Rdot may equal 270 megahertz.
The video encoder 28 may provide an encoded NTSC or PAL video output to an S-video or composite video television monitor or recording device. NTSC is an abbreviation of National Television Standards Committee, a group responsible for defining television and video standards in the United States. PAL is an abbreviation for Phase Alternating Line (a dominant standard for television in Europe).
The boot PROM 30 may contain system initialization and frame buffer control code.
The upper rectangular region minus its dotted subregion corresponds to the media processor 14. The middle rectangular region minus its two dotted subregions corresponds to the hardware accelerator 18. The lower rectangular region corresponds to the video output processor 24.
The dotted subregion of the upper region corresponds to the shared memory 16. The two dotted subregions of the middle region correspond to the texture buffer 20 and frame buffer 22 respectively.
The system bus 104 (e.g. a UPA64S bus) couples the host processor (or host system) to the host interface 11 of the media processor 14. (The system bus is also referred to herein as the host bus.) The controller 160 couples the media processor 14 and the hardware accelerator 18. A bus 32 couples the hardware accelerator to the device PROM 30 and the video output processor 24. Bus 32 is referred to herein as the Hvbus.
The graphics rendering system may include a number of memories such as the frame buffer, the texture buffer, the shared memory, and the device PROM 30.
The graphics rendering system has a number of features that allow for accelerated drawing of graphics into the frame buffer 22, and then, display of the frame buffer contents in one or more video output streams. In one embodiment, the frame buffer memory may be used to store up to 5.2 million data items (where a data item may be either a sample or a pixel); up to 2.6 million pixels may be displayed, and the balance of the data items may be used for offscreen pixel or sample buffers.
The device PROM may contain the bootstrap code for the media processor. The device PROM may also contain the system OpenBoot FCODE (device identification and initialization, console terminal emulator).
Processing Blocks in the Media Processor 14
The host may write "stream" commands into the graphics queue, where the commands are queued up for processing by the graphics rendering system. The host may poll the free word count in the front-end status register to avoid overflowing the graphics queue.
The stream commands may include a series of command strings, each composed of a header word followed by one or more data words. The graphics preprocessor (GPP) pulls strings out of the GQ and interprets them. Depending on the string type, the GPP may route the output in various ways:
The GPP may operate in a "hard tags" mode. In this mode, the GPP may send an ordering tag to the hardware accelerator 18 for each vertex or attribute that it sends to the processing unit(s). This is so that the hardware accelerator may collect the processed attributes and vertices arriving from the processor units, along with the HA register writes and mesh buffer operations that have bypassed the processors and place them all back in the correct stream order. (HA register writes are register writes targeting registers in the hardware accelerator.)
In certain special cases is may be desirable to route all transactions through the processor units. Thus, the GPP may have a "soft tags" mode to support such special cases.
The media processor 14 may include NPU processing units. In the illustrated embodiment, the media processor includes two processor units PU0 and PU1 (i.e. NPU=2). The processing units are also referred to herein as MPUs. The microcode routines that execute on the processor units (PUs) perform a number of functions including, but not limited to, the following functions:
The controller 160 (e.g. a South UPA interface) allows the media processor to be the master of the various blocks in the hardware accelerator 18. The GPP and the PUs may write to the vertex collection and primitive assembly blocks of the hardware accelerator. The PUs may also use the PU direct path to read and write frame buffer pixels, texture buffer texels, and various registers in the hardware accelerator and video output processor (including DP user, primitive assembly, clip trap handling, configuration and context switch registers).
In one embodiment, the direct path bridge is a bus bridge from NUPA to SUPA that allows the host bus to be a SUPA master to read and write FB pixels, TB texels, and various registers in the hardware accelerator and HVbus (including DP user, primitive assembly clip trap handling, configuration and context switch registers). The direct path bridge is also referred to herein as the bus interface unit (BIU) 154.
FB is an acronym for frame buffer.
TB is an acronym for texture buffer.
UPA is acronym for Universal Port Architecture.
NUPA is an acronym for North UPA.
SUPA is an acronym for South UPA
Universal Port Architecture (UPA) is a bus specification. There are 128 bit UPA ports ("UPA128") for CPUs that support masters and slaves, 64 bit ports for I/O chips that support masters and slaves ("UPA64M"), and 64 bit ports ("UPA64S") for slave only devices.
Processing Blocks of the Hardware Accelerator
In one set of embodiments, the hardware accelerator 18 includes the following processing blocks as variously illustrated in
Slave interface: Slave interface (e.g. a South UPA interface) responds to the SUPA master in the media processor. The slave interface may contain status and control registers, interrupt logic, pixel read-ahead logic, data and address buffers. The slave interface receives transactions from media processor. Each transaction includes an address and some data. An address decoder in the slave interface decodes the address (e.g. by using a lookup table) to determine where the transaction should be sent. For example, the address decoder may route the data to any of various HA registers, the vertex processor (VP), the direct path, the render/accelerated path, or the video output processor. The slave interface is also referred to herein as UBI (UPA bus interface).
Vertex processor (VP): Vertex collection and primitive assembly is performed in the vertex processor. The vertex processor collects ordering tags, HA register writes, attribute writes and processed 3D vertex components.
3D vertices may be pushed into a mesh buffer for later reuse. Based on the tag stream order, new and reused vertices are assembled into 3D primitives by the primitive assembly block and then clip tested. Primitives that pass the clip test are launched to the rasterization pipe. Primitives that fail the clip test may be tossed. Ambiguous cases cause a clip trap which is processed by the media processor's microcode.
In one embodiment, 2D vertices arrive as HA register writes and undergo a simplified primitive assembly, without any mesh buffer or clipping support.
Rasterization pipe (RP): The rasterization pipe accepts the launched primitives (lines, polygons, etc.) and decompresses them into pixel fragments. Fragment position, color, alpha, and depth are sent to the sample generator. Fragment texture coordinates are sent to the texture address block.
Sample generator (SG): When stochastically-sampled rasterization of 3D primitives is enabled, the SG determines which sample positions are inside the primitive, interpolates color, alpha, and depth at each interior sample position, sending the results to the texture environment unit (TE).
When filtering (e.g., Gaussian filtering) of 3D lines or dots is enabled, the SG determines a filter weight at each pixel (or sample position) inside the line or point coverage area, then multiplies alpha by the filter weight, and sends the pixel fragment color, alpha, depth and position to the texture environment unit.
When sampling and Gaussian filtering are disabled, or if the primitive is 2D, the SG may pass the rasterized pixel fragment color, alpha, depth and position to the texture environment unit without modification.
Texture address unit (TA): If texturing is enabled, the rasterization pipe sends fragment texture coordinates to the TA. The TA determines the texel sample addresses, the level of detail and blend factors required to look up and filter the texel samples within a specified filter footprint. The TA generates read requests to the texture buffer (TB) for each required texel sample. Note that the term "sample" is also used to describe the set of data values (e.g., rgbaz) computed by the sample generator SG at each sample position interior to a graphics primitive. Context will determine which usage is meant.
Texture filter (TF): The TF receives the texel sample data from the TB, along with the blend factors from the TA, and blends the texel samples together to produce a filtered texel.
Pixel transfer unit (PX): During texturing, the TF output is sent to the PX, which may perform a lookup function on the filtered texel color and alpha values. The PX is also used during direct path and copy operations.
Texture environment unit (TE): During texturing, the TE merges the PX output (texture color/alpha) with the SG output (fragment color/alpha) to obtain textured fragments. If texturing is disabled, the TE passes through the RP/SG fragment color, alpha, depth.
Texture pipe (TP): The TA, TB, TF, PX, TE cluster is referred to herein as the texture pipe.
Render pipe: The cluster of units defined by VP, RP, SG and TE is called the render pipe.
Stream path: The stream path starts at the GQ and GPP, may pass through or around the PUs, passes through the VP and RP, and forks texture to the TP and pixels to the SG, rejoining them at the TE. The TE result is delivered to the stream/direct join pipe synchronization point.
Stream/direct join: The stream and direct paths fork at the host interface of the media processor 14 (i.e. stream goes to GQ, direct goes to the direct path bridge). The stream/direct join point is where the stream and direct paths rejoin, and where the shared path begins.
Shared path: The fragment pipe and writes to the frame buffer are shared by the stream and direct paths. At any given time, one of stream or direct paths may own the shared path.
Fragment pipe (FP): The FP implements per-fragment write operations such as:
In one embodiment, the FP is partly in the hardware accelerator 18 and partly in the frame buffer 22 .
Copy/Filter Operations: The stream commands include a variety of copy/filter operations, in which the rasterization pipe becomes a memory address generator that moves data between or within the TB and the FB:
Direct pixel/texel write path: The direct write path starts at the host interface and the direct path bridge to the controller (SUPA). Write addresses and data are sent through the PX input selector (also referred to herein as the pixel transfer multiplexor) to the PX unit, which may be assigned to perform pixel transfer (PX) operations on the write data. The PX result is sent to the stream/direct join point, and then to either the TB or the FB (via the shared path fragment pipe).
Direct pixel/texel read path. The direct read path starts at the host interface and the direct path bridge to the controller. Read addresses pass through the PX to the stream/direct join point, and then either to the TB or the FB. The memory read data returns through the PX input selector to the PX unit, which may be assigned to perform pixel transfer (PX) operations on the read data before returning the result to the host (via the controller 160 and the host interface 11).
Processing Blocks in or Relating to the Video Output Processor 24
HVBus Interface (HBI): The HBI allows the SUPA bus (and by extension, either of the MPUs or the host computer) to read the device PROM or to indirectly read/write the registers and tables of the video output processor (VOP).
Window lookup tables (WLUTs): The WLUTs define the visual display attributes for each window; they are indexed by the Window ID planes. WLUT entries may specify the following visual display attributes:
The WLUTs may be physically split, residing partly in the hardware accelerator 18, partly in the frame buffer 22 and partly in the video output processor 24. There is also overlay logic in the frame buffer, which determines whether the primary or the overlay planes will be displayed.
Color lookup tables (CLUTs): In one embodiment, four CLUTs are available to store pseudocolor or direct color maps, with 256 triple entries per CLUT. For true color windows, the single Gamma LUT (GLUT) may be used instead (1024 triple entries). It is also possible to bypass the GLUT.
Additional video output functions may include a hardware cursor and dual video timing generators, which may generate timing and data requests for a primary and secondary video output stream.
Video digital-to-analog converters (DACs) or encoders: The primary video output stream may drive a video DAC (e.g., a video DAC which receives 10 bits each of red, green and blue) to an analog computer display. The secondary video stream may drive:
(1) An on-board TV encoder to an S-Video TV monitor or recording device, or
(2) A feature expansion connector. Possible daughter card options include:
In one set of embodiments, the graphics rendering system defers sample filtering until after the rendering for a full scene is complete.
The graphics rendering system may defer sample filtering till just before the display buffer swap. The entire scene is filtered at the animation rate (which depends on scene complexity).
The graphics rendering system performs the following series of steps:
(a) render a scene into the sample buffer (allocated in the FB);
(b) filter the scene from sample buffer to the back display buffer (also allocated within the FB) at animation rate;
(c) swap front and back display buffers (at animation rate);
(d) for each display refresh, display pixels in the display buffer (at video rate, often greater than animation rate).
2.1 Frame Buffer (FB) Allocation
2.1.1 FB Bit Plane Usage
In one embodiment of the frame buffer 22, each pixel (or sample) may have 116 bit planes of data.
When rendering to the sample buffer, the hardware accelerator 18 may write R, G, B, A into Buffer A and also S and Z. S and Z may be needed for stencil and hidden surface removal operations, which determine which samples are visible in the final scene. Alpha (A) may be used for compositing and transparency, which can affect the RGB color values in the final scene.
When filtering, the hardware accelerator 18 may read R, G, B from the sample buffer and write the filtered result (via the PX unit and fragment pipe) to the R, G, B planes of the display buffer (Buffer A or Buffer B, whichever is currently the "back" buffer during double-buffered rendering). The window system may maintain the W and overlay planes separately from the filtering process; the Wp planes may be set to cause RGB true color display.
During display, the Wp planes may select RGB true color display from the "front" display buffer.
2.1.2 FB Memory Allocation
The following discussion will assume that the frame buffer 22 has 16 DRAM memory devices organized in four ranks. However, it is noted that the number of DRAM memory devices in the frame buffer may take any of a variety of values, and likewise, the number of ranks in the frame buffer may take any of a variety of values.
A single DRAM memory device may contain storage for 640�512 data items. (A data item may have 116 bits as suggested by
The basic unit for allocating frame buffer memory is called a "page". In one embodiment, a page may contain 5120 data items. Thus, the frame buffer page capacity may equal 5120K/5120=1024 pages. The first 512 pages are displayable.
The graphics rendering system may support up to Ndr displayable regions, where Ndr is a positive integer. In one embodiment, the graphics rendering system may support up to two displayable regions and an unlimited number of off-screen regions.
For example, the console may be the first displayable region. The first displayable region may be allocated starting at page 0 of the FB memory as suggested by
If there were a second displayable region, it may be allocated just above the console. In the example, if D2 pages are allocated to the second displayable region, the second displayable region may occupy pages D1 though D1+D2−1, where D1+D2<=512 pages. The symbol "<=" denotes "less than or equal to".
If supersampling is requested, an offscreen supersampled region may be allocated at the top of the FB memory (from page 1023 downwards). In the example, if S1 pages are allocated, the offscreen supersampled region may occupy pages 1024-S1 though 1023, where S1+D1+D2<=1024.
If additional offscreen memory were allocated, it may go below the first supersampled region.
For a given frame buffer storage mode (set by the FB—*—MODE registers), each allocation page has a fixed height and width in pixels. The table of
Frame buffer regions are rectangular areas. The region width corresponds to an integer multiple of the allocation page width. The region height corresponds to an integer multiple of the allocation page height. If an odd-sized region is desired (either region width being a non-integer multiple of page width or region height being a non-integer multiple of page height), the next larger integer multiple width and integer multiple height may be allocated.
The total allocated area (in pages) is simply the product of the region width and height (both rounded up to integer pages).
For example, to allocate a FB memory region for an 1152�900 non-stereo display, note that the pageWidth is 320 and the pageHeight is 16. The following computations indicate that the 1152�900 display region may be covered by a frame buffer region having 228 pages.
widthPages=4 pages wide=roundup(1152/320)
heightPages=57 pages high=roundup(900/16)
areaPages=228 pages=4*57
Suppose a graphics window has 700�700 pixels, and an offscreen supersample buffer is to be allocated for the window at a sample density of four (i.e. four samples generated per unit pixel area). For sample density four, the pageWidth is 80 and the pageHeight is 16. The following computations indicate that the supersample buffer may be allocated 396 pages of the frame buffer.
widthPages=9 pages wide=roundup(700/80)
heightPages=44 pages high=roundup(700/16)
areaPages=396 pages=9*44
Library functions may assert a memory allocation request to allocate a FB region, specifying the FB—MODE, along with the desired height and width in pixels. A software driver may perform the above calculations and allocate the number of pages needed to store the desired area in the desired FB—MODE, returning failure/success status and values for FB—BASE (the first allocated page) and FB—STRIDE (the width of the allocated area, in pages). The driver may also keep its own record of the allocated area, for use during subsequent requests.
Also there may be library functions to query for the amount of remaining unallocated memory and another query to ascertain how much memory would be allocated if a specified mode, height and width were requested
Suppose a (double-buffered) pixel display buffer for a display having Wd by Hd pixels is to be allocated. To support this display, the driver may allocate an integer number of FB memory pages given by
ceiling (Wd/pageWidth)*ceiling (Hd/pageHeight),
where pageWidth and pageHeight are the width and height respectively of a FB memory page. The values of pageWidth and pageHeight vary depending on the FB memory allocation mode. The mode may indicate whether the buffer to be allocated is to serve as a display buffer or offscreen buffer. The mode may further indicate whether a display buffer is to be configured for stereo or non-stereo, or whether an offscreen buffer is to be used for pixels or samples. In the later case, the mode may indicate the sample density, i.e. the number of samples per pixel.
In a window system, the graphics rendering system may render to a window that is less than full screen in size. Suppose that a window has size WW by HW pixels, the sample filter (SF) has a footprint of Wf by Hf pixels, and the sample density is DS. In this case, the driver may allocate an integer number of FB memory pages given by the expression
for an offscreen sample buffer corresponding to the window.
Note that the offscreen sample buffer includes a border around the WW�HW window to accomodate the 'skirts' of the sample filter footprint. In the special case of an unmagnified box filter with a footprint that is exactly the displayed pixel, Wf and Hf are zero (since there are no contributions from outside the pixel) and the extra border allocation is not needed.
The finite FB capacity is shared between display buffers and sample buffers. Thus, the maximum sample density is roughly equal to
Floor{(FB size in data items minus display size in pixels) divided by (window size in pixels)},
where Floor{x} is the integer floor function. This implies that lower resolution displays and/or smaller sized windows can support higher sample densities in a fixed-size sample buffer.
For a single-headed 1280�1024 non-stereo display, the display buffer uses (ceil(1280/320)*ceil(1024/16))=256 pages of FB memory. That leaves (1024−256)=768 pages for a sample buffer at 5120 samples per page.
For a single-headed 960�680 stereo display, the display buffer uses (ceil(960/320)*ceil(680/8))=255 pages of FB memory. That leaves (1024−255)=769 pages for a sample buffer. Thus, the same window sizes as in the first example can be supported.
For a single-headed 640�480 stereo VGA display, the display buffer uses (ceil(640/320)*ceil(480/8))=120 pages of FB memory. That leaves (1024−120)=904 pages for a sample buffer. A nearly full-screen window (600�480) supports a sample density of 16 since ceil(600/40)*ceil(480/8)=900 pages which is less than 904 pages.
2.2 Render, Filter Phases
To render a scene frame using multisampling, the graphics rendering system performs a sequence of steps. This sequence of steps is repeated over and over during scene animations. The following description assumes that a window-sized (plus filter footprint) sample render buffer and a screen-sized pixel display buffer have been pre-allocated in the FB memory.
2.2.1 Clear Sample Render Buffer
Before rendering, samples in the (window-sized) sample buffer are "cleared" to the background RGB color with depth equal to infinity and stencil planes reset. The fast fill function accelerates this step. In one embodiment, the fast fill function may operate at approximately 5.3 Billion samples/sec.
2.2.2 Render Multisamples to Sample Buffer
Next, the vertex (and attribute) data that define the scene is sent through the 3-D stream rendering path with multisampled rendering enabled, targeting the sample buffer allocated in the FB, as indicated by
The media processor 14 (i.e. graphics preprocessor and processor units) may perform transform, lighting and clip code generation functions on each vertex in the scene. These functions may be performed in a manner consistent with the OpenGL standard or some other standard.
The vertices may be assembled into primitives (typically triangles) per the OpenGL standard. Primitives which pass the clip test and face-culling test are rasterized. This work may be performed by the vertex processor and the rasterization pipeline. (Recall that the rasterization pipeline RP includes the presetup unit PSU, the setup unit SU, the edge walker EW and the span walker SW units as suggested by
The rasterization pipeline RP produces pixels with position (x,y) and texture coordinates (s,t,r), as well as depth (z) and color (r,g,b,a) values.
The texture processing path includes the texture address unit TA and texture filter TF units. Based on the single texture coordinate vector (s,t,r), the texture processing path reads up to Ntms texel samples (e.g. Ntms=8) from the texture memory 20 and filters these texel samples to determine the per pixel texture color at (s,t,r). In some implementations, the texture processing path may accept multiple texture coordinates and produce multiple texture results per pixel ("multitexture").
The sample generator SG determines the subpixel location of each sample in the pixel and determines which samples are inside the primitive. The sample evaluator SE produces a sample mask and per sample values for (r,g,b,a,z).
The sample processing and texture processing pipelines operate asynchronously and, in general, produce differing amounts of data per pixel. They include queues which allow either pipeline to run somewhat ahead or behind the other pipeline.
For each pixel, the texture environment unit TE applies the (per pixel) texture color from the texture pipeline to all of the samples generated for that pixel. The final textured pixel color may be applied using the OpenGL texture environment function(s), or in the case of multitexture, the OpenGL multitexture extensions. Thus, the texture environment produces multiple textured samples from each pixel (also called fragment samples).
(Each of the DRAM memory devices forming the frame buffer may include one or more pixel processors, referred to herein as memory-integrated pixel processors. The 3DRAM memory devices manufactured by Mitsubishi have such memory-integrated pixel processors.)
The fragments (textured samples) are processed by the fragment pipe and the memory-integrated pixel processor and are written to the pre-allocated sample buffer area in the frame buffer memory. The memory integrated pixel processor may apply the standard OpenGL fragment processing operations (e.g., blending, stenciling, Z buffering, etc.).
In general, within the same scene frame, more than one primitive may contribute sample values to the same sample location. For many such samples (i.e., the nontransparent samples), the Z buffer operation will select the sample value from the "winning" primitive (usually the nearest to the viewer). This hidden surface removal process may cause some of the samples rendered earlier in the scene to be replaced by samples rendered later in the scene. The term "depth complexity" is used to refer to the average number of attempts to update each sample per scene. A cluttered scene with many objects in front of each other, as seen from the eye point, will have a higher depth complexity.
2.2.3 Filter Sample Buffer to Back Display Buffer
For each frame time, once the scene has been completely rendered into the sample buffer, the final "winning values" for each sample remain. At this point, the sample filter SF is applied to samples from the sample buffer to obtain an array of filtered pixels, which are routed via the pixel transfer unit PX and the fragment pipeline FP to the pixel display buffer area in the frame buffer 22 , reusing the pixel copy-address generation hardware in the span walker unit SW and the pixel copy data paths.
The copy, filter and accumulate operations are a special group of stream commands, in which the rasterization pipe RP becomes a memory address generator that induces the transfer of data between or within the TB and the FB. The copy paths are highlighted in
Copy and Sample Filter Operations
Block copy operations move a rectangular area of pixels/texels from a source area in a source buffer to a destination area in a destination buffer. There are four kinds of simple block copy operations:
Block Copy Addressing. The upper left corner of the source and destination areas are defined by the COPY—{X,Y} and RECT—{X,Y} registers. RECT—{H,W} defines the (common) size of the source and destination areas. All of these values have no alignment restrictions; the areas can be positioned and sized with a resolution of one pixel. The source and destination areas lie within the allocated source and destination memory buffers, respectively. When the source or destination is the frame buffer, the memory buffer origin is at FB—{RD,WR}—BASE.
In one set of embodiments, a host routine may reprogram the destination area for each pass in a multi-pass procedure for rendering each animation frame.
Supersample Filter (SSF). A special filter is provided for filtering stochastically-sampled scenes which have been rendered into supersample buffer areas of the frame buffer. This operation is a specialized "frame buffer to frame buffer copy" with filter from the offscreen supersampled rendering source to an onscreen pixel display destination.
Supersample Filter Addressing. The source and destination areas are again defined by COPY—{X,Y}, RECT—{X,Y} and RECT—{H,W}. The source is in a supersampled region of the frame buffer and the destination resides in a pixel region of the frame buffer.
A filter "kernel" region (e.g., in one embodiment, a disk shaped region with radius of up to 2 pixels in source space, centered on the source address that corresponds to each destination address) is read instead of a single source point. When the source address is at or very near the edge of the source area, part of the kernel may fall outside the source area (see sample "s" in
Supersample Filter Programming Model. The supersample filtering includes computing weighted sum of the colors (rgba) of all of the samples that fall within the filter support region, centered at a location in the source space (also called bin space), corresponding to a pixel in the destination space. (Note that the pixels in the source space are also referred to as bins.)
For each output pixel, the hardware computes the kernel center (i.e. the center of the filter support) in the source space. However, the location of the first (or top left most) kernel center is set by the software at RECT—{X,Y}. It can be optionally offset by (0.5, 0.5) by using SSF—MODE—OFFSET—ENABLE ("Supersample Filter Mode Offset Enable Register"). Subsequent coordinates for the kernel centers are, incrementally computed by the hardware accelerator, using the SSF—STEP—SIZE register ("Supersample Filter Step Size Register"). This may be the step—size, along both the X and Y directions.
Magnification Ratio. The destination area can be equal or larger than the source area. The ratio of destination width to the source width is called the Magnification Ratio. It may be specified indirectly by selecting a value for SSF—STEP—SIZE, so that magnification ratio is 1.0/SSF—STEP—SIZE.
Filter Types. In one embodiment, the filter function employed by the supersample filter may be either a box filter or a circular circular filter. This selection is specified in the SSF—MODE register. The filter radius may be specified in the register referred to herein as SSF—FILTER—RADIUS.
Box Filter. The box filter is a square filter. The linear dimension is double the filter radius, SSF—FILTER—RADIUS. Each sample is given the same (maximum) weight. This filter averages the colors of the sample points that are covered by the kernel.
Circular Filter. As the name implies, the kernel for this filter is circular in the source space. Two examples, each with radius=2.0 are illustrated in the
The example on the right of
The filter weights describe a function of the radial distance, r. In one set of embodiments, the filter weights are provided in a table of 128 values; each weight being of the format s.10 with range (−1.0, 1.0). The table may be indexed by (nr)2. It is designed to be hardware friendly, to have high access speed and low gate count. Here nr is simply the normalized radial distance, r/R, where R is the kernel radius.
Copy operations move a rectangular array of pixels from either the FB or the TB to either the FB or the TB. They involve two 2-D addresses (i.e. source and destination). Software preclips the source and destination rectangles.
Source data may be any of:
Data can be copied to any of the following:
The following is a legend for a number of acronyms used in the following discussion:
The Span Walker unit (SW) generates the two addresses. The SW unit sends the TB address to the TA block, which feeds the TBM and TBI (texture buffer interface). The SW sends the FB address through SG, SE, FDP to TE which feeds the FP and FBI. The source addresses may be generated ahead (e.g. about 40–60 clocks ahead in one embodiment) of the destination addresses, to allow enough prefetching to cover the FB or TB read latency.
The source data is read from either the FRB block or the TRB block to the PXM, which feeds the pixel transfer unit (PX). The PX unit can reformat, scale, bias and/or lookup (i.e. perform table lookup on) the data. The PX result data is sent to the TE or the TBM (for FB or TB copy destinations, respectively). The TE or TBM is the "join" point where the PX read data (specified by the SW read address) is matched up with the SW write address. If write data arrives (from the PX) before the write address arrives (from the SW or TA), or vice versa, the TE/TBM will stall the PX or SW, whichever is earlier, until the later unit is ready. Several special cases exist:
The copy source, destination and formats are defined in the RP—{RD,WR,RW}—PDT registers and in the RP—{RD,WR,RW}—TIF registers. The —TEX field in the RP—RD—PDT register defines the source of the data to be copied while —TEX field in the RP—WR—PDT register defines the destination.
The copy mechanism is organized to take advantage of the data storage elements in the pipeline stages and data queues (on the order of a hundred samples or pixels) of the copy data path. The copy data path includes FRB, TE, PX, FP, FWQ, FBI.
FRB: The frame-buffer read buffer is a buffer for data read from FB memory.
FWQ: The frame-buffer write queue is a queue of FB memory requests (write address & data, or read address).
FBA: The frame-buffer addressing unit maps X,Y addresses to memory page and pixel/sample addresses.
FBI: The frame buffer interface is the FB memory controller, includes DMD cache (e.g., 3DRAM cache), global bus and DRAM page control.
In many embodiments, one issues as large a batch of copy read opcodes with filter center addresses as possible without deadlocking at the TE "join" point (where the filtered read data resulting from copy read opcodes and addresses is paired up with copy write opcodes and addresses), then switches to issuing a matching batch of copy write requests with display pixel addresses (which send the filtered pixel data down through the FP to be written to the display area of the FB); this process repeats until all of the samples have been filtered.
When the filtering operations are complete, and thus, the filtered frame scene is in the "back" display buffer, a "swap display buffers" operation is executed to exchange the "front" and "back" buffer assignments, so that the new frame is visible and the old frame's display buffer is available to receive the next filtered frame when the process is repeated.
The buffer swap operation may be implemented by posting a new WID (window ID) entry into the window lookup table (WLUT).
2.3 Variations
Now that the basic flow for the sample render process, sample filter process and pixel display process has been described, a few variations on the theme will now be discussed.
2.3.1 Higher Precision Gamma Correction of Filtered Pixels
In the following discussion, it will be assumed that the sample buffer of the frame buffer can store up to Nbpc=10 bits per color component per sample. However, the principles described admit generalization to any positive integer value of the parameter Nbpc.
During the rendering step as illustrated in
During the "filter sample buffer/copy results to display buffer" step (
The PX unit contains a number of "12 bit in: 10 bit out" lookup tables for R, G and B. These may be loaded with a gamma correction function (to correct for the difference between linearly shaded sample values and the nonlinear characteristics of the monitor/human eye system). Many prior art systems only store 8 bits per component in their frame buffer, and the gamma correction function's nonlinearity causes an additional loss of precision for dark shaded areas; these systems suffer from "Mach band" quantization of dark shaded areas. The recovery of the extra two bits of input by the dithering mechanism described herein produces smoother shading of images than most systems can deliver, without the additional cost of more frame buffer memory and wider frame buffer memory busses.
For more information on averaging to recover precision from dithered samples, please refer to:
Stereovision systems render and display two views of the scene, one as seen from the left eye viewpoint and one as seen from the right eye viewpoint. This is accomplished by rendering the same scene geometry twice, once with a left eye perspective transform matrix, then again with a right eye perspective transform matrix. The two renderings are stored in two different display buffers. The two stored renderings may be displayed by two video channels respectively (e.g., for a "goggles" head mounted type of display). Optionally, the two stored renderings may be alternately displayed on the same display (e.g., while viewing with stereo glasses which have out of phase left and right eye liquid crystal "shutters" synchronized to the display updates).
The requirement for two display buffers increases the display memory required, but does not increase the sample buffer requirement, when the sample buffer is filtered and copied into the display buffer before swapping. This is not true for systems which filter at video refresh time, which require two sample buffers, one for each eye.
So, the "filter and copy" approach described herein supports stereovision without an expensive doubling of sample buffer memory requirements.
2.3.3 Clear while Filtering
The basic frame processing loop has the following form:
for each frame
next frame
The total time per loop is:
For teaching on how to perform the sample buffer clear operation in parallel with the sample filtering, please refer to:
The Read-Clear-Write function (described in above-named application) when implanted in the FBI may be used to speed up the frame processing loop by combining the filtering of the sample buffer with the clearing of the sample buffer. The sample buffer is cleared just after the samples have been read to the sample filter. With the read-clear-write function, the frame processing loop looks like:
clear sample buff
for each frame
next frame
This puts the clear time in parallel with the filter time, so the total time per loop is:
render—time+max(filter—copy—time, clear—time)+swap—time
For most filters, the clear time shorter than the filter time, so the clear time is "free". Thus, the expression above may simplify to:
2.4 Rendering Performance Parameters
To understand the performance of various approaches, it will be helpful to define some key performance parameters.
As mentioned above, if we assume long triangle strips, the number of vertices per triangle approaches one, so the vertex limit and the rasterization setup limit on triangle rate are approximately equal
Rtri=min(Rv/1, Rp)=33 Mtri/sec
The sample fill rate may be limited by the slowest of: the sample generator SG, the texture processing pixel rate multiplied by the sample density, the rasterizer pixel rate multiplied by the sample density and the fragment write rate. But Rw is the same as Rs and Rz is much greater than Rt, so
Rsfill=min(Rs, D*Rt, D*Rz, Rw)=min(Rs, D*Rt)
plugging in Rs=1333 M samples/sec (assuming "buddy" mode) and Rt=166 M textured pixels/sec (assuming a bilinear filter and one layer of texture), it follows that for sample densities (D) up to 8, sample fill rate is texture rate limited.
Rsfill=min(Rs, D*Rt)=min(1333, 166D) Msamp/sec
The time to render a frame with P triangles in the scene (assumes the rest of the database has been view frustum culled by the host), AW window area, C depth complexity and D sample density is:
render—time=max(tri—time, fill—time)
fill—time=(A W *C*D)/min(Rs, D*Rt)
The time to clear the sample buffer before rendering the frame with AW window area and D sample density is:
clear—time=D*A W /Rc=0.188DAw nsec
2.5 Filtering Performance Parameters
The total time to filter and copy the result for the unmagnified box filter is
filter—time=(A W *D/R r)+(A W /R W)
filter—time=(3D+1.5)A W nsec
which approaches 3DAW for higher sample densities.
3.0 Dynamic Allocation of Sample Buffer (SB) per Window Size
The size of the sample buffer in the FB memory may be dynamically adjusted in response to changes in the window size.
Thus, software running on the host computer may monitor the current window size, and automatically adjust the sample density to get the most use out of the fixed size frame buffer. If the user chooses (or resizes to) a smaller window size, the host software may adjust the sample density up, and vice versa, by writing to an appropriate set of hardware registers in the graphics rendering system.
The hardware accelerator 18 may have one or more sample density registers which control the number of samples generated per pixel area. The sample generator SG may have a control register with a sample density field. The sample density field determines the number of sample positions generated per pixel area. The frame buffer addressing unit (FBA) may have a sample density register because it is responsible for mapping fragment addresses into memory page and data item addresses, and the mapping depends on the sample density. The sample filter may have a sample density register so it can grab the appropriate number of samples per pixel area for its filtering operations. The sample density registers are dynamically adjustable.
Host software may write to the one or more sample density registers in the hardware accelerator to change the sample density. In one embodiment, host software writes the same value to all the sample density registers.
Often windows are less than full screen in size. Thus, when the user selects a larger window, the image quality may be higher by virtue of having more pixels of resolution. Conversely, when the user makes the window smaller, the dynamic allocation mechanism maintains the image quality by using more samples per pixel.
As used herein, the term "multisample" is equivalent in meaning to "supersample".
As indicated by the examples in the Section 2.1.3, adjusting the sample buffer size to the window size (instead of trying to setup the sample buffer to correspond to the whole screen) allows significant increases in sample density. For a 1280�1024 display, a nearly full-screen window can support 2 samples/pixel in one pass, a 1000�1000 window can support 3 samp/pix, a 720�670 can support 8 samp/pix, for much better quality.
This mechanism of dynamically allocating the sample buffer memory to maximize sample density may be combined with the mechanisms described in the following sections: i.e. multiple passes for higher sample density and/or stereovision. The combination of dynamic memory allocation and multiple pass rendering allows the user to specify a target quality level (e.g. a desired sample density), and the system performs the minimum number (or close to the minimum number) of passes per frame needed to achieve the target quality level, considering the current window size. Alternatively, the user may specify a minimum performance target (e.g., a maximum frame render time), and the system delivers the maximum possible sample density (or close to the maximum possible sample density) while performing better than the minimum performance target (e.g., while rendering frames within the maximum frame rendering time).
4.0 Reuse of Sample Buffer for Stereovision
One common method of stereovision (described in Section 2.3.2) is accomplished by rendering the same scene geometry twice, once with a left eye perspective transform matrix, then again with a right eye perspective transform matrix. The two renderings are stored in two different display buffers, and may be alternately displayed on the same display (e.g., while viewing with stereo glasses which have out of phase left and right eye liquid crystal "shutters" synchronized to the display updates).
The two display buffers consume more of the frame buffer memory. However, the "filter, then copy" approach described herein (i.e. the approach of rendering samples into offscreen sample buffer, filtering from sample buffer into back pixel display buffer, and then performing display buffer switch) does not increase the sample buffer requirement. Thus, stereovision may be supported without an expensive doubling of sample buffer memory.
A host driver routine may allocate the left and right display buffers in the FB memory, and then, allocate the remaining FB memory as a single reusable sample buffer. A software application (running on the host computer) may implement the following rendering loop:
for each scene frame
next frame
This approach doubles the sample density for a fixed sample buffer size.
5.0 Reuse of SB for Increased Sample Density
The sample buffer capacity is no more than the remainder of the frame buffer memory after subtracting the display buffer requirements. For a given size window, that limits the maximum sample density that can be supported in one rendering pass.
But the "filter, then copy" approach described herein allows a graphics application to reuse the sample buffer to achieve higher sample densities without increasing the sample buffer memory size. The graphics application may use the graphics rendering system to render multiple regions within a scene in multiple passes, one region per pass, at higher sample densities (than if the whole scene were rendered in a single pass), and build up the entire scene in the rear display buffer before swapping the display buffers.
This approach makes it possible to trade more rendering passes for higher sample density. This approach uses a (screen—resolution) double-buffered memory plus a sample buffer memory with size:
5.1 Algorithm
After allocating the display buffers in the FB memory, host software (e.g. a host driver routine) may allocate the remaining FB memory as a single reusable sample buffer. Host software may divide the back display buffer into N adjacent regions, wherein N is the number of passes to be performed per scene frame. Thus, N is an integer greater than or equal to one. Due to the shape of the display memory allocation pages (one embodiment of which is exemplified by the table of
for each scene frame
next frame
The rendering to the sample buffer is performed at the desired sample density, which can be up to N times higher than possible if only one pass were used.
As indicated in Section 2.1.2, the driver software may allocate a sample buffer a bit larger than the region size (i.e. sample density times window width times window height), because of the rounding up to integer FB memory page sizes and also because the sample filter (in certain modes) may have a footprint (support area) which spills outside the region (e.g. when computing pixels on or near the region's edges). For the simple unmagnified box filter (covering a single pixel's area), no extra border is needed.
5.2 Sample Density Examples
The host application may set the view frustum to match the region used in each given pass. Thus, the parts of the scene that do not project onto the current region in the display buffer will be clipped away. With this strategy, the rendering and filtering time for each pass decreases as the region size decreases. It is significant to note that the total time to rasterize and filter the entire scene (all N regions) at the higher sample density can approach the time for a single pass at high sample density on a more expensive system with more memory.
Buffer Clear Time. The time to clear the sample buffer before rendering the frame with window area AW and sample density D may be approximated (at least in some embodiments) by the expression:
clear—time=D*A W /Rc=0.188DA W nsec.
If the graphics application runs N passes into N corresponding regions, each with area AW/N, at sample density N*D, the total clear time (for the N passes) increases in proportion to the sample density ratio (ND/D):
clear—time=N*D*A W /Rc=0.188NDA W nsec
Filter/Copy Time. From Section 2.5, recall that the total time to filter and copy the result for the unmagnified box filter is
filter—time=(A W *D/R r)+(A W /R w)
filter—time=(3D+1.5)A W nsec.
If the graphics application runs N passes into N corresponding regions, each with area AW/N, at sample density N*D, the total filter/copy time (for the N passes) increases in proportion to the sample density ratio (ND/D):
filter—time=N*(3ND+1.5)(A W /N) nsec
filter—time=(3ND+1.5)A W nsec
which approaches 3NDAW for higher sample densities and multiple passes.
Sample Fill Time. From Section 2.4, recall that
R sfill=min(R s , D*R t)=min(1333, 166D) Msamp/sec.
Thus, for single bilinear textures, when D<8, the system may be texture rate limited
R sfill(D<8)=166D Msamp/sec,
and when D>=8, the system may be sample rate limited.
Rsfill(D>=8)=1333 Msamp/sec.
For more complex texturing, the threshold for D may be even higher. If D<8, the time to fill the pixels in window size AW in one pass at sample density D is
fill—time=(A W *C*D)/166*D=(A W *C)/166 microsec
Alternatively, if the graphics application runs N passes into N corresponding regions, each with area AW/N, at sample density N*D, (assuming ND is still less than or equal to 8), the total fill time (for the N passes) does not increase
fill—time=N*((A W /N)*C/166=(A W *C)/166 microsec.
Thus, for single bilinear texturing, multiple passes can increase the sample density to 8 without increasing the fill time. For more complex texturing, the sample density can be even higher without increasing the fill time.
Triangle Rasterization Setup Time. Recall that the time to set up rasterization for a frame with P triangles surviving host view frustum culling and hardware clipping (in other words, the triangles in the scene that are inside the window), window area AW, depth complexity C and sample density D is:
tri—time=P/R p=3P nsec
If the scene has been partitioned into N regions, on average a few more than P/N of the primitives visible in window AW will fall in each region (i.e. primitives which straddle the region boundaries will lie partly in both regions). Thus, the total time to render N regions will not be increased significantly (at least for P large, and N small)
tri—time=N*3((P/N)=3P nsec
Vertex Processing Time.
If the host were to perform "perfect" view frustum culling which is fully overlapped with the hardware processing, then when the scene is partitioned into N regions, a few more than V/N of the vertices will fall (on average) into each region (primitives which straddle the region boundaries will lie partly in both regions). The total time to transform and light vertices for the N regions will not be increased significantly (for V large, and N small).
(lower bound) vtx —time=N*3(V/N)=3V nsec
If the view frustum culling is less than perfect (or none at all), then the vertices processing load may increase by as much as a factor of N.
(upper bound) vtx —time=N*3P=3PN nsec
Frame Time. Putting the pieces together, the total animation frame time per loop is:
Animation frame rate is simply the inverse of animation frame time.
The graphics rendering system may use indirection via a window lookup table to perform the double-buffered buffer swap. Thus, swap—time is insignificant (merely the time to update a table entry). If the double buffer swap is intentionally synchronized to the display retrace (for smoother animation), then swap—time simply has the effect of quantizing the total frame—time to be an integer multiple of the display frame time. In that case, the time spent waiting for the next vertical retrace can mask moderate increases in the other three times without increasing the total animation frame time.
Note that the exemplary values quoted herein for various processing rates are not meant to be limiting. These processing rates may achieve values in a wide variety of ranges from one embodiment to the next.
When N passes are used to increase sample density without adding sample memory:
This means that for scenes that are fill rate limited (a common case), sample density can be increased without adding memory and without significant performance penalty.
For cases that are vertex rate limited, the performance penalty is no worse than a factor of N, and may be reduced by view frustum culling.
Even when significant performance reductions occur, this method permits trading performance for higher sample densities (i.e. better quality). Sample densities can be increased beyond the limits of memory, whether they be cost or technology limits.
6.0 Stereovision and Increased Sample Density
A graphics application may configure the graphics rendering system to exploit both "reuse of the sample buffer for stereovision" (Section 4.0) and "reuse of the sample buffer for increased sample density" (Section 5.0)
for each scene frame
next frame
And, as mentioned in Section 3.0 (i.e., "Dynamic Allocation of SB per Window Size"), a graphics application may be configured to combine either or both techniques (i.e. reuse of SB for stereo vision and/or reuse of SB for increased sample density) with dynamic allocation based on current window size and user preferences (target sample density or target frame rate).
|Cited Patent
|Filing date
|Publication date
|Jun 27, 1996
|Nov 2, 1999
|Microsoft Corporation
|Method and system for multi-pass rendering
|Sep 30, 1996
|Sep 5, 2000
|Apple Computer, Inc.
|Method and apparatus for high performance antialiasing which minimizes per pixel storage and object data bandwidth
|Aug 14, 1998
|May 22, 2001
|Silicon Graphics, Inc.
|Method and system for a RISC graphics pipeline optimized for high clock speeds by using recirculation
|May 29, 1998
|Jun 26, 2001
|Silicon Graphics, Inc.
|Method and apparatus for efficiently switching state in a graphics pipeline
|Oct 14, 1998
|Jul 10, 2001
|Hewlett Packard Company
|System and method for accelerating the rendering of graphics in a multi-pass rendering environment
|Feb 16, 1999
|Nov 6, 2001
|Sun Microsystems, Inc.
|Estimating graphics system performance for polygons
|Aug 20, 1999
|May 7, 2002
|Microsoft Corporation
|Method, system and computer program product for multi-pass bump-mapping into an environment map
|May 7, 1999
|May 21, 2002
|Microsoft Corporation
|Fine grain multi-pass for multiple texture rendering
|Oct 3, 2001
|Oct 1, 2002
|Sun Microsystems, Inc.
|Programmable sample filtering for image rendering
|Aug 20, 1999
|Sep 2, 2003
|Apple Computer, Inc.
|Apparatus and method for fragment operations in a 3D-graphics pipeline
|Jul 7, 2000
|Dec 9, 2003
|Hewlett-Packard Development Company, L.P.
|Anti-aliasing in a computer graphics system using a texture mapping subsystem to down-sample super-sampled images
|Feb 17, 1999
|Apr 6, 2004
|Sun Microsystems, Inc.
|Graphics system with a variable-resolution sample buffer
|Jan 11, 2001
|Jan 17, 2002
|Sun Microsystems, Inc.
|Recovering added precision from L-bit samples by dithering the samples prior to an averaging computation
|Dec 29, 2000
|Jan 17, 2002
|Sun Microsystems, Inc.
|Dynamically adjusting a sample-to-pixel filter to compensate for the effects of negative lobes
|Aug 31, 2001
|Mar 6, 2003
|Kevin Hunter
|System and method for multi-sampling primitives to reduce aliasing
|Jan 31, 2002
|Jul 31, 2003
|Lavelle Michael G.
|Parallel read with source-clear operation
|Feb 17, 1999
|Aug 19, 1999
|Sun Microsystems, Inc.
|Graphics system with variable resolution super-sampling
|Jun 14, 1999
|Jan 6, 2000
|Koninklijke Philips Electronics N.V.
|Filter for transforming 3d data in a hardware accelerated rendering architecture
|Feb 17, 2000
|Aug 24, 2000
|Sun Microsystems, Inc.
|A graphics system configured to perform parallel sample to pixel calculation
|Citing Patent
|Filing date
|Publication date
|Nov 7, 2003
|Dec 19, 2006
|Nvidia Corporation
|Vertex processor with multiple interfaces
|May 13, 2005
|Feb 2, 2010
|Micoy Corporation
|Image processing and display
|Jan 18, 2011
|Dec 18, 2012
|Micoy Corporation
|Image capture and processing using converging rays
|Apr 18, 2012
|Sep 30, 2014
|2236008 Ontario Inc.
|Updating graphical content based on dirty display buffers
|Apr 17, 2013
|Nov 11, 2014
|Micoy Corporation
|Stereo imagers and projectors, and method
|Dec 18, 2012
|Nov 18, 2014
|Micoy Corporation
|Stereo image capture and processing
|Oct 9, 2001
|Aug 21, 2003
|Walls Jeffrey J.
|System and method for configuring a plurality of computers that collectively render a display
|Jan 25, 2006
|Oct 19, 2006
|Daniel Py
|Container closure with overlying needle penetrable and thermally resealable portion and underlying portion compatible with fat containing liquid product, and related method
|May 13, 2005
|Nov 16, 2006
|Micoy Corporation
|Image processing and display
|Jan 18, 2011
|May 12, 2011
|Micoy Corporation
|Image capture and processing using non-converging rays
|U.S. Classification
|345/543, 345/539, 345/503
|International Classification
|Cooperative Classification
|European Classification
|May 27, 2003
Owner name: SUN MICROSYSTEMS, INC., CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LAVELLE, MICHAEL G.;REEL/FRAME:014106/0456
Effective date: 20030517
|May 13, 2009
|Fee payment
Year of fee payment: 4
|Mar 8, 2013
|Fee payment
Year of fee payment: 8
|Dec 14, 2015
Owner name: ORACLE AMERICA, INC., CALIFORNIA
Free format text: MERGER AND CHANGE OF NAME;ASSIGNORS:ORACLE USA, INC.;SUN MICROSYSTEMS, INC.;ORACLE AMERICA, INC.;REEL/FRAME:037280/0159
Effective date: 20100212


text:
Aly Khalifa
Last Activity: March 6th, 2013 11:10 AM
About Me
- About Aly Khalifa
- Biography
- My name is Aly and I'm originally from Egypt. I'm currently studying in a university in Germany and I've been here for over a year now. I guess that covers the basics, right?
- Interests
- Music, football, video games, writing, math (Yes, I actually enjoy math), research, etc.
- Location
- Stuttgart, Germany
- Gender
- Male ♂
- Occupation
- Student
- Nature
- Impish
- Also Known As
- Khalifa
- Favorite Pokémon
- In the series: Pikachu
In general: Charizard, Primeape and Mewtwo
- AlyKhalifa

subset: commoncrawl


text:
Sharlely Kressenberg Hot Mom Swimsuit Pics
December 29th, 2011
I didn't think I'd be posting pictures of a former tennis pro's wife this morning, but there doesn't seem to be a whole lot going on out there so this is happening. Here's Boris Becker's wife, Sharlely Kerssenberg spending Christmas on the beach in her sexy little mom swimsuit. I don't know how old she is, I don't really care, but she seems to be holding up pretty nicely. I need to work on my tennis game.
Related Articles:
Leilani Dowding In A Sexy Swimsuit
Lindsay Lohan Bikini Top Boobs Heaven
Lindsay Lohan Looking A Little Swollen
Lindsay Lohan's Breasts Went Back To Court
Photos: PacificCoastNews
Check Out This Sexy Leg Show!
Cutie Ava Sambora Bikini Dream
HUGE Clown Boobies!
Rihanna's Sweet Wet Booty
Cutie Ava Sambora Bikini Dream
HUGE Clown Boobies!
Rihanna's Sweet Wet Booty


text:
English, PDF, 640kb
Private investment is a powerful development enabler, however governments need sound policy frameworks to enhance its development benefits. This policy brief describes how, working with the OECD, the Southern African Development Community (SADC) has created the SADC Investment Policy Framework (IPF) which provides a roadmap for investment policy reform in five areas having a strong bearing on the investment climate in the region.
À l'occasion d'une visite historique du Premier ministre chinois, M. Li Keqiang, à l'OCDE, à Paris, la République populaire de Chine a décidé aujourd'hui de renforcer sa collaboration de longue date avec l'OCDE et de rejoindre le Centre de développement de l'Organisation.
Adequate infrastructure is necessary for sustainable economic and social development. However investment in infrastructure in most developing and emerging economies needs to be substantially increased. This paper draws on 22 OECD Investment Policy Reviews undertaken in such economies and identifies policy options to enhance the enabling environment for infrastructure investment.
English, PDF, 437kb
At the request of the G20, this report analyses the nature of the stock of protectionist measures introduced since the global financial crisis and their impact on trade and investment.
This blog post John Morrison, Executive Director of the Institute for Human Rights and Business, discusses what the social responsibilities of sporting events should be and argues for greater oversight and due diligence at every stage of the mega-sporting events delivery process.
Chile's Foreign Investment Committee (CIEChile) and the OECD are partnering to improve CIEChile's role as an investment promotion agency, enabling the country to attract more and better investment.
English, PDF, 1,104kb
This report by OECD and UNCTAD compiles G20 investment measures taken between 2 April 2009 and 15 May 2015.
This blog post discusses how the UN Guiding Principles Reporting Framework, introduced in February 2015, help companies provide evidence of how they are conducting human rights due diligence: the process of assessing and addressing their human rights impacts, and tracking and communicating how well they do so.
Investment Insights publishes original research and analysis on current international investment issues. Articles are published under the responsibility of the authors and do not necessarily reflect the views of the OECD or those of its member governments.
English, PDF, 811kb
Protectionism and local content requirements are holding back investment in clean energy and thus undermining the fight against climate change. This Investment Insights puts forward policy options for mobilising investment in clean energy and restoring order and confidence in international markets.


text: A Message to Those Who Text and drive: Go F*** Yourself!JQJ213- Now With An Extra Cylinder!2/11/14 4:51pmFiled to: ranttextingdrivingaccident5117EditPromoteShare to KinjaGo to permalink This always has really bothered me. Driving through my neighborhood, I see an older black Civic coupe. First, he cut me off. Then, I see him drifting across lanes. After a little warning honk, he does it again. This time he goes into the ditch; the back of the car leaving the ground. He almost went right into the traffic sign. Embarrassed (or distracted) he rolls through the stop sign. Please, don't text and drive!Reply51 repliesLeave a reply


text:
How to win online slots
- don't get carried away - online casino games slots are trouble-free, cool and effortless to play and it's simple to get carried away. it is thus extremely essential in playing a few games with a house edge to have some control on capital. keep a preset amount for losing in each slot session and at what time the session is ended that's it you quit. don't run after defeats.
- don't play complete coin except you require - don't play complete coin on
machines that are "straight multipliers" or "equal distribution".
(eslot winners)
if you come across the topmost pay line and observe roughly: 100 coins intended for one coin; 200 coins intended for two coins; 300 coins intended for three coins.
you have to grasp that adding further coins to that initial one does not give you something additional. you are just playing twofold as a great deal to win.
- play max coins on progressives - you ought to play maximum coins on a
progressive machine to be capable of winning the progressive jackpot plus
that's the single motive you're actually playing these online slot
if you don't play maximum coins, you're simply constructing the jackpot in favor of a new participant devoid of probability to win it yourself.
- machines are warm plus chilly - don't consider the common detained faith
that slot machines are hot otherwise cold and that if you can understand these
bands you can hit the machine - you can't.
the winning and losing at the casino slot game are the upshot of the random feature of the game, and cycles are merely observable one time they have been.
- slot systems - don't undertake them! they are useless. playing online slots is perfectly hits and misses. you cannot apply a technique on an accidental draw - period! (ref: online slots gambling)
- take part in machines you're relaxed with - choose a slot machine you truly get pleasure from playing moreover next play that machine pro greatest payout achievable. if you are fond of the offer of gigantic jackpots, in that case have fun with progressives.
- ensure the payout table - study the tracks on top of the multi-line games warily to make the most of your payout. (slot winner's tips)
- play higher size - if you can have the funds for higher size slots, you may believe aimed at superior quantity, like a solo one-dollar coin. while playing online slot machines the advanced the quantity the enhanced the benefits is.
- the house edge acquire earnings - slot machines have a superior house edge compared with extra casino games and you require bearing this in mind. even winning online slot is the goal of the game however playing online slot machines above the long run it will charge you funds to play as the chances are mounded in opposition to you.
- let yourself go - if you play internet slots machines take care you take pleasure in them and let yourself go anticipate losing however also be equipped to be successful! envisage leaving in the midst of a million jackpots.
eslot winners
eslot winners (slot winner's tips)
douglas b. sat at cashsplash
when douglas b. took a seat down to start playing cashsplash on may 18, he was hopeful to win one or two dollars also have some good time. douglas b. found himself us $98,867.67 wealthier once he got the entire 3 cashsplash icons to turn up over his pull!
eslot winners news
slotland break record by means of third major jackpot win
on october 23rd the newest of three jackpots that were more than $100,000 was remunerated by slotland casino. mineomine was the fortunate winner over a golden 8 slot machine. the player won $134,252. (how to win online slot)
jackpot factory publicizes winners of world series of slots
the world series of slots was an enthralling tournament that lasted quite a few months. they have publicized the winners of the wsos as well as the outcome will be bittersweet in favor of americans.
online casino jackpot winner hits jackpot without risking anything
kerri t. strong-willed someday that she was heading for trying her fortune over a few slot machines online. she hit a $14,592 jackpot devoid of risking one dollar of her personal cash.
slot winners tips
experts slots tips to win at slots (how to win online slot)
commence with low-denomination machines for instance penny and nickel machines. performing so will provide you with instance to become skilled at the machines devoid of losing your stake rapidly.
pick a slot machine by three reels rather than four. it may well emerge that you would raise your odds with four reels, though actually; the odds are just the contradictory. you reduce your odds by millions as you play against a four-reel machine.
slot machines in high-traffic sections are estimated to pay out further frequently. picking a machine within a further noticeable region of the casino like on the boundaries of walkways or close to the door—is further expected to get you a "loose" machine.
pass up slot machines in locations such as bus stations as well as airports. these machines are a great deal fewer expected to pay off as prospective slot players don't wait long enough to eyewitness a series of losers. these machines are programmed strongly.
Learn how to play slots machine by way of tiny jackpots. megabucks jackpots that present millions meant for a fortunate spin appear striking; however you'll need to use further to craft that payout. slot machines by means of tiny jackpots typically pay out that jackpot often.
for bigger payouts, play the utmost number of coins you can play over every turn. a few machines reimburse 1,000 coins meant for betting single coin; however they pay 5,000 coins for betting three coins. a three-coin bet is one means to raise your closing take.
carry a determined sum of cash and give up when it's vanished. you could not go home a huge winner consistently; however you can stay away from being a huge loser if you will utilize a regimented approach.


text: Iconic is the word often used by people to describe the Talon series. Why? Ospery believe that iconic products should define a category; so they take it as a compliment. The AirScape back panel and die-cut foam hipbelt and harness keeps your load under close control but allows ventilation to run free. The zipped pockets on each side of the hipbelt allow quick and easy access to smaller items like phone, powerbar, GPS. The single buckle lid closure means rapid access and great load compression from the top. On top of the lid you will find another conveniently placed pocket, ideal for gloves, hat, map etc. The side compressors keep can run either under or over the stretch powermesh side pockets. Keeping hydrated during activity is essential and re-filling your hydration reservoir has been made easy with the quick access external hydration sleeve. Our unique Stow on the Go system means no more pack on and off to store your trekking poles, just simply pass the poles through the two elasticated loops for an easy hands-free solution. The reflective Talons keep you visible to headtorch or vehicles if moving in low light conditions. Iconic? That sounds about right...Check stock and price


text:
Event includes 3 distances: a timed 5K Run, a 1 Mile Family Walk and a Kids Run.
Event features a post event, beach themed party with food, vendors and entertainment.
All participants receive an awesome event shirt.
5K finishers get a cool medal that doubles as a refrigerator magnet and a bottle opener.
The special Election was held before the December Board Meeting at 6:15pm at the Academy Sports at Military and 1604 on 13 December 2016.


text:
Will do ma'am! How very sad...
Pam Evans
Kemp, TX
zone 8A
----- Original Message -----
From: email@example.com
Sent: 7/22/2004 10:29:27 AM
To: email@example.com
Subject: Re: [CHAT] Slugger pic
> Just had an email from a dear friend whose cat is ill. This cat is the
> mother of my two
> younger girls. Her story is that she was abandoned in a house that had been
> owned
> by the county when they had to evict the tenant for various abuses. Seeing
> that she was largely pregnant, the staff at the big house at Lasdon Park and
> Arboretum adopted her,
> and kept her hidden from the authorities in an upstairs room until her
> kittens were old
> enough to be taken away. We took two, and a staff member took the other two.
> By
> that time her presence was known, and the staff were instructed to dispose of
> her, at
> which time Gary saw her and fell in love with her and demanded her for his
> birthday gift. Gary lives with an older man in a house that is pretty much like
> a museum - everything just perfect. Bill, had never had a pet, and didn't
> want one. It has taken them nearly three years
> to adjust, but they are both besotted now. Missy, the cat has not been an
> easy pet.
> She apparently has no voice - never makes a sound - and when they took her to
> the
> vet, found that she had no teeth on one side of her mouth. She had clearly
> been abused
> before the Lasdon staff rescued her. Gary is distraught - he's a neurotic
> musician and
> very sensitive to such things. Please give a prayer for Missy's recovery.
> Auralie
> ---------------------------------------------------------------------
> Support hort.net -- join the hort.net fund drive!
> http://www.hort.net/funds/
Support hort.net -- join the hort.net fund drive!


text:
MH-6 Little Bird
Got the urge to build one a little while back, so I did. I admit, the size of the build is not that little (it is a 5 wide design) but I do like the shaping. I may end up revisiting the design as a 4 wide, but I dunno.
In other news, college starts back up again tomorrow, so my uploading schedule will most likely take a hit. :(
I'll still be active, so don't worry about that.
Also, check out my last vehicle upload in case you missed it.
12,981 views
228 faves
85 comments
Taken on January 22, 2012


text: The Goblin Formula wiki last edited by ygclouzet on 10/19/15 09:03PM View full history Norman Osborn framed his business partner, Mendel Stromm, in order to gain complete control over the business. Norman begin experimenting on a formula which resulted in transforming an Osborn employee into the Proto-Goblin. When Proto-Goblin tried getting revenge against Norman, George and Arthur Stacy manage to save his life. During the struggle, Stromm's desk was smashed which revealed the rest of Stromm's research. The formula explodes in Norman's face. Norman continued working on the formula. When mixing the ingredients, it began to turn green and exploded in Norman's face. He spent weeks in the hospital. When he was released, he realized that he was stronger and smarter than before. Thus the Green Goblin was born.Others have sought out the formula. Jason Macendale attempted to gain the formula for himself. It was Roderick Kingsley, the original Hobgoblin that experimented on it more and perfected the formula. However, Kingsley was smart enough to not test it out on himself, and used a thug by the name of Lefty Donovan. He monitored Donovan's vitals during a battle with Spider-Man, and when Kingsley felt he passed his test, he had Donovan killed by causing his goblin glider to crash into the side of a building. Kingsley soon thereafter administered his improved formula upon himself, and is the only goblin to date who didn't succumb to insanity after being exposed to the formula.


text:
Is Leser India incorrect or missing key business information? Update your Hotfrog listing today.
Contact details
Are these details correct?
Hotfrog INDIA provides information regarding Leser India in Sardar Patel Road Andhra Pradesh. Leser India is located at Mahalakshmi Hydrotechs, 53/A 1st Floor Paigha Colony, Sardar Patel Road Andhra Pradesh 500 003 and provides Spare Parts services. Contact them on +91 4027900021 or by visiting them on their website http://www.leser.co.in.
Is Leser India in Mahalakshmi Hydrotechs, 53/A 1st Floor Paigha Colony, Sardar Patel Road Andhra Pradesh 500 003 your business? Claim your listing and attract more leads by adding more content, photos and other business details.
We have more Spare Parts services in Sardar Patel Road Andhra Pradesh available on Hotfrog INDIA. You can update your search for Sardar Patel Road Spare Parts by location, keyword or service options.
Small Business Hub
Sharing tips, ideas and advice to help grow your small business.
Your profile without ads
Have you considered upgrading to Hotfrog AdVantage? No competitor advertising means exclusive focus on your business. You take centre stage.
Create your free Hotfrog business profile
Follow Hotfrog on:
Share on:
Hotfrog Small Business Hub


text:
Lilli Lewis and the Shiz
- Username: folkrockdiva
- Following: 5, Followers: 9
- New Orleans, LA 70122
- http://folkrockdiva.bandcamp.com
- Rock, Singer-Songwriter, Soul
- Band
- Tipitina's, Hard Rock Café, Café Istanbul, Siberia, Hi Ho Lounge, AllWays Lounge, Neutral Ground, Banks Street Bar
Contact | Follow | Block | Write a Comment
Songs (5)
|Ride Out
|Plays: 638
|Grey Girl
|Plays: 518
|The Oil Spill
|Plays: 525
|Plays: 483
|Shut Up and Sing
|Plays: 517
From the soul of the South comes the conscious, hippie, folk-rock and soul of Lilli Lewis and The Shiz."Lilli Lewis has Sister Rosetta Tharpe's virtuoso commitment to her instrument and Odessa's vocal power creating a show that is a force of nature." Eric Cager, Cutting Edge CE Conference


text:
159 Attending
Holly Dicker talks Broken English Club, Blueprint Records and J.G. Ballard with the veteran UK artist.
22 comments
4 comments
1 comments
7 comments
Post a comment
10 comments
Tue, 23 Jun 2015
2 comments
Digital Tsunami hosts a compelling set of post-punk, no wave and more from Oliver Ho's Broken English Club alias.
Wed, 8 Apr 2015
Post a comment
The UK techno veteran goes in-depth on one of his many aliases.
Fri, 25 Oct 2013
Before the postponed show on MOnday 14 Oct. 13. Oliver was interviewed by MTV Vietnam. This week until today this is aired 4 times a day
Mon, 16 Sep 2013
Made especially for our special guest mr Oliver Ho ho ho chi minh city! aka Raudive. The big show takes place 12 October 2013 @ Blanchy's Tash 95 Hai Ba Trung HCMC VN. Les Siestes Electroniques will take over the terrace / rooftop floor and that means.. breaking Blanchy's.. 100% underground from the Heart! Because we love minimal and minimal loves YOU all!
Several days of shooting with the whole crew, loads of fun.. it is Saigon it is Heart Beat and all we love is good music.
Sat, 3 Aug 2013
Oliver Ho joins Heart Beat Saigon coming 12 October. Expect mayhem and some very original music. We look forward to meeting him and playing with him!!
Fri, 25 May 2012
Official video for Raudive's Widescreen track off of the Glass Hearts EP on THEMA
Video by: CP T. Morada
Music: Widescreen by Raudive
Glass hearts // [THEMA026]
Mon, 30 Apr 2012
New mix, as part of the Dronecast series, featuring Oliver Ho aka Raudive.
Wed, 24 Nov 2010
Raudive giving a roundup of hot releases for 2010
Thu, 30 Sep 2010
Thu, 16 Sep 2010
Oliver Ho talks about his new label Wires, his Raudive productions and what influences his music.
Fri, 28 May 2010
Listen to the new mix from Raudive/Oliver Ho, featuring music from his new label Wires and recent releases on Macro Recordings.
Thu, 19 Nov 2009
Another submission from the boys in Minneapolis - again... We want people to beable to see that there is more to the US besides SanFran, LA, and NYC.
Minneapolis has been a hot bed of underground music for years and years.
In this issue We show a little bit about Oliver Ho aka Raudive with a Podcast and Interview.
Thu, 26 Jan 2017
4 comments
The June 17th show at Plaza Mayor De El Poble Espanyol will also feature live sets from Paranoid London and Broken English Club.
Mon, 8 Aug 2016
Tommy Gillard joins the UK producer on the new record for Death & Leisure.
Mon, 4 Jul 2016
10 comments
It's their first record together since 2010.
Wed, 8 Jun 2016
He'll DJ and play as Broken English Club over the next two weekends.
Thu, 31 Mar 2016
3 comments
The new label is inspired by the KAOS parties in London.
Wed, 23 Mar 2016
22 comments
The UK techno label is celebrating two decades in the game with a full-length compilation of new tracks.
Mon, 29 Feb 2016
He'll kick off with a Broken English Club EP this spring.
Thu, 15 Oct 2015
13 comments
Suburban Hunting will come via Cititrax next month.