diff options
| author | Chia-I Wu <olvaffe@gmail.com> | 2014-10-08 12:14:39 +0800 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2014-10-31 15:29:18 -0600 |
| commit | ce4e64886f3198428a3ea389b2f8d405241ea6b8 (patch) | |
| tree | 6d0f8bee8c69f32f21cb248a49854e245473c849 | |
| parent | 4af4090a52742a79ba03ecc319210232fe428288 (diff) | |
| download | usermoji-ce4e64886f3198428a3ea389b2f8d405241ea6b8.tar.xz | |
demos/tri: enable FF vertex fetch
| -rw-r--r-- | demos/tri.c | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/demos/tri.c b/demos/tri.c index 9a00c1a2..5273e276 100644 --- a/demos/tri.c +++ b/demos/tri.c @@ -49,6 +49,10 @@ struct demo { struct { XGL_GPU_MEMORY mem; XGL_MEMORY_VIEW_ATTACH_INFO view; + + XGL_PIPELINE_VERTEX_INPUT_CREATE_INFO vi; + XGL_VERTEX_INPUT_BINDING_DESCRIPTION vi_bindings[1]; + XGL_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION vi_attrs[2]; } vertices; XGL_DESCRIPTOR_SET dset; @@ -438,6 +442,26 @@ static void demo_prepare_vertices(struct demo *demo) demo->vertices.view.format.channelFormat = XGL_CH_FMT_UNDEFINED; demo->vertices.view.format.numericFormat = XGL_NUM_FMT_UNDEFINED; demo->vertices.view.state = XGL_MEMORY_STATE_GRAPHICS_SHADER_READ_ONLY; + + demo->vertices.vi.sType = XGL_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO; + demo->vertices.vi.pNext = NULL; + demo->vertices.vi.bindingCount = 1; + demo->vertices.vi.pVertexBindingDescriptions = demo->vertices.vi_bindings; + demo->vertices.vi.attributeCount = 2; + demo->vertices.vi.pVertexAttributeDescriptions = demo->vertices.vi_attrs; + + demo->vertices.vi_bindings[0].strideInBytes = sizeof(vb[0]); + demo->vertices.vi_bindings[0].stepRate = XGL_VERTEX_INPUT_STEP_RATE_VERTEX; + + demo->vertices.vi_attrs[0].binding = 0; + demo->vertices.vi_attrs[0].format.channelFormat = XGL_CH_FMT_R32G32B32; + demo->vertices.vi_attrs[0].format.numericFormat = XGL_NUM_FMT_FLOAT; + demo->vertices.vi_attrs[0].offsetInBytes = 0; + + demo->vertices.vi_attrs[1].binding = 0; + demo->vertices.vi_attrs[1].format.channelFormat = XGL_CH_FMT_R32G32; + demo->vertices.vi_attrs[1].format.numericFormat = XGL_NUM_FMT_FLOAT; + demo->vertices.vi_attrs[1].offsetInBytes = sizeof(float) * 3; } static void demo_prepare_descriptor_set(struct demo *demo) @@ -612,6 +636,7 @@ static XGL_SHADER demo_prepare_fs(struct demo *demo) static void demo_prepare_pipeline(struct demo *demo) { XGL_GRAPHICS_PIPELINE_CREATE_INFO pipeline; + XGL_PIPELINE_VERTEX_INPUT_CREATE_INFO vi; XGL_PIPELINE_IA_STATE_CREATE_INFO ia; XGL_PIPELINE_RS_STATE_CREATE_INFO rs; XGL_PIPELINE_CB_STATE cb; @@ -626,6 +651,8 @@ static void demo_prepare_pipeline(struct demo *demo) memset(&pipeline, 0, sizeof(pipeline)); pipeline.sType = XGL_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; + vi = demo->vertices.vi; + memset(&ia, 0, sizeof(ia)); ia.sType = XGL_STRUCTURE_TYPE_PIPELINE_IA_STATE_CREATE_INFO; ia.topology = XGL_TOPOLOGY_TRIANGLE_LIST; @@ -643,7 +670,7 @@ static void demo_prepare_pipeline(struct demo *demo) db.format = demo->depth.format; memset(&vs_slots, 0, sizeof(vs_slots)); - vs_slots[2 * DEMO_TEXTURE_COUNT].slotObjectType = XGL_SLOT_SHADER_RESOURCE; + vs_slots[2 * DEMO_TEXTURE_COUNT].slotObjectType = XGL_SLOT_VERTEX_INPUT; vs_slots[2 * DEMO_TEXTURE_COUNT].shaderEntityIndex = 0; memset(&fs_slots, 0, sizeof(fs_slots)); @@ -670,7 +697,8 @@ static void demo_prepare_pipeline(struct demo *demo) DEMO_TEXTURE_COUNT * 2 + 1; fs.shader.descriptorSetMapping[0].pDescriptorInfo = fs_slots; - pipeline.pNext = (const XGL_VOID *) &ia; + pipeline.pNext = (const XGL_VOID *) &vi; + vi.pNext = (XGL_VOID *) &ia; ia.pNext = (const XGL_VOID *) &rs; rs.pNext = (const XGL_VOID *) &cb; cb.pNext = (const XGL_VOID *) &db; |
