Added graphiviz dot and png files to visualize some API details
diff --git a/docs/xgl_graphics_pipeline.dot b/docs/xgl_graphics_pipeline.dot
new file mode 100644
index 0000000..18e74c0
--- /dev/null
+++ b/docs/xgl_graphics_pipeline.dot
@@ -0,0 +1,105 @@
+digraph g {
+graph [
+rankdir = "TB"
+];
+node [
+fontsize = "16"
+shape = "plaintext"
+];
+edge [
+];
+"_XGL_GRAPHICS_PIPELINE_CREATE_INFO" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_GRAPHICS_PIPELINE_CREATE_INFO</TD></TR><TR><TD>XGL_STRUCTURE_TYPE</TD><TD>sType=<BR/>XGL_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO</TD></TR><TR><TD>const XGL_VOID*</TD><TD PORT="f2">pNext</TD></TR><TR><TD>XGL_FLAGS</TD><TD>flags</TD></TR></TABLE>>
+];
+"_XGL_PIPELINE_IA_STATE_CREATE_INFO" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_PIPELINE_IA_STATE_CREATE_INFO</TD></TR><TR><TD>XGL_STRUCTURE_TYPE</TD><TD>sType=<BR/>XGL_STRUCTURE_TYPE_PIPELINE_IA_STATE_CREATE_INFO</TD></TR><TR><TD>const XGL_VOID*</TD><TD PORT="f2">pNext</TD></TR><TR><TD>XGL_PRIMITIVE_TOPOLOGY</TD><TD>topology</TD></TR><TR><TD>XGL_BOOL</TD><TD>disableVertexReuse</TD></TR><TR><TD>XGL_PROVOKING_VERTEX_CONVENTION</TD><TD>provokingVertex</TD></TR><TR><TD>XGL_BOOL</TD><TD>primitiveRestartEnable</TD></TR><TR><TD>XGL_UINT32</TD><TD>primitiveRestartIndex</TD></TR></TABLE>>
+];
+"_XGL_PIPELINE_TESS_STATE_CREATE_INFO" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_PIPELINE_TESS_STATE_CREATE_INFO</TD></TR><TR><TD>XGL_STRUCTURE_TYPE</TD><TD>sType=<BR/>XGL_STRUCTURE_TYPE_PIPELINE_TESS_STATE_CREATE_INFO</TD></TR><TR><TD>const XGL_VOID*</TD><TD PORT="f2">pNext</TD></TR><TR><TD>XGL_UINT</TD><TD>patchControlPoints</TD></TR> <TR><TD>XGL_FLOAT</TD><TD>optimalTessFactor</TD></TR><TR><TD>XGL_FLOAT</TD><TD>fixedTessFactor</TD></TR></TABLE>>
+];
+"_XGL_PIPELINE_RS_STATE_CREATE_INFO" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_PIPELINE_RS_STATE_CREATE_INFO</TD></TR><TR><TD>XGL_STRUCTURE_TYPE</TD><TD>sType=<BR/>XGL_STRUCTURE_TYPE_PIPELINE_RS_STATE_CREATE_INFO</TD></TR> <TR><TD>const XGL_VOID*</TD><TD PORT="f2">pNext</TD></TR> <TR><TD>XGL_BOOL</TD><TD>depthClipEnable</TD></TR> <TR><TD>XGL_BOOL</TD><TD>rasterizerDiscardEnable</TD></TR> <TR><TD>XGL_FLOAT</TD><TD>pointSize</TD></TR> </TABLE>>
+];
+"_XGL_PIPELINE_CB_STATE_CREATE_INFO" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_PIPELINE_CB_STATE</TD></TR><TR><TD>XGL_STRUCTURE_TYPE</TD><TD>sType=<BR/>XGL_STRUCTURE_TYPE_PIPELINE_CB_STATE_CREATE_INFO</TD></TR> <TR><TD>const XGL_VOID*</TD><TD PORT="f2">pNext</TD></TR> <TR><TD>XGL_BOOL</TD><TD>alphaToCoverageEnable</TD></TR> <TR><TD>XGL_BOOL</TD><TD>dualSourceBlendEnable</TD></TR> <TR><TD>XGL_LOGIC_OP</TD><TD>logicOp</TD></TR> <TR><TD>XGL_PIPELINE_CB_ATTACHMENT_STATE</TD><TD>attachment</TD></TR> </TABLE>>
+];
+"_XGL_PIPELINE_DB_STATE_CREATE_INFO" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_PIPELINE_DB_STATE_CREATE_INFO</TD></TR><TR><TD>XGL_STRUCTURE_TYPE</TD><TD>sType=<BR/>XGL_STRUCTURE_TYPE_PIPELINE_DB_STATE_CREATE_INFO</TD></TR> <TR><TD>const XGL_VOID*</TD><TD PORT="f2">pNext</TD></TR> <TR><TD>XGL_FORMAT</TD><TD>format</TD></TR> </TABLE>>
+];
+"VS_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_PIPELINE_SHADER_STAGE_CREATE_INFO</TD></TR><TR><TD>XGL_STRUCTURE_TYPE</TD><TD>sType=<BR/>XGL_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO</TD></TR> <TR><TD>const XGL_VOID*</TD><TD PORT="f2">pNext</TD></TR> <TR><TD>XGL_PIPELINE_SHADER</TD><TD PORT="f4">shader</TD></TR> </TABLE>>
+];
+"TC_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_PIPELINE_SHADER_STAGE_CREATE_INFO</TD></TR><TR><TD>XGL_STRUCTURE_TYPE</TD><TD>sType=<BR/>XGL_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO</TD></TR> <TR><TD>const XGL_VOID*</TD><TD PORT="f2">pNext</TD></TR> <TR><TD>XGL_PIPELINE_SHADER</TD><TD PORT="f4">shader</TD></TR> </TABLE>>
+];
+"TE_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_PIPELINE_SHADER_STAGE_CREATE_INFO</TD></TR><TR><TD>XGL_STRUCTURE_TYPE</TD><TD>sType=<BR/>XGL_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO</TD></TR> <TR><TD>const XGL_VOID*</TD><TD PORT="f2">pNext</TD></TR> <TR><TD>XGL_PIPELINE_SHADER</TD><TD PORT="f4">shader</TD></TR> </TABLE>>
+];
+"GS_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_PIPELINE_SHADER_STAGE_CREATE_INFO</TD></TR><TR><TD>XGL_STRUCTURE_TYPE</TD><TD>sType=<BR/>XGL_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO</TD></TR> <TR><TD>const XGL_VOID*</TD><TD PORT="f2">pNext</TD></TR> <TR><TD>XGL_PIPELINE_SHADER</TD><TD PORT="f4">shader</TD></TR> </TABLE>>
+];
+"FS_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_PIPELINE_SHADER_STAGE_CREATE_INFO</TD></TR><TR><TD>XGL_STRUCTURE_TYPE</TD><TD>sType=<BR/>XGL_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO</TD></TR> <TR><TD>const XGL_VOID*</TD><TD PORT="f2">pNext=NULL</TD></TR> <TR><TD>XGL_PIPELINE_SHADER</TD><TD PORT="f4">shader</TD></TR> </TABLE>>
+];
+"VS_XGL_PIPELINE_SHADER" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_PIPELINE_SHADER</TD></TR><TR><TD PORT="f1">XGL_PIPELINE_SHADER_STAGE</TD><TD PORT="f2">stage=VS</TD></TR><TR><TD PORT="f3">XGL_SHADER</TD><TD PORT="f4">shader</TD></TR><TR><TD PORT="f5">XGL_DESCRIPTOR_SET_MAPPING</TD><TD PORT="f6">descriptorSetMapping[2]</TD></TR><TR><TD PORT="f7">XGL_UINT</TD><TD PORT="f8">linkConstBufferCount</TD></TR><TR><TD PORT="f9">const XGL_LINK_CONST_BUFFER*</TD><TD PORT="f10">pLinkConstBufferInfo</TD></TR><TR><TD PORT="f11">XGL_DYNAMIC_MEMORY_VIEW_SLOT_INFO</TD><TD PORT="f12">dynamicMemoryViewMapping</TD></TR></TABLE>>
+];
+"TC_XGL_PIPELINE_SHADER" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_PIPELINE_SHADER</TD></TR><TR><TD PORT="f1">XGL_PIPELINE_SHADER_STAGE</TD><TD PORT="f2">stage=TC</TD></TR><TR><TD PORT="f3">XGL_SHADER</TD><TD PORT="f4">shader</TD></TR><TR><TD PORT="f5">XGL_DESCRIPTOR_SET_MAPPING</TD><TD PORT="f6">descriptorSetMapping[2]</TD></TR><TR><TD PORT="f7">XGL_UINT</TD><TD PORT="f8">linkConstBufferCount</TD></TR><TR><TD PORT="f9">const XGL_LINK_CONST_BUFFER*</TD><TD PORT="f10">pLinkConstBufferInfo</TD></TR><TR><TD PORT="f11">XGL_DYNAMIC_MEMORY_VIEW_SLOT_INFO</TD><TD PORT="f12">dynamicMemoryViewMapping</TD></TR></TABLE>>
+];
+"TE_XGL_PIPELINE_SHADER" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_PIPELINE_SHADER</TD></TR><TR><TD PORT="f1">XGL_PIPELINE_SHADER_STAGE</TD><TD PORT="f2">stage=TE</TD></TR><TR><TD PORT="f3">XGL_SHADER</TD><TD PORT="f4">shader</TD></TR><TR><TD PORT="f5">XGL_DESCRIPTOR_SET_MAPPING</TD><TD PORT="f6">descriptorSetMapping[2]</TD></TR><TR><TD PORT="f7">XGL_UINT</TD><TD PORT="f8">linkConstBufferCount</TD></TR><TR><TD PORT="f9">const XGL_LINK_CONST_BUFFER*</TD><TD PORT="f10">pLinkConstBufferInfo</TD></TR><TR><TD PORT="f11">XGL_DYNAMIC_MEMORY_VIEW_SLOT_INFO</TD><TD PORT="f12">dynamicMemoryViewMapping</TD></TR></TABLE>>
+];
+"GS_XGL_PIPELINE_SHADER" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_PIPELINE_SHADER</TD></TR><TR><TD PORT="f1">XGL_PIPELINE_SHADER_STAGE</TD><TD PORT="f2">stage=GS</TD></TR><TR><TD PORT="f3">XGL_SHADER</TD><TD PORT="f4">shader</TD></TR><TR><TD PORT="f5">XGL_DESCRIPTOR_SET_MAPPING</TD><TD PORT="f6">descriptorSetMapping[2]</TD></TR><TR><TD PORT="f7">XGL_UINT</TD><TD PORT="f8">linkConstBufferCount</TD></TR><TR><TD PORT="f9">const XGL_LINK_CONST_BUFFER*</TD><TD PORT="f10">pLinkConstBufferInfo</TD></TR><TR><TD PORT="f11">XGL_DYNAMIC_MEMORY_VIEW_SLOT_INFO</TD><TD PORT="f12">dynamicMemoryViewMapping</TD></TR></TABLE>>
+];
+"FS_XGL_PIPELINE_SHADER" [
+label = <<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD COLSPAN="2" PORT="f0">XGL_PIPELINE_SHADER</TD></TR><TR><TD PORT="f1">XGL_PIPELINE_SHADER_STAGE</TD><TD PORT="f2">stage=FS</TD></TR><TR><TD PORT="f3">XGL_SHADER</TD><TD PORT="f4">shader</TD></TR><TR><TD PORT="f5">XGL_DESCRIPTOR_SET_MAPPING</TD><TD PORT="f6">descriptorSetMapping[2]</TD></TR><TR><TD PORT="f7">XGL_UINT</TD><TD PORT="f8">linkConstBufferCount</TD></TR><TR><TD PORT="f9">const XGL_LINK_CONST_BUFFER*</TD><TD PORT="f10">pLinkConstBufferInfo</TD></TR><TR><TD PORT="f11">XGL_DYNAMIC_MEMORY_VIEW_SLOT_INFO</TD><TD PORT="f12">dynamicMemoryViewMapping</TD></TR></TABLE>>
+];
+"_XGL_GRAPHICS_PIPELINE_CREATE_INFO":f2 -> "_XGL_PIPELINE_IA_STATE_CREATE_INFO" [
+id = 0
+];
+"_XGL_PIPELINE_IA_STATE_CREATE_INFO":f2 -> "_XGL_PIPELINE_TESS_STATE_CREATE_INFO" [
+id = 1
+];
+"_XGL_PIPELINE_TESS_STATE_CREATE_INFO":f2 -> "_XGL_PIPELINE_RS_STATE_CREATE_INFO" [
+id = 2
+];
+"_XGL_PIPELINE_RS_STATE_CREATE_INFO":f2 -> "_XGL_PIPELINE_CB_STATE_CREATE_INFO" [
+id = 3
+];
+"_XGL_PIPELINE_CB_STATE_CREATE_INFO":f2 -> "_XGL_PIPELINE_DB_STATE_CREATE_INFO" [
+id = 4
+];
+"_XGL_PIPELINE_DB_STATE_CREATE_INFO":f2 -> "VS_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO" [
+id = 5
+];
+"VS_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO":f2 -> "TC_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO" [
+id = 6
+];
+"TC_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO":f2 -> "TE_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO" [
+id = 7
+];
+"TE_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO":f2 -> "GS_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO" [
+id = 8
+];
+"GS_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO":f2 -> "FS_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO" [
+id = 9
+];
+"VS_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO":f4 -> "VS_XGL_PIPELINE_SHADER" [
+id = 10
+];
+"TE_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO":f4 -> "TE_XGL_PIPELINE_SHADER" [
+id = 11
+];
+"TC_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO":f4 -> "TC_XGL_PIPELINE_SHADER" [
+id = 12
+];
+"GS_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO":f4 -> "GS_XGL_PIPELINE_SHADER" [
+id = 13
+];
+"FS_XGL_PIPELINE_SHADER_STAGE_CREATE_INFO":f4 -> "FS_XGL_PIPELINE_SHADER" [
+id = 14
+];
+}
+