aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChia-I Wu <olvaffe@gmail.com>2014-10-06 15:07:25 +0800
committerChia-I Wu <olvaffe@gmail.com>2014-10-08 12:59:18 +0800
commit73c5247c36eace49120ddcbe24515caff2ca860e (patch)
treed0a4752b684f4d62ba7e505869a38d66b706bec9
parentd94e6eb32541d3a269b7fcde34aed68c55e4a39c (diff)
downloadusermoji-73c5247c36eace49120ddcbe24515caff2ca860e.tar.xz
include: update xgl.h with FF vertex fetch
https://cvs.khronos.org/svn/repos/oglc/trunk/nextgen/proposals/IMG/xgl_vertex_input_description2_img.h
-rw-r--r--include/xgl.h95
1 files changed, 93 insertions, 2 deletions
diff --git a/include/xgl.h b/include/xgl.h
index 7145b359..7fb33cc7 100644
--- a/include/xgl.h
+++ b/include/xgl.h
@@ -286,7 +286,10 @@ typedef enum _XGL_DESCRIPTOR_SET_SLOT_TYPE
XGL_SLOT_SHADER_RESOURCE = 0x00000001,
XGL_SLOT_SHADER_UAV = 0x00000002,
XGL_SLOT_SHADER_SAMPLER = 0x00000003,
- XGL_SLOT_NEXT_DESCRIPTOR_SET = 0x00000004,
+// IMG CHANGE BEGIN - support for vertex input description
+ XGL_SLOT_VERTEX_INPUT = 0x00000004,
+ XGL_SLOT_NEXT_DESCRIPTOR_SET = 0x00000005,
+// IMG CHANGE END
XGL_DESCRIPTOR_SET_SLOT_TYPE_BEGIN_RANGE = XGL_SLOT_UNUSED,
XGL_DESCRIPTOR_SET_SLOT_TYPE_END_RANGE = XGL_SLOT_NEXT_DESCRIPTOR_SET,
@@ -768,7 +771,11 @@ typedef enum _XGL_CHANNEL_FORMAT
XGL_CH_FMT_BC6U = 28,
XGL_CH_FMT_BC6S = 29,
XGL_CH_FMT_BC7 = 30,
- XGL_MAX_CH_FMT = XGL_CH_FMT_BC7,
+// IMG CHANGE BEGIN - support for vertex input description
+ XGL_CH_FMT_R8G8B8 = 31,
+ XGL_CH_FMT_R16G16B16 = 32,
+ XGL_MAX_CH_FMT = XGL_CH_FMT_R16G16B16,
+// IMG CHANGE END
XGL_MAX_ENUM(_XGL_CHANNEL_FORMAT)
} XGL_CHANNEL_FORMAT;
@@ -797,6 +804,16 @@ typedef enum _XGL_PROVOKING_VERTEX_CONVENTION
XGL_MAX_ENUM(_XGL_PROVOKING_VERTEX_CONVENTION)
} XGL_PROVOKING_VERTEX_CONVENTION;
+// IMG CHANGE BEGIN - support for vertex input description
+typedef enum _XGL_VERTEX_INPUT_STEP_RATE
+{
+ XGL_VERTEX_INPUT_STEP_RATE_VERTEX = 0x0,
+ XGL_VERTEX_INPUT_STEP_RATE_INSTANCE = 0x1,
+ XGL_VERTEX_INPUT_STEP_RATE_DRAW = 0x2,
+ XGL_MAX_ENUM(_XGL_VERTEX_INPUT_STEP_RATE)
+} XGL_VERTEX_INPUT_STEP_RATE;
+// IMG CHANGE END
+
typedef struct _XGL_FORMAT
{
XGL_CHANNEL_FORMAT channelFormat;
@@ -851,6 +868,9 @@ typedef enum _XGL_STRUCTURE_TYPE
XGL_STRUCTURE_TYPE_PIPELINE_RS_STATE_CREATE_INFO = 31,
XGL_STRUCTURE_TYPE_PIPELINE_TESS_STATE_CREATE_INFO = 32,
XGL_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 33,
+// IMG CHANGE BEGIN - support for vertex input description
+ XGL_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO = 34,
+// IMG CHANGE END
XGL_MAX_ENUM(_XGL_STRUCTURE_TYPE)
} XGL_STRUCTURE_TYPE;
@@ -1406,6 +1426,77 @@ typedef struct _XGL_COMPUTE_PIPELINE_CREATE_INFO
XGL_FLAGS flags; // XGL_PIPELINE_CREATE_FLAGS
} XGL_COMPUTE_PIPELINE_CREATE_INFO;
+// IMG CHANGE BEGIN - support for vertex input description
+
+// Example descriptor set mapping:
+//
+// {
+// .descriptorCount = 4;
+// .pDescriptorInfo[0] =
+// {
+// .slotObjectType = XGL_SLOT_VERTEX_INPUT;
+// .shaderEntityIndex = 2; // describes XGL_PIPELINE_VERTEX_INPUT_CREATE_INFO.pVertexBindingDescriptions[2]
+// }
+// .pDescriptorInfo[1] =
+// {
+// .slotObjectType = XGL_SLOT_UNUSED;
+// .shaderEntityIndex = 0;
+// }
+// .pDescriptorInfo[2] =
+// {
+// .slotObjectType = XGL_SLOT_VERTEX_INPUT;
+// .shaderEntityIndex = 0; // describes XGL_PIPELINE_VERTEX_INPUT_CREATE_INFO.pVertexBindingDescriptions[0]
+// }
+// .pDescriptorInfo[3] =
+// {
+// .slotObjectType = XGL_SLOT_VERTEX_INPUT;
+// .shaderEntityIndex = 1; // describes XGL_PIPELINE_VERTEX_INPUT_CREATE_INFO.pVertexBindingDescriptions[1]
+// }
+// }
+//
+// The shader inputs are mapped to pVertexAttributeDescriptions using a decoration in the BIL.
+//
+//
+// Formats allowed for attributes (XGL_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION.format) will be detailed in
+// a table in the specification.
+//
+//
+// Queryable limits:
+//
+// XGL_VERTEX_INPUT_BINDING_DESCRIPTION.strideInBytes
+// XGL_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION.offsetInBytes
+//
+//
+
+typedef struct _XGL_VERTEX_INPUT_BINDING_DESCRIPTION
+{
+ XGL_UINT strideInBytes; // Distance between vertices in bytes (0 = no advancement)
+
+ XGL_VERTEX_INPUT_STEP_RATE stepRate; // Rate at which binding is incremented
+} XGL_VERTEX_INPUT_BINDING_DESCRIPTION;
+
+typedef struct _XGL_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION
+{
+ XGL_UINT binding; // index into vertexBindingDescriptions
+
+ XGL_FORMAT format; // format of source data
+
+ XGL_UINT offsetInBytes; // Offset of first element in bytes from base of vertex
+} XGL_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION;
+
+typedef struct _XGL_PIPELINE_VERTEX_INPUT_CREATE_INFO
+{
+ XGL_STRUCTURE_TYPE sType; // Should be XGL_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO
+ XGL_VOID* pNext; // Pointer to next structure
+
+ XGL_UINT bindingCount; // number of bindings
+ XGL_VERTEX_INPUT_BINDING_DESCRIPTION* pVertexBindingDescriptions;
+
+ XGL_UINT attributeCount; // number of attributes
+ XGL_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION* pVertexAttributeDescriptions;
+} XGL_PIPELINE_VERTEX_INPUT_CREATE_INFO;
+// IMG CHANGE END
+
typedef struct _XGL_PIPELINE_IA_STATE_CREATE_INFO
{
XGL_STRUCTURE_TYPE sType; // Must be XGL_STRUCTURE_TYPE_PIPELINE_IA_STATE_CREATE_INFO