Vulkan: Fix Issues surrounding Grease Pencil Drawing

Some minor tweaks to the vulkan backend to support grease pencil
drawing. The changes include:

* Add support for GPU_DATA_10_11_11_REV clearing
* Use correct index buffer start and count

Anti aliasing isn't working as they require different samplers being
configured and that require some design work.
Effects haven't been tested.

Pull Request: https://projects.blender.org/blender/blender/pulls/114659
This commit is contained in:
Jeroen Bakker 2023-11-09 11:00:09 +01:00
parent c3609ec435
commit b51027ea0c
2 changed files with 4 additions and 4 deletions

View File

@ -51,10 +51,10 @@ void VKBatch::draw(int vertex_first, int vertex_count, int instance_first, int i
VKIndexBuffer *index_buffer = index_buffer_get(); VKIndexBuffer *index_buffer = index_buffer_get();
const bool draw_indexed = index_buffer != nullptr; const bool draw_indexed = index_buffer != nullptr;
if (draw_indexed) { if (draw_indexed) {
command_buffers.draw_indexed(index_buffer->index_len_get(), command_buffers.draw_indexed(vertex_count,
instance_count, instance_count,
index_buffer->index_start_get(),
vertex_first, vertex_first,
index_buffer->index_start_get(),
instance_first); instance_first);
} }
else { else {

View File

@ -763,7 +763,8 @@ VkClearColorValue to_vk_clear_color_value(const eGPUDataFormat format, const voi
{ {
VkClearColorValue result = {{0.0f}}; VkClearColorValue result = {{0.0f}};
switch (format) { switch (format) {
case GPU_DATA_FLOAT: { case GPU_DATA_FLOAT:
case GPU_DATA_10_11_11_REV: {
const float *float_data = static_cast<const float *>(data); const float *float_data = static_cast<const float *>(data);
copy_color<float>(result.float32, float_data); copy_color<float>(result.float32, float_data);
break; break;
@ -784,7 +785,6 @@ VkClearColorValue to_vk_clear_color_value(const eGPUDataFormat format, const voi
case GPU_DATA_HALF_FLOAT: case GPU_DATA_HALF_FLOAT:
case GPU_DATA_UBYTE: case GPU_DATA_UBYTE:
case GPU_DATA_UINT_24_8: case GPU_DATA_UINT_24_8:
case GPU_DATA_10_11_11_REV:
case GPU_DATA_2_10_10_10_REV: { case GPU_DATA_2_10_10_10_REV: {
BLI_assert_unreachable(); BLI_assert_unreachable();
break; break;