The OpenBSD version of struct drm_i915_execbuffer2 doesn't include the member for cliprect support. Not entirely sure why. Perhaps when Owain Ainsworth added GEM support, it was already obvious that cliprects were not going to be supported on new hardware and therefore not worth supporting. Unfortunately the sna code explicitly initializes these members. Obviously we can't just add those members without breaking binary compatibility. So the diff below takes an easy way out and adds an #infdef __OpenBSD__ around the initializations. An alternative would be to use memset() to zero-initialize the entire struct and skip the initialization of members that are zero. What would be preferred? diff --git a/src/sna/kgem.c b/src/sna/kgem.c index e0d864d..ff01bd2 100644 --- a/src/sna/kgem.c +++ b/src/sna/kgem.c @@ -2627,10 +2627,12 @@ void _kgem_submit(struct kgem *kgem) execbuf.buffer_count = kgem->nexec; execbuf.batch_start_offset = 0; execbuf.batch_len = batch_end*sizeof(uint32_t); +#ifndef __OpenBSD__ execbuf.cliprects_ptr = 0; execbuf.num_cliprects = 0; execbuf.DR1 = 0; execbuf.DR4 = 0; +#endif execbuf.flags = kgem->ring | kgem->batch_flags; execbuf.rsvd1 = 0; execbuf.rsvd2 = 0;