LibVirtGPU: Make depth and color clearing separate functions

This commit is contained in:
Stephan Unverwerth 2022-12-21 16:00:28 +01:00 committed by Andreas Kling
parent 03884fad74
commit 140338670a
Notes: sideshowbarker 2024-07-17 03:45:48 +09:00
2 changed files with 20 additions and 5 deletions

View file

@ -141,7 +141,7 @@ void CommandBufferBuilder::append_draw_vbo(Protocol::PipePrimitiveTypes primitiv
builder.appendu32(0); // cso
}
void CommandBufferBuilder::append_clear(float r, float g, float b)
void CommandBufferBuilder::append_clear(float r, float g, float b, float a)
{
CommandBuilder builder(m_buffer, Protocol::VirGLCommand::CLEAR, Protocol::ObjectType::NONE);
Protocol::ClearType clear_flags {};
@ -151,9 +151,23 @@ void CommandBufferBuilder::append_clear(float r, float g, float b)
builder.appendf32(r);
builder.appendf32(g);
builder.appendf32(b);
builder.appendf32(1.0f); // Alpha
builder.appendf64(1.0); // Depth
builder.appendu32(0); // Stencil
builder.appendf32(a);
builder.appendf64(1.0);
builder.appendu32(0);
}
void CommandBufferBuilder::append_clear(double depth)
{
CommandBuilder builder(m_buffer, Protocol::VirGLCommand::CLEAR, Protocol::ObjectType::NONE);
Protocol::ClearType clear_flags {};
clear_flags.flags.depth = 1;
builder.appendu32(clear_flags.value);
builder.appendf32(0);
builder.appendf32(0);
builder.appendf32(0);
builder.appendf32(0);
builder.appendf64(depth);
builder.appendu32(0);
}
void CommandBufferBuilder::append_set_vertex_buffers(u32 stride, u32 offset, Protocol::ResourceID resource)

View file

@ -22,7 +22,8 @@ public:
void append_transfer3d(Protocol::ResourceID resource, size_t width, size_t height = 1, size_t depth = 1, size_t direction = VIRGL_DATA_DIR_GUEST_TO_HOST);
void append_end_transfers_3d();
void append_draw_vbo(Protocol::PipePrimitiveTypes, u32 count);
void append_clear(float r, float g, float b);
void append_clear(float r, float g, float b, float a);
void append_clear(double depth);
void append_set_vertex_buffers(u32 stride, u32 offset, Protocol::ResourceID resource);
void append_create_blend(Protocol::ObjectHandle handle);
void append_bind_blend(Protocol::ObjectHandle handle);