setp_comp: frente a

Establezca el registro de predicado.

Sintaxis

setp_comp dst, src0, src1

 

Donde:

  • _comp es una comparación por canal entre los dos registros de origen. Puede tener uno de los valores siguientes:

    Sintaxis De comparación
    _Gt Mayor que
    _Lt Menor que
    _Ge Mayor o igual que
    _le Menor o igual que
    _Eq Igual a
    _Ne No es igual a

     

  • dst es el registro de registro de predicado , p0.

  • src0 es un registro de origen.

  • src1 es un registro de origen.

Comentarios

Versiones del sombreador de vértices 1_1 2_0 2_x 2_sw 3_0 3_sw
setp_comp x x x x

 

Esta instrucción funciona como:

per channel in destination write mask
{
  dst.channel = src0.channel cmp src1.channel
}

Para cada canal que se puede escribir según la máscara de escritura de destino, guarde el resultado booleano de la operación de comparación entre los canales correspondientes de src0 y src1 (después de que se hayan resuelto los modificadores de origen).

Los registros de origen permiten especificar swizzles de componente arbitrarios.

El registro de destino permite máscaras de escritura arbitrarias.

El registro dest debe ser el registro de predicado.

Aplicación del registro de predicados

Una vez que el registro de predicado se ha inicializado con setp, se puede usar para controlar una instrucción por componente. Esta es la sintaxis:

([!]p0[.swizzle]) instruction dest, srcReg, ...

Donde:

  • [!] es un valor booleano opcional NOT.
  • p0 es el registro de predicado
  • [.swizzle] es un swizzle opcional que se aplica al contenido del registro de predicado antes de usarlo para enmascarar la instrucción. Los swizzles disponibles son: .xyzw (valor predeterminado cuando no se especifica ninguno) o cualquier replicación swizzle: .x/.r, .y/.g, .z/.b o .a/.w.
  • la instrucción es cualquier instrucción aritmética o de textura. No puede ser una instrucción de control de flujo estático o dinámico.
  • dest, srcReg, ... son los registros requeridos por la instrucción

Suponiendo que el registro de predicado se ha configurado con los valores de componentes (true, true, false, false), se puede aplicar a esta instrucción:

// given r0 = 0,0,1,1
// given r1 = 1,1,0,0
setp_le p0, r0, r1
(p0) add r2, r3, r4

para realizar una adición de 2 componentes.

r2.x = r3.x + r4.x
r2.y = r3.y + r4.y

Los componentes x e y de r2 no se escribirán porque el registro de predicado contenía false en los componentes z y w.

La aplicación del registro de predicado a una instrucción aritmética o de textura aumenta su recuento de ranuras de instrucción en 1.

El registro de predicado también se puede aplicar a si está pred - vs, callnz pred - vs y breakp - vs instructions. Estas instrucciones de control de flujo no tienen ningún aumento en el recuento de ranuras de instrucción al usar el registro de predicado.

Instrucciones del sombreador de vértices