GPU/Pitfalls: Difference between revisions

Mostly based on findings by yuriks
 
mNo edit summary
 
(3 intermediate revisions by the same user not shown)
Line 7: Line 7:
=== Vertex attribute alignment ===
=== Vertex attribute alignment ===


Vertex components which are defined through [[GPU/Internal_Registers#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFERi_CONFIG1]] will be aligned.
Vertex components which are defined through [[GPU/Internal_Registers#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFERi_CONFIG1]] will be accessed aligned by the GPU.
* Vertex attributes will be aligned to their component element size.
* Vertex attributes will be aligned to their component element size.
* Padding attributes (Component type > 11) will always aligned to 4 byte offets into the buffer.
* Padding attributes (Component type > 11) will always aligned to 4 byte offets into the buffer.
* The stride which is passed to the GPU should be passed unaligned.


=== Vertex stride in GPUREG_ATTRIBBUFFERi_CONFIG2 ===
=== Vertex stride in GPUREG_ATTRIBBUFFERi_CONFIG2 ===
Line 19: Line 20:
=== Output mapping in GPUREG_SH_OUTMAP_MASK ===
=== Output mapping in GPUREG_SH_OUTMAP_MASK ===


The output mapping in [[GPU/Internal_Registers#GPUREG_SH_OUTMAP_MASK|GPUREG_SH_OUTMAP_MASK]] configures how the registers starting at [[GPU/Internal_Registers#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_Oi]] will map the outputs in the shader.
The output masking in [[GPU/Internal_Registers#GPUREG_SH_OUTMAP_MASK|GPUREG_SH_OUTMAP_MASK]] influences how the registers starting at [[GPU/Internal_Registers#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_Oi]] map to outputs in the shader.
 
If an output is disabled in [[GPU/Internal_Registers#GPUREG_SH_OUTMAP_MASK|GPUREG_SH_OUTMAP_MASK]] it means that no slot in the [[GPU/Internal_Registers#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_Oi]] registers is consumed.
If an output is disabled in [[GPU/Internal_Registers#GPUREG_SH_OUTMAP_MASK|GPUREG_SH_OUTMAP_MASK]] it means that no slot in the [[GPU/Internal_Registers#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_Oi]] registers is consumed.
[[GPU/Internal_Registers#GPUREG_SH_OUTMAP_TOTAL|GPUREG_SH_OUTMAP_TOTAL]] configures the number of used consecutive slots in the outmap.
[[GPU/Internal_Registers#GPUREG_SH_OUTMAP_TOTAL|GPUREG_SH_OUTMAP_TOTAL]] configures the number of used consecutive slots in the outmap.
Line 53: Line 55:
== Shaders ==
== Shaders ==


=== Write output components exactly once ===
=== Configued Output components must be written exactly once ===


Each configured output component has to be written exactly once or the PICA freezes.
Each configured output component has to be written exactly once or the PICA freezes.