mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
broadcom/vc5: Fix depth and stencil clear values.
I had misread the packet description: We always have a 32f depth, and a separate u8 stencil.
This commit is contained in:
parent
be11251e3c
commit
7f3b890697
4 changed files with 11 additions and 15 deletions
|
|
@ -557,7 +557,7 @@
|
|||
<packet code="121" name="Tile Rendering Mode Configuration (Z Stencil Clear Values)" cl="R">
|
||||
<field name="unused" size="16" start="48" type="uint"/>
|
||||
|
||||
<field name="Z/S Clear Value" size="32" start="16" type="uint"/>
|
||||
<field name="Z Clear Value" size="32" start="16" type="float"/>
|
||||
|
||||
<field name="Stencil/VG Mask Clear Value" size="8" start="8" type="uint"/>
|
||||
<field name="sub-id" size="4" start="0" type="uint" default="3"/>
|
||||
|
|
|
|||
|
|
@ -245,7 +245,8 @@ struct vc5_job {
|
|||
*/
|
||||
uint32_t resolve;
|
||||
uint32_t clear_color[2];
|
||||
uint32_t clear_zs; /**< 24-bit unorm depth/stencil */
|
||||
float clear_z;
|
||||
uint8_t clear_s;
|
||||
|
||||
/**
|
||||
* Set if some drawing (triangles, blits, or just a glClear()) has
|
||||
|
|
|
|||
|
|
@ -561,21 +561,15 @@ vc5_clear(struct pipe_context *pctx, unsigned buffers,
|
|||
rsc->initialized_buffers |= (buffers & PIPE_CLEAR_COLOR0);
|
||||
}
|
||||
|
||||
if (buffers & PIPE_CLEAR_DEPTHSTENCIL) {
|
||||
unsigned zsclear = buffers & PIPE_CLEAR_DEPTHSTENCIL;
|
||||
if (zsclear) {
|
||||
struct vc5_resource *rsc =
|
||||
vc5_resource(vc5->framebuffer.zsbuf->texture);
|
||||
unsigned zsclear = buffers & PIPE_CLEAR_DEPTHSTENCIL;
|
||||
|
||||
if (buffers & PIPE_CLEAR_DEPTH) {
|
||||
job->clear_zs |=
|
||||
util_pack_z_stencil(PIPE_FORMAT_S8_UINT_Z24_UNORM,
|
||||
depth, 0);
|
||||
}
|
||||
if (buffers & PIPE_CLEAR_STENCIL) {
|
||||
job->clear_zs |=
|
||||
util_pack_z_stencil(PIPE_FORMAT_S8_UINT_Z24_UNORM,
|
||||
0, stencil);
|
||||
}
|
||||
if (zsclear & PIPE_CLEAR_DEPTH)
|
||||
job->clear_z = depth;
|
||||
if (zsclear & PIPE_CLEAR_STENCIL)
|
||||
job->clear_s = stencil;
|
||||
|
||||
rsc->initialized_buffers |= zsclear;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -182,7 +182,8 @@ vc5_emit_rcl(struct vc5_job *job)
|
|||
/* Ends rendering mode config. */
|
||||
cl_emit(&job->rcl, TILE_RENDERING_MODE_CONFIGURATION_Z_STENCIL_CLEAR_VALUES,
|
||||
clear) {
|
||||
clear.z_s_clear_value = job->clear_zs;
|
||||
clear.z_clear_value = job->clear_z;
|
||||
clear.stencil_vg_mask_clear_value = job->clear_s;
|
||||
};
|
||||
|
||||
/* Always set initial block size before the first branch, which needs
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue