intel: add support for FF vertex fetch
shaderEntityIndex is used to index pVertexBindingDescriptions instead of
pVertexAttributeDescriptions. Not really sure how that works.
https://cvs.khronos.org/bugzilla/show_bug.cgi?id=12774#c26
diff --git a/icd/intel/pipeline_shader.c b/icd/intel/pipeline_shader.c
index 9215df7..4d9b285 100644
--- a/icd/intel/pipeline_shader.c
+++ b/icd/intel/pipeline_shader.c
@@ -35,6 +35,7 @@
const XGL_UINT resource_offset = rmap->rt_count;
const XGL_UINT uav_offset = resource_offset + rmap->resource_count;
const XGL_UINT sampler_offset = uav_offset + rmap->uav_count;
+ const XGL_UINT ve_offset = sampler_offset + rmap->sampler_count;
struct intel_pipeline_rmap_slot *slot;
switch (type) {
@@ -50,6 +51,9 @@
case XGL_SLOT_SHADER_SAMPLER:
slot = &rmap->slots[sampler_offset + index];
break;
+ case XGL_SLOT_VERTEX_INPUT:
+ slot = &rmap->slots[ve_offset + index];
+ break;
default:
assert(!"unknown rmap slot type");
slot = NULL;
@@ -149,6 +153,10 @@
if (rmap->sampler_count < index + 1)
rmap->sampler_count = index + 1;
break;
+ case XGL_SLOT_VERTEX_INPUT:
+ if (rmap->vb_count < index + 1)
+ rmap->vb_count = index + 1;
+ break;
default:
assert(!"unknown rmap slot type");
break;
@@ -225,7 +233,7 @@
rmap->rt_count = rt_count;
rmap->slot_count = rmap->rt_count + rmap->resource_count +
- rmap->uav_count + rmap->sampler_count;
+ rmap->uav_count + rmap->sampler_count + rmap->vb_count;
rmap->slots = icd_alloc(sizeof(rmap->slots[0]) * rmap->slot_count,
0, XGL_SYSTEM_ALLOC_INTERNAL);