summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/ilo/ilo_render_gen8.c
diff options
context:
space:
mode:
authorChia-I Wu <olvaffe@gmail.com>2015-06-18 14:26:29 +0800
committerChia-I Wu <olvaffe@gmail.com>2015-06-20 11:14:14 +0800
commit4555211028394673f8ad68f3de9c12e9a1f93160 (patch)
treec9d885b73ee4253b91a4fe7e22171e76b63fc90e /src/gallium/drivers/ilo/ilo_render_gen8.c
parente8d297b7a108fcf1cb688fe1db89e83b8f85e091 (diff)
downloadexternal_mesa3d-4555211028394673f8ad68f3de9c12e9a1f93160.zip
external_mesa3d-4555211028394673f8ad68f3de9c12e9a1f93160.tar.gz
external_mesa3d-4555211028394673f8ad68f3de9c12e9a1f93160.tar.bz2
ilo: add 3DSTATE_VF_INSTANCING to ilo_state_vf
3DSTATE_VF_INSTANCING specifies instancing enable and step rate. They are specified along with 3DSTATE_VERTEX_BUFFERS instead prior to Gen8. Both commands are added.
Diffstat (limited to 'src/gallium/drivers/ilo/ilo_render_gen8.c')
-rw-r--r--src/gallium/drivers/ilo/ilo_render_gen8.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/gallium/drivers/ilo/ilo_render_gen8.c b/src/gallium/drivers/ilo/ilo_render_gen8.c
index 7e0d206..3b8589c 100644
--- a/src/gallium/drivers/ilo/ilo_render_gen8.c
+++ b/src/gallium/drivers/ilo/ilo_render_gen8.c
@@ -199,8 +199,6 @@ gen8_draw_vf(struct ilo_render *r,
const struct ilo_state_vector *vec,
struct ilo_render_draw_session *session)
{
- int i;
-
/* 3DSTATE_INDEX_BUFFER */
if ((session->vf_delta.dirty & ILO_STATE_VF_3DSTATE_INDEX_BUFFER) ||
DIRTY(IB) || r->batch_bo_changed)
@@ -211,9 +209,10 @@ gen8_draw_vf(struct ilo_render *r,
gen75_3DSTATE_VF(r->builder, &vec->ve->vf);
/* 3DSTATE_VERTEX_BUFFERS */
- if (DIRTY(VB) || DIRTY(VE) || r->batch_bo_changed) {
- gen6_3DSTATE_VERTEX_BUFFERS(r->builder, &vec->vb, vec->ve->vb_mapping,
- vec->ve->instance_divisors, vec->ve->vb_count);
+ if ((session->vf_delta.dirty & ILO_STATE_VF_3DSTATE_VERTEX_BUFFERS) ||
+ DIRTY(VB) || DIRTY(VE) || r->batch_bo_changed) {
+ gen6_3DSTATE_VERTEX_BUFFERS(r->builder, &vec->ve->vf, &vec->vb,
+ vec->ve->vb_mapping, vec->ve->vb_count);
}
/* 3DSTATE_VERTEX_ELEMENTS */
@@ -223,9 +222,12 @@ gen8_draw_vf(struct ilo_render *r,
gen8_3DSTATE_VF_TOPOLOGY(r->builder,
gen6_3d_translate_pipe_prim(vec->draw->mode));
- for (i = 0; i < vec->ve->vb_count; i++) {
- gen8_3DSTATE_VF_INSTANCING(r->builder, i,
- vec->ve->instance_divisors[i]);
+ if (session->vf_delta.dirty & ILO_STATE_VF_3DSTATE_VF_INSTANCING) {
+ const uint8_t attr_count = ilo_state_vf_get_attr_count(&vec->ve->vf);
+ uint8_t i;
+
+ for (i = 0; i < attr_count; i++)
+ gen8_3DSTATE_VF_INSTANCING(r->builder, &vec->ve->vf, i);
}
if (session->vf_delta.dirty & ILO_STATE_VF_3DSTATE_VF_SGVS)