vkd3d-shader: Add basic support for transform feedback.

Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Józef Kucia
2019-01-14 17:05:43 +01:00
committed by Alexandre Julliard
parent 731e11902a
commit 3d80b3f4bd
2 changed files with 115 additions and 0 deletions

View File

@@ -20,6 +20,7 @@
#define __VKD3D_SHADER_H
#include <stdbool.h>
#include <stdint.h>
#include <vkd3d_types.h>
#ifdef __cplusplus
@@ -31,6 +32,7 @@ enum vkd3d_shader_structure_type
VKD3D_SHADER_STRUCTURE_TYPE_SHADER_INTERFACE,
VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_ARGUMENTS,
VKD3D_SHADER_STRUCTURE_TYPE_SCAN_INFO,
VKD3D_SHADER_STRUCTURE_TYPE_TRANSFORM_FEEDBACK_INFO,
VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_STRUCTURE_TYPE),
};
@@ -151,6 +153,28 @@ struct vkd3d_shader_interface
unsigned int uav_counter_count;
};
struct vkd3d_shader_transform_feedback_element
{
unsigned int stream_index;
const char *semantic_name;
unsigned int semantic_index;
uint8_t component_index;
uint8_t component_count;
uint8_t output_slot;
};
/* Extends vkd3d_shader_interface. */
struct vkd3d_shader_transform_feedback_info
{
enum vkd3d_shader_structure_type type;
const void *next;
const struct vkd3d_shader_transform_feedback_element *elements;
unsigned int element_count;
const unsigned int *buffer_strides;
unsigned int buffer_stride_count;
};
enum vkd3d_shader_target
{
VKD3D_SHADER_TARGET_NONE,