radv: fix VK_EXT_conditional_rendering visibility
It's actually just the opposite. This fixes the new Sascha conditionalrender demo. CC: 18.2 <mesa-stable@lists.freedesktop.org> Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
@@ -4468,19 +4468,27 @@ void radv_CmdBeginConditionalRenderingEXT(
|
|||||||
{
|
{
|
||||||
RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
|
RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
|
||||||
RADV_FROM_HANDLE(radv_buffer, buffer, pConditionalRenderingBegin->buffer);
|
RADV_FROM_HANDLE(radv_buffer, buffer, pConditionalRenderingBegin->buffer);
|
||||||
bool inverted;
|
bool draw_visible = true;
|
||||||
uint64_t va;
|
uint64_t va;
|
||||||
|
|
||||||
va = radv_buffer_get_va(buffer->bo) + pConditionalRenderingBegin->offset;
|
va = radv_buffer_get_va(buffer->bo) + pConditionalRenderingBegin->offset;
|
||||||
|
|
||||||
inverted = pConditionalRenderingBegin->flags & VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT;
|
/* By default, if the 32-bit value at offset in buffer memory is zero,
|
||||||
|
* then the rendering commands are discarded, otherwise they are
|
||||||
|
* executed as normal. If the inverted flag is set, all commands are
|
||||||
|
* discarded if the value is non zero.
|
||||||
|
*/
|
||||||
|
if (pConditionalRenderingBegin->flags &
|
||||||
|
VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT) {
|
||||||
|
draw_visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
/* Enable predication for this command buffer. */
|
/* Enable predication for this command buffer. */
|
||||||
si_emit_set_predication_state(cmd_buffer, inverted, va);
|
si_emit_set_predication_state(cmd_buffer, draw_visible, va);
|
||||||
cmd_buffer->state.predicating = true;
|
cmd_buffer->state.predicating = true;
|
||||||
|
|
||||||
/* Store conditional rendering user info. */
|
/* Store conditional rendering user info. */
|
||||||
cmd_buffer->state.predication_type = inverted;
|
cmd_buffer->state.predication_type = draw_visible;
|
||||||
cmd_buffer->state.predication_va = va;
|
cmd_buffer->state.predication_va = va;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user