[Mesa-dev] Gallium API questions

Brian Paul brianp at vmware.com
Wed Jun 23 16:03:55 PDT 2010


Marek Olšák wrote:
> On Thu, Jun 24, 2010 at 12:25 AM, Marek Olšák <maraeo at gmail.com 
> <mailto:maraeo at gmail.com>> wrote:
> 
>     On Wed, Jun 23, 2010 at 11:51 PM, Corbin Simpson
>     <mostawesomedude at gmail.com <mailto:mostawesomedude at gmail.com>> wrote:
> 
>         Yep, it's that time again. These are just things marked in the
>         docs as
>         unknown, so I'm not grinding any axes, just cleaning stuff up.
> 
>         ~ "If a surface includes several layers/slices (XXX: not yet...)
>         then
>         all layers will be cleared." From the information on
>         pipe_context::clear(). Is this just wishful thinking, or do drivers
>         need to implement this?
> 
> 
>     I believe this has something to do with geometry shaders where you
>     can select a layer (slice, face) you want to emit a primitive to.
>     This way you may e.g. render to a whole cubemap in one pass.
> 
> 
>         ~ An explanation of dual-source blends and how they work would
>         be nice.
> 
> 
>     http://www.opengl.org/registry/specs/ARB/blend_func_extended.txt
>      
> 
> 
>         ~ If logicop_enable and independent_blend_enable are set, are lops
>         performed for all render targets, or only those that have
>         blend_enable
>         set?
> 
>         ~ PIPE_CAP_TEXTURE_SHADOW_MAP and PIPE_CAP_MAX_PREDICATE_REGISTERS
>         aren't explained.
> 
> 
>     I think PIPE_CAP_TEXTURE_SHADOW_MAP means shadow samplers.
> 
> 
>         ~ PIPE_CAP_GUARD_BAND_* obviously refers to the guard bands, but
>         what
>         exactly do they mean as capabilities? Maximum guard band settings?
>         Minimum?
> 
>         ~ Could somebody explain exactly what's up with the RCC opcode? Its
>         definition is kind of ridiculous: dst = (1 / src.x) > 0 ? clamp(1 /
>         src.x, 5.42101e-020, 1.884467e+019) : clamp(1 / src.x,
>         -1.884467e+019,
>         -5.42101e-020)
> 
>         ~ Are we going to introduce new cap bits for parts of the TGSI ISA?
>         (I'll understand if this is off the table for now.)
> 
>         ~ TGSI_SEMANTIC_POSITION is (x, y, z, w) where x, y, and z are
>         position, and w is the homogeneous coordinate. Is w also for
>         perspective divide? Is the perspective divide configurable, or is it
>         always done in shaders?
> 
> 
>     The perspective divide is done per-pixel after the rasterization and
>     before the fragment shader, and there is no way to disable it in
>     Gallium. It's never done in shaders, it's rather a fixed
>     functionality and imposing additional restrictions on it would make
>     it hard to implement in drivers.
> 
> 
> Hm, it's done during the rasterization, actually.

Divide by W takes place in two places:

1. Per-vertex to convert clip coords into normalized device coords.

2. During fragment shader attribute interpolation to do 
perspective-corrected interpolation.  Actually, we usually have 1/W at 
this point so it's a multiplication.

I've rewritten the Gallium docs for TGSI_SEMANTIC_POSITION/COLOR/BCOLOR.

-Brian


More information about the mesa-dev mailing list