Commit 610c8c93 authored by Kristian H. Kristensen's avatar Kristian H. Kristensen
Browse files

freedreno/registers: Update with GS, HS and DS registers


Signed-off-by: Kristian H. Kristensen's avatarKristian H. Kristensen <hoegsberg@google.com>
parent 628ed1bb
......@@ -1825,9 +1825,18 @@ to upconvert to 32b float internally?
<reg32 offset="0x8000" name="GRAS_UNKNOWN_8000"/>
<reg32 offset="0x8001" name="GRAS_UNKNOWN_8001"/>
<reg32 offset="0x8003" name="GRAS_UNKNOWN_8003"/>
<!-- always 0x0 ? -->
<reg32 offset="0x8004" name="GRAS_UNKNOWN_8004"/>
<enum name="a6xx_layer_type">
<value value="0x0" name="MULTISAMPLE_ARRAY"/>
<value value="0x1" name="ARRAY"/> <!-- 2d array and 3d -->
<value value="0x2" name="CUBEMAP"/>
</enum>
<reg32 offset="0x8004" name="GRAS_LAYER_CNTL">
<bitfield name="LAYERED" pos="0" type="boolean"/>
<bitfield name="TYPE" low="1" high="2" type="a6xx_layer_type"/>
</reg32>
<reg32 offset="0x8005" name="GRAS_CNTL">
<!-- see also RB_RENDER_CONTROL0 -->
......@@ -1891,6 +1900,10 @@ to upconvert to 32b float internally?
<!-- always 0x0 ? -->
<reg32 offset="0x809b" name="GRAS_UNKNOWN_809B"/>
<reg32 offset="0x809c" name="GRAS_UNKNOWN_809C">
<bitfield name="GS_WRITES_LAYER" pos="0" type="boolean"/>
</reg32>
<reg32 offset="0x80a0" name="GRAS_UNKNOWN_80A0"/>
<reg32 offset="0x80a2" name="GRAS_RAS_MSAA_CNTL">
......@@ -1961,8 +1974,9 @@ to upconvert to 32b float internally?
</enum>
<bitset name="a6xx_2d_blit_cntl" inline="yes">
<bitfield name="ROTATE" low="0" high="2" type="a6xx_rotation"/>
<bitfield name="SOLID_COLOR" low="7" high="7" type="boolean"/>
<bitfield name="ROTATE" low="0" high="1" type="a6xx_rotation"/>
<bitfield name="HORIZONTAL_FLIP" low="2" high="2" type="boolean"/>
<bitfield name="SOLID_COLOR" pos="7" type="boolean"/>
<bitfield name="COLOR_FORMAT" low="8" high="15" type="a6xx_color_fmt"/>
<bitfield name="SCISSOR" pos="16" type="boolean"/>
<!-- required when blitting D24S8/D24X8 -->
......@@ -2367,11 +2381,18 @@ to upconvert to 32b float internally?
<reg32 offset="0x8e07" name="RB_CCU_CNTL"/> <!-- always 7c400004 or 10000000 -->
<reg32 offset="0x9100" name="VPC_UNKNOWN_9100"/>
<!-- always 0x00ffff00 ? */ -->
<reg32 offset="0x9101" name="VPC_UNKNOWN_9101"/>
<reg32 offset="0x9101" name="VPC_UNKNOWN_9102"/>
<reg32 offset="0x9104" name="VPC_GS_SIV_CNTL"/>
<reg32 offset="0x9105" name="VPC_UNKNOWN_9105">
<bitfield name="LAYERLOC" low="0" high="7" type="uint"/>
</reg32>
<reg32 offset="0x9107" name="VPC_UNKNOWN_9107"/>
<reg32 offset="0x9108" name="VPC_UNKNOWN_9108"/>
......@@ -2441,6 +2462,22 @@ to upconvert to 32b float internally?
<bitfield name="PSIZELOC" low="16" high="23" type="uint"/>
</reg32>
<reg32 offset="0x9302" name="VPC_PACK_GS">
<doc>
num of varyings plus four for gl_Position (plus one if gl_PointSize)
plus # of transform-feedback (streamout) varyings if using the
hw streamout (rather than stg instructions in shader)
</doc>
<bitfield name="STRIDE_IN_VPC" low="0" high="7" type="uint"/>
<bitfield name="POSITIONLOC" low="8" high="15" type="uint"/>
<!--
This seems to be the OUTLOC for the psize output. It could possibly
be the max-OUTLOC position, but it is only set when VS writes psize
(and blob always puts psize at highest OUTLOC)
-->
<bitfield name="PSIZELOC" low="16" high="23" type="uint"/>
</reg32>
<reg32 offset="0x9303" name="VPC_PACK_3">
<doc>
domain shader version of VPC_PACK
......@@ -2529,6 +2566,16 @@ to upconvert to 32b float internally?
<bitfield name="PSIZE" pos="8" type="boolean"/>
</reg32>
<reg32 offset="0x9b02" name="PC_PRIMITIVE_CNTL_2">
<doc>
geometry shader
</doc>
<bitfield name="STRIDE_IN_VPC" low="0" high="6" type="uint"/>
<bitfield name="PSIZE" pos="8" type="boolean"/>
<bitfield name="LAYER" pos="9" type="boolean"/>
<bitfield name="PRIMITIVE_ID" pos="11" type="boolean"/>
</reg32>
<reg32 offset="0x9b03" name="PC_PRIMITIVE_CNTL_3">
<doc>
hull shader?
......@@ -2551,8 +2598,22 @@ to upconvert to 32b float internally?
<bitfield name="PSIZE" pos="8" type="boolean"/>
</reg32>
<!-- always 0x0 ? -->
<reg32 offset="0x9b06" name="PC_UNKNOWN_9B06"/>
<reg32 offset="0x9b05" name="PC_PRIMITIVE_CNTL_5">
<doc>
geometry shader
</doc>
<bitfield name="GS_VERTICES_OUT" low="0" high="7" type="uint"/>
<bitfield name="GS_INVOCATIONS" low="10" high="14" type="uint"/>
<bitfield name="GS_OUTPUT" low="16" high="17" type="a6xx_tess_output"/>
</reg32>
<reg32 offset="0x9b06" name="PC_PRIMITIVE_CNTL_6">
<doc>
size in vec4s of per-primitive storage for gs
</doc>
<bitfield name="STRIDE_IN_VPC" low="0" high="8" type="uint"/>
</reg32>
<reg32 offset="0x9b07" name="PC_UNKNOWN_9B07"/>
<reg32 offset="0x9e08" name="PC_TESSFACTOR_ADDR_LO"/>
......@@ -2581,6 +2642,7 @@ to upconvert to 32b float internally?
<reg32 offset="0xa004" name="VFD_CONTROL_4">
</reg32>
<reg32 offset="0xa005" name="VFD_CONTROL_5">
<bitfield name="REGID_GSHEADER" low="0" high="7" type="a3xx_regid"/>
</reg32>
<reg32 offset="0xa006" name="VFD_CONTROL_6">
</reg32>
......@@ -2737,6 +2799,31 @@ to upconvert to 32b float internally?
<reg32 offset="0xa870" name="SP_GS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"/>
<reg32 offset="0xa871" name="SP_GS_UNKNOWN_A871"/>
<reg32 offset="0xa873" name="SP_PRIMITIVE_CNTL_GS">
<!-- # of VS outputs including pos/psize -->
<bitfield name="GSOUT" low="0" high="4" type="uint"/>
<bitfield name="FLAGS_REGID" low="6" high="13" type="a3xx_regid"/>
</reg32>
<array offset="0xa874" name="SP_GS_OUT" stride="1" length="16">
<reg32 offset="0x0" name="REG">
<bitfield name="A_REGID" low="0" high="7" type="a3xx_regid"/>
<bitfield name="A_COMPMASK" low="8" high="11" type="hex"/>
<bitfield name="B_REGID" low="16" high="23" type="a3xx_regid"/>
<bitfield name="B_COMPMASK" low="24" high="27" type="hex"/>
</reg32>
</array>
<array offset="0xa884" name="SP_GS_VPC_DST" stride="1" length="8">
<reg32 offset="0x0" name="REG">
<bitfield name="OUTLOC0" low="0" high="7" type="uint"/>
<bitfield name="OUTLOC1" low="8" high="15" type="uint"/>
<bitfield name="OUTLOC2" low="16" high="23" type="uint"/>
<bitfield name="OUTLOC3" low="24" high="31" type="uint"/>
</reg32>
</array>
<reg32 offset="0xa88d" name="SP_GS_OBJ_START_LO"/>
<reg32 offset="0xa88e" name="SP_GS_OBJ_START_HI"/>
<reg32 offset="0xa893" name="SP_GS_TEX_COUNT" type="uint"/>
......@@ -2761,6 +2848,14 @@ to upconvert to 32b float internally?
<reg32 offset="0xa8af" name="SP_GS_TEX_CONST_HI"/>
<reg32 offset="0xa980" name="SP_FS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"/>
<reg32 offset="0xa981" name="SP_UNKNOWN_A981">
<bitfield name="FACE0" pos="0" type="boolean"/>
<bitfield name="FACE1" pos="1" type="boolean"/>
<bitfield name="FACE2" pos="2" type="boolean"/>
<bitfield name="FACE3" pos="3" type="boolean"/>
<bitfield name="FACE4" pos="4" type="boolean"/>
<bitfield name="FACE5" pos="5" type="boolean"/>
</reg32>
<reg32 offset="0xa982" name="SP_UNKNOWN_A982"/>
<reg32 offset="0xa983" name="SP_FS_OBJ_START_LO"/>
<reg32 offset="0xa984" name="SP_FS_OBJ_START_HI"/>
......
......@@ -643,6 +643,7 @@ opcode: CP_LOAD_STATE4 (30) (4 dwords)
<bitfield name="VIS_CULL" low="8" high="9" type="pc_di_vis_cull_mode"/>
<bitfield name="INDEX_SIZE" low="10" high="11" type="a4xx_index_size"/>
<bitfield name="PATCH_TYPE" low="12" high="13" type="a6xx_patch_type"/>
<bitfield name="GS_ENABLE" pos="16" type="boolean"/>
<bitfield name="TESS_ENABLE" pos="17" type="boolean"/>
</bitset>
......
......@@ -953,8 +953,8 @@ tu6_init_hw(struct tu_cmd_buffer *cmd, struct tu_cs *cs)
tu_cs_emit_write_reg(cs, REG_A6XX_PC_UNKNOWN_9806, 0);
tu_cs_emit_write_reg(cs, REG_A6XX_PC_UNKNOWN_9980, 0);
tu_cs_emit_write_reg(cs, REG_A6XX_PC_UNKNOWN_9B06, 0);
tu_cs_emit_write_reg(cs, REG_A6XX_PC_UNKNOWN_9B06, 0);
tu_cs_emit_write_reg(cs, REG_A6XX_PC_PRIMITIVE_CNTL_6, 0);
tu_cs_emit_write_reg(cs, REG_A6XX_PC_UNKNOWN_9B07, 0);
tu_cs_emit_write_reg(cs, REG_A6XX_SP_UNKNOWN_A81B, 0);
......
......@@ -1141,7 +1141,7 @@ tu6_emit_gras_unknowns(struct tu_cs *cs)
tu_cs_emit(cs, 0x80);
tu_cs_emit_pkt4(cs, REG_A6XX_GRAS_UNKNOWN_8001, 1);
tu_cs_emit(cs, 0x0);
tu_cs_emit_pkt4(cs, REG_A6XX_GRAS_UNKNOWN_8004, 1);
tu_cs_emit_pkt4(cs, REG_A6XX_GRAS_LAYER_CNTL, 1);
tu_cs_emit(cs, 0x0);
}
......
......@@ -1261,8 +1261,8 @@ t7 opcode: CP_WAIT_FOR_IDLE (26) (1 dwords)
WRITE(REG_A6XX_PC_UNKNOWN_9806, 0);
WRITE(REG_A6XX_PC_UNKNOWN_9980, 0);
WRITE(REG_A6XX_PC_UNKNOWN_9B06, 0);
WRITE(REG_A6XX_PC_UNKNOWN_9B06, 0);
WRITE(REG_A6XX_PC_PRIMITIVE_CNTL_6, 0);
WRITE(REG_A6XX_PC_UNKNOWN_9B07, 0);
WRITE(REG_A6XX_SP_UNKNOWN_A81B, 0);
......
......@@ -111,7 +111,7 @@ fd6_rasterizer_state_create(struct pipe_context *pctx,
OUT_RING(ring, 0x80);
OUT_PKT4(ring, REG_A6XX_GRAS_UNKNOWN_8001, 1);
OUT_RING(ring, 0x0);
OUT_PKT4(ring, REG_A6XX_GRAS_UNKNOWN_8004, 1);
OUT_PKT4(ring, REG_A6XX_GRAS_LAYER_CNTL, 1);
OUT_RING(ring, 0x0);
OUT_PKT4(ring, REG_A6XX_GRAS_SU_CNTL, 1);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment