Xmas said:
I did not say black & white pixels, but pixels without color data. And no, I don't think "ops" is more accurate, because it's actually multiple ops. And "pixels" at least implies that multiple samples are grouped together with MSAA enabled, "ops" doesn't say anything about that.
The most correct term would perhaps be fragment. But if you insist that only pixels shown on screen are real pixels, then what word would you use for the content of rendertargets that never get shown on screen?
I sure wouldn't call them pixels. I'd probably call them SPEs, for Sub-Pixel-Elements, or something similar...
Here's the way I see it:
"ops" is the plural for "op" which is an abbreviation of the word "operation," and none of these is congruent in meaning with the word "pixel." Thus, to say "multiple ops" is redundant, right?--since that's what you mean when you say "ops." A "pixel" is the smallest element rendered to screen. There are no smaller subdivisions of elements rendered to screen below the pixel.
The purpose of a pixel pipeline is to render the pixels to screen that we see. Everything else that goes on in the pipeline during the creation of that pixel, all of the "operations" that are done on that pixel pre-render, are parts of the pixel creation process--a process that has only one goal: the rendering of a final color pixel to screen. A pixel pipeline may only render a maximum of one completed pixel per clock, which is why we need 16 physical pixel pipelines working in parallel to render 16 pixels per clock. If you want 32, you need 32 physical pipelines, etc. All of this is "3d 101," right?
The number of "ops" that can be applied to each pixel in the pre-render stage is not dependent on the number of pixel pipelines present in a gpu, but is dependent on other architectural hardware within the gpu relative to each of the pixel pipelines. Thus some gpus may be able to perform more "ops" on each pixel prior to rendering them than another, but the maximum amount of pixels rendered per clock is still capped in both architectures by the number of physical pixel pipes in the gpu. For instance, the specification ATi publishes as to the 16-pixel-pipe x800 xt PE is 8.3Gigapixels, and since ATi publishes the MHz clock at 520:
(Go here
http://apps.ati.com/ATIcompare/ and select the XT PE and hit the "next" button to get the specs)
...we can conclude that at full speed the XT PE is capable of an absolute maximum of 16 pixels per clock (520x16 = 8.32 Gpixels/sec)
Here is what ATi said in a recent TR interview when asked about rendering two pixels per clock per pipe:
http://techreport.com/etc/2004q2/nalasco/index.x?pg=1
TechReport interview with Nalasco said:
TR: One of the presentations about the X800 said each pixel pipe can produce two pixels per clock, much like the NV30 and NV40 chips can, provided that multisampling antialiasing is enabled. How does this work?
Nalasco: One of the capabilities of our chip is that we have, at the end of our pipeline, the capability to do Z testing and stencil testing, and each pipeline has its own dedicated hardware to do this. When you're doing multisample AA, you're actually testing the Z values and stencil values at multiple locations within a pixel. We built the capability into our hardware that if you have more than one sample per pixel, we can actually do more Z or stencil operations per clock than we can when you're just doing a single test per pixel. The maximum number we can do is two per pipeline in a single clock. Even with the lowest AA setting, which is 2X, we're able to achieve this maximum of 32 Z or stencil operations per clock.
One advantage, I think, that we have in this capability over the GeForce 6800 series is that we can expose this capability even when color writes are enabled, so it's not limited to situations where you're doing Z-only or stencil-only reads and writes. The relative limitation is that we can't make use of this feature when AA is not enabled. However, the belief was that for this class of card, there should be very few cases where there would be any reason not to use antialiasing, and therefore, this wasn't really that big of a limitation.
Note that although the TR question inaccurately asserts "two pixels per clock per pipe" in the question for both the ATi and nVidia products mentioned (TR should have stated, "My impression of an x800 presentation I saw was that..."), Nalasco politely overlooks that erroneous assertion and provides an answer that nowhere states that that x800 does "two pixels per clock per pipe." Instead, the meat of Nalasco's answer is here:
We built the capability into our hardware that if you have more than one sample per pixel, we can actually do more Z or stencil operations per clock than we can when you're just doing a single test per pixel. The maximum number we can do is two per pipeline in a single clock. Even with the lowest AA setting, which is 2X, we're able to achieve this maximum of 32 Z or stencil operations per clock.
So what is it Nalasco actually states can be done in pairs per clock in each pipeline--is it the production of two pixels? Nope, it's "Z or stencil operations"--not pixels--when you're doing more than one sample per pixel--and this brings us squarely back to "ops," doesn't it?
Congruent with our conversation, the following things are not pixels:
Z operations
Stencil operations
fragments
sub-pixel elements...etc., and etc.
In short, lots of things are done inside a pixel pipeline in the process of final pixel creation--which is the sole purpose for a pixel pipeline. Among those things--operations--are Z and stencil operations, which are included in the final output of each pixel pipe, a maximum of one pixel per clock.
Sometimes, depending on the ops that need to be done on the pixel as it is being created in the pipeline, a pixel pipeline may deliver less than one pixel per clock (such as a pixel every two clocks, etc.), but my point here is that at no time will a pixel pipeline ever render more than one, final, pixel per clock.
Maybe we're just debating semantics, here, I don't know. But I have to state, yet again, that in my opinion it is exceedingly unwise and misleading to equate things like Z and stencil operations performed during pixel creation with the rendered pixels themselves. I mean, since color and/or textures are also applied to pixels during their pre-render creation, calling a Z op or a Stencil op a "pixel" strikes me as no more accurate than calling a texture or a color a "pixel." Seems pretty straightforward to me and always has...