Lines Matching defs:i915

53 validate_flush(struct i915_context *i915, unsigned *batch_space)
55 *batch_space = i915->flush_dirty ? 1 : 0;
59 emit_flush(struct i915_context *i915)
67 if (i915->flush_dirty & I915_FLUSH_CACHE)
69 else if (i915->flush_dirty & I915_PIPELINE_FLUSH)
110 emit_invariant(struct i915_context *i915)
112 i915_winsys_batchbuffer_write(i915->batch, invariant_state,
117 validate_immediate(struct i915_context *i915, unsigned *batch_space)
123 i915->immediate_dirty;
125 if (i915->immediate_dirty & (1 << I915_IMMEDIATE_S0) && i915->vbo)
126 i915->validation_buffers[i915->num_validation_buffers++] = i915->vbo;
156 static void emit_immediate_s5(struct i915_context *i915, uint imm)
161 struct pipe_surface *surf = i915->framebuffer.cbufs[0];
175 static void emit_immediate_s6(struct i915_context *i915, uint imm)
182 if (i915->current.target_fixup_format == PIPE_FORMAT_A8_UNORM) {
196 emit_immediate(struct i915_context *i915)
203 i915->immediate_dirty;
210 if (i915->immediate_dirty & (1 << I915_IMMEDIATE_S0)) {
211 if (i915->vbo)
212 OUT_RELOC(i915->vbo, I915_USAGE_VERTEX,
213 i915->current.immediate[I915_IMMEDIATE_S0]);
221 emit_immediate_s5(i915, i915->current.immediate[i]);
223 emit_immediate_s6(i915, i915->current.immediate[i]);
225 OUT_BATCH(i915->current.immediate[i]);
231 validate_dynamic(struct i915_context *i915, unsigned *batch_space)
233 *batch_space = util_bitcount(i915->dynamic_dirty & ((1 << I915_MAX_DYNAMIC) - 1));
237 emit_dynamic(struct i915_context *i915)
241 if (i915->dynamic_dirty & (1 << i))
242 OUT_BATCH(i915->current.dynamic[i]);
247 validate_static(struct i915_context *i915, unsigned *batch_space)
251 if (i915->current.cbuf_bo && (i915->static_dirty & I915_DST_BUF_COLOR)) {
252 i915->validation_buffers[i915->num_validation_buffers++]
253 = i915->current.cbuf_bo;
257 if (i915->current.depth_bo && (i915->static_dirty & I915_DST_BUF_DEPTH)) {
258 i915->validation_buffers[i915->num_validation_buffers++]
259 = i915->current.depth_bo;
263 if (i915->static_dirty & I915_DST_VARS)
266 if (i915->static_dirty & I915_DST_RECT)
271 emit_static(struct i915_context *i915)
273 if (i915->current.cbuf_bo && (i915->static_dirty & I915_DST_BUF_COLOR)) {
275 OUT_BATCH(i915->current.cbuf_flags);
276 OUT_RELOC(i915->current.cbuf_bo,
283 if (i915->current.depth_bo && (i915->static_dirty & I915_DST_BUF_DEPTH)) {
285 OUT_BATCH(i915->current.depth_flags);
286 OUT_RELOC(i915->current.depth_bo,
291 if (i915->static_dirty & I915_DST_VARS) {
293 OUT_BATCH(i915->current.dst_buf_vars);
298 validate_map(struct i915_context *i915, unsigned *batch_space)
300 const uint enabled = i915->current.sampler_enable_flags;
304 *batch_space = i915->current.sampler_enable_nr ?
305 2 + 3*i915->current.sampler_enable_nr : 0;
309 tex = i915_texture(i915->fragment_sampler_views[unit]->texture);
310 i915->validation_buffers[i915->num_validation_buffers++] = tex->buffer;
316 emit_map(struct i915_context *i915)
318 const uint nr = i915->current.sampler_enable_nr;
320 const uint enabled = i915->current.sampler_enable_flags;
327 struct i915_texture *texture = i915_texture(i915->fragment_sampler_views[unit]->texture);
329 unsigned offset = i915->current.texbuffer[unit][2];
336 OUT_BATCH(i915->current.texbuffer[unit][0]); /* MS3 */
337 OUT_BATCH(i915->current.texbuffer[unit][1]); /* MS4 */
345 validate_sampler(struct i915_context *i915, unsigned *batch_space)
347 *batch_space = i915->current.sampler_enable_nr ?
348 2 + 3*i915->current.sampler_enable_nr : 0;
352 emit_sampler(struct i915_context *i915)
354 if (i915->current.sampler_enable_nr) {
358 (3 * i915->current.sampler_enable_nr) );
360 OUT_BATCH( i915->current.sampler_enable_flags );
363 if (i915->current.sampler_enable_flags & (1<<i)) {
364 OUT_BATCH( i915->current.sampler[i][0] );
365 OUT_BATCH( i915->current.sampler[i][1] );
366 OUT_BATCH( i915->current.sampler[i][2] );
373 validate_constants(struct i915_context *i915, unsigned *batch_space)
375 int nr = i915->fs->num_constants ?
376 2 + 4*i915->fs->num_constants : 0;
382 emit_constants(struct i915_context *i915)
387 const uint nr = i915->fs->num_constants;
398 if (i915->fs->constant_flags[i] == I915_CONSTFLAG_USER) {
400 c = (uint *) i915_buffer(i915->constants[PIPE_SHADER_FRAGMENT])->data;
405 c = (uint *) i915->fs->constants[i];
411 (i915->fs->constant_flags[i] == I915_CONSTFLAG_USER
424 validate_program(struct i915_context *i915, unsigned *batch_space)
428 additional_size += i915->current.target_fixup_format ? 3 : 0;
431 *batch_space = i915->fs->decl_len + i915->fs->program_len + additional_size;
435 emit_program(struct i915_context *i915)
441 validate_program(i915, &additional_size);
442 additional_size -= i915->fs->decl_len + i915->fs->program_len;
445 assert(i915->fs->program_len > 0);
450 uint size = (i915->fs->decl[0]);
455 for (i = 1 ; i < i915->fs->decl_len; i++)
456 OUT_BATCH(i915->fs->decl[i]);
459 assert(i915->fs->program_len % 3 == 0);
460 for (i = 0 ; i < i915->fs->program_len; i+=3) {
461 OUT_BATCH(i915->fs->program[i]);
462 OUT_BATCH(i915->fs->program[i+1]);
463 OUT_BATCH(i915->fs->program[i+2]);
467 if (i915->current.target_fixup_format) {
474 OUT_BATCH(i915->current.fixup_swizzle);
480 emit_draw_rect(struct i915_context *i915)
482 if (i915->static_dirty & I915_DST_RECT) {
485 OUT_BATCH(i915->current.draw_offset);
486 OUT_BATCH(i915->current.draw_size);
487 OUT_BATCH(i915->current.draw_offset);
492 i915_validate_state(struct i915_context *i915, unsigned *batch_space)
496 i915->num_validation_buffers = 0;
497 if (i915->hardware_dirty & I915_HW_INVARIANT)
505 if (i915->hardware_dirty & hw_dirty) { \
507 validate_##atom(i915, &tmp); \
514 if (i915->hardware_dirty & hw_dirty) { \
515 validate_##atom(i915, &tmp); \
528 if (i915->num_validation_buffers == 0)
531 if (!i915_winsys_validate_buffers(i915->batch, i915->validation_buffers,
532 i915->num_validation_buffers))
541 i915_emit_hardware_state(struct i915_context *i915 )
546 assert(i915->dirty == 0);
549 i915_dump_hardware_dirty(i915, __FUNCTION__);
551 if (!i915_validate_state(i915, &batch_space)) {
553 assert(i915_validate_state(i915, &batch_space));
558 assert(i915_validate_state(i915, &batch_space));
562 save_ptr = (uintptr_t)i915->batch->ptr;
565 if (i915->hardware_dirty & hw_dirty) \
566 emit_##atom(i915);
580 ((uintptr_t)i915->batch->ptr - save_ptr) / 4,
582 assert(((uintptr_t)i915->batch->ptr - save_ptr) / 4 == batch_space);
584 i915->hardware_dirty = 0;
585 i915->immediate_dirty = 0;
586 i915->dynamic_dirty = 0;
587 i915->static_dirty = 0;
588 i915->flush_dirty = 0;