Backend Instructions

A summary of the available backend instructions on PowerVR GPUs

Name

Format

Backend Phase

Description

UVSW

UVSW dest, source

UVSW.writeOp (W0|W1), (S0|S1|S2|S3|S4|S5|_|0...255)

UVS data write

void main()
{  
  gl_Position = inVertex;
}
0 : mov ft0, vi3
    mov ft0.e0.e1.e2.e3,  
    ft0
    uvsw.write ft0, 3;

TESSW

TESSW dest, source

TESSW.tessOp (W0|W1), immediateAddress

Tessellator data write.

ATST

ATST dest, sourceRef, sourceData, sourceStateWord

ATST{.IFB} (P0|_), S0, S1, S2

Alpha Test

DEPTHF

DEPTHF dest

DEPTHF W0

Depth Feedback

FITR

FITR dest, sourceDRC, sourceCoeffPtr, sourceCount

FITR.mode{.SAT} S3, (DRC0|DRC1), S0, (1...maxItrCount)

Iterate value(s)

in vec2 textureCoordinate;
out vec4 fragColor;

void main()
{
  fragColor = vec4(textureCoordinate,  0.0, 1.0);
}
0 : fitr.pixel r0, 
    drc0, cf4, 
    cf0, 2;

FITRP

FITRP dest, sourceDRC, sourceCoeffPtr, sourceWCoeffPtr, sourceCount

FITRP.mode{.SAT} S3, (DRC0|DRC1), S0, S2, (1...maxItrCount)

All values should be multiplied by 1/W

IDF

IDF sourceDRC, sourceSelect

IDF{.DIRECT} (DRC0|DRC1), (S0|S1|S2|S3|S4|S5)

Issue data fence through memory subsystem.

The fence is issued for the first valid instance in a task, in the following order;

{16, …, 31, 0, …, 15}

LD

LD dest, sourceDRC, sourceBurstLen, sourceAddress

LD{.DIRECT} S3, (DRC0|DRC1), (S0|S1|S2|S3|S4|S5|1…16), (S0|S1|S2|S3|S4|S5)

Loads data from memory into supplied destination

ST

ST sourceData, sourceDataSize, sourceDRC, sourceBurstLen, sourceAddress, sourceCoverageMask

ST.TEXELMODE sourceData, source, sourceDRC

ST{.TILED} {.DIRECT} (S0|S1|S2|S3|S4|S5), (0…2), (DRC0|DRC1), (S0|S1|S2|S3|S4|S5|1…16), (S0|S1|S2|S3|S4|S5), (S0|S1|S2|S3|S4|S5|_)

ST.TEXELMODE S2, W1, (DRC0|DRC1)

Stores data from supplied source to memory.

Stores data to memory, texel mode

SMP (SMP1D SMP2D SMP3D)

SMP1D sourceDRC, sourceTextureState, sourceData, sourceSamplerState, sourceSharedLOD, sourceDestPtr, chan

SMP1D{.PROJ}{.FCNORM}{.NNCOORDS}{.LODM}{.PPLOD}{.TAO}{.SOO}{.SNO}

{.WRT}{.SBMode}{.ARRAY}{.INTEGER}{.COMPARISON}{.SCHEDSWAP}{.DIRECT} (DRC0|DRC1), S0, S1, S2, (S3|_), S4, chan

Sample Texture.

One, two or three dimensions

in vec2 textureCoordinate;
out vec4 fragColor;

void main()
{
    fragColor =  texelFetch(sampler,ivec2(gl_FragCoord.xy), 0);
}
3    : smp2d.fcnorm.replace.integer drc0, sh4, r1, sh0, sh11, r0, 4;

ATOM

ATOM.opCode sourceDestSelect, sourceDRC, sourceSelect

ATOM.opCode {.DIRECT} (S0|S1|S2|S3|S4|S5), (DRC0|DRC1), (S0|S1|S2|S3|S4|S5)

Loads data from memory which is operated on with supplied data and operation type is written back to memory and supplied destination