Ignore:
Timestamp:
Apr 18, 2017, 8:47:31 AM (7 days ago)
Author:
brainslayer
Message:

update kernels

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-4.9/drivers/gpu/drm/i915/i915_gem_execbuffer.c

    r31574 r31884  
    14551455               struct list_head *vmas)
    14561456{
    1457         struct drm_i915_private *dev_priv = params->request->i915;
    14581457        u64 exec_start, exec_len;
    1459         int instp_mode;
    1460         u32 instp_mask;
    14611458        int ret;
    14621459
     
    14691466                return ret;
    14701467
    1471         instp_mode = args->flags & I915_EXEC_CONSTANTS_MASK;
    1472         instp_mask = I915_EXEC_CONSTANTS_MASK;
    1473         switch (instp_mode) {
    1474         case I915_EXEC_CONSTANTS_REL_GENERAL:
    1475         case I915_EXEC_CONSTANTS_ABSOLUTE:
    1476         case I915_EXEC_CONSTANTS_REL_SURFACE:
    1477                 if (instp_mode != 0 && params->engine->id != RCS) {
    1478                         DRM_DEBUG("non-0 rel constants mode on non-RCS\n");
    1479                         return -EINVAL;
    1480                 }
    1481 
    1482                 if (instp_mode != dev_priv->relative_constants_mode) {
    1483                         if (INTEL_INFO(dev_priv)->gen < 4) {
    1484                                 DRM_DEBUG("no rel constants on pre-gen4\n");
    1485                                 return -EINVAL;
    1486                         }
    1487 
    1488                         if (INTEL_INFO(dev_priv)->gen > 5 &&
    1489                             instp_mode == I915_EXEC_CONSTANTS_REL_SURFACE) {
    1490                                 DRM_DEBUG("rel surface constants mode invalid on gen5+\n");
    1491                                 return -EINVAL;
    1492                         }
    1493 
    1494                         /* The HW changed the meaning on this bit on gen6 */
    1495                         if (INTEL_INFO(dev_priv)->gen >= 6)
    1496                                 instp_mask &= ~I915_EXEC_CONSTANTS_REL_SURFACE;
    1497                 }
    1498                 break;
    1499         default:
    1500                 DRM_DEBUG("execbuf with unknown constants: %d\n", instp_mode);
     1468        if (args->flags & I915_EXEC_CONSTANTS_MASK) {
     1469                DRM_DEBUG("I915_EXEC_CONSTANTS_* unsupported\n");
    15011470                return -EINVAL;
    1502         }
    1503 
    1504         if (params->engine->id == RCS &&
    1505             instp_mode != dev_priv->relative_constants_mode) {
    1506                 struct intel_ring *ring = params->request->ring;
    1507 
    1508                 ret = intel_ring_begin(params->request, 4);
    1509                 if (ret)
    1510                         return ret;
    1511 
    1512                 intel_ring_emit(ring, MI_NOOP);
    1513                 intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1));
    1514                 intel_ring_emit_reg(ring, INSTPM);
    1515                 intel_ring_emit(ring, instp_mask << 16 | instp_mode);
    1516                 intel_ring_advance(ring);
    1517 
    1518                 dev_priv->relative_constants_mode = instp_mode;
    15191471        }
    15201472
Note: See TracChangeset for help on using the changeset viewer.