Lines Matching refs:so
48 static int render_state_init(struct render_state *so, struct drm_device *dev) in render_state_init() argument
52 so->gen = INTEL_INFO(dev)->gen; in render_state_init()
53 so->rodata = render_state_get_rodata(dev, so->gen); in render_state_init()
54 if (so->rodata == NULL) in render_state_init()
57 if (so->rodata->batch_items * 4 > 4096) in render_state_init()
60 so->obj = i915_gem_alloc_object(dev, 4096); in render_state_init()
61 if (so->obj == NULL) in render_state_init()
64 ret = i915_gem_obj_ggtt_pin(so->obj, 4096, 0); in render_state_init()
68 so->ggtt_offset = i915_gem_obj_ggtt_offset(so->obj); in render_state_init()
72 drm_gem_object_unreference(&so->obj->base); in render_state_init()
94 static int render_state_setup(struct render_state *so) in render_state_setup() argument
96 const struct intel_renderstate_rodata *rodata = so->rodata; in render_state_setup()
102 ret = i915_gem_object_set_to_cpu_domain(so->obj, true); in render_state_setup()
106 page = sg_page(so->obj->pages->sgl); in render_state_setup()
113 u64 r = s + so->ggtt_offset; in render_state_setup()
115 if (so->gen >= 8) { in render_state_setup()
135 so->aux_batch_offset = i * sizeof(u32); in render_state_setup()
138 so->aux_batch_size = (i * sizeof(u32)) - so->aux_batch_offset; in render_state_setup()
144 so->aux_batch_size = ALIGN(so->aux_batch_size, 8); in render_state_setup()
148 ret = i915_gem_object_set_to_gtt_domain(so->obj, false); in render_state_setup()
166 void i915_gem_render_state_fini(struct render_state *so) in i915_gem_render_state_fini() argument
168 i915_gem_object_ggtt_unpin(so->obj); in i915_gem_render_state_fini()
169 drm_gem_object_unreference(&so->obj->base); in i915_gem_render_state_fini()
173 struct render_state *so) in i915_gem_render_state_prepare() argument
180 ret = render_state_init(so, ring->dev); in i915_gem_render_state_prepare()
184 if (so->rodata == NULL) in i915_gem_render_state_prepare()
187 ret = render_state_setup(so); in i915_gem_render_state_prepare()
189 i915_gem_render_state_fini(so); in i915_gem_render_state_prepare()
198 struct render_state so; in i915_gem_render_state_init() local
201 ret = i915_gem_render_state_prepare(req->ring, &so); in i915_gem_render_state_init()
205 if (so.rodata == NULL) in i915_gem_render_state_init()
208 ret = req->ring->dispatch_execbuffer(req, so.ggtt_offset, in i915_gem_render_state_init()
209 so.rodata->batch_items * 4, in i915_gem_render_state_init()
214 if (so.aux_batch_size > 8) { in i915_gem_render_state_init()
216 (so.ggtt_offset + in i915_gem_render_state_init()
217 so.aux_batch_offset), in i915_gem_render_state_init()
218 so.aux_batch_size, in i915_gem_render_state_init()
224 i915_vma_move_to_active(i915_gem_obj_to_ggtt(so.obj), req); in i915_gem_render_state_init()
227 i915_gem_render_state_fini(&so); in i915_gem_render_state_init()