Edit

IABSD.fr/xenocara/lib/mesa/src/loader/pci_id_driver_map.c

Branch :

  • Show log

    Commit

  • Author : jsg
    Date : 2016-12-11 08:25:29
    Hash : a53e30e0
    Message : Import Mesa 13.0.2

  • lib/mesa/src/loader/pci_id_driver_map.c
  • /*
     * Copyright 2014 Ilia Mirkin
     *
     * Permission is hereby granted, free of charge, to any person obtaining a
     * copy of this software and associated documentation files (the "Software"),
     * to deal in the Software without restriction, including without limitation
     * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     * and/or sell copies of the Software, and to permit persons to whom the
     * Software is furnished to do so, subject to the following conditions:
     *
     * The above copyright notice and this permission notice (including the next
     * paragraph) shall be included in all copies or substantial portions of the
     * Software.
     *
     * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
     * SOFTWARE.
     */
    
    int is_nouveau_vieux(int fd);
    
    #ifdef HAVE_LIBDRM
    
    #include <stdlib.h>
    #include <xf86drm.h>
    #include <nouveau_drm.h>
    
    static int
    nouveau_chipset(int fd)
    {
       struct drm_nouveau_getparam gp = { NOUVEAU_GETPARAM_CHIPSET_ID, 0 };
       int ret;
    
       ret = drmCommandWriteRead(fd, DRM_NOUVEAU_GETPARAM, &gp, sizeof(gp));
       if (ret)
          return -1;
    
       return gp.value;
    }
    
    int
    is_nouveau_vieux(int fd)
    {
       int chipset = nouveau_chipset(fd);
       return (chipset > 0 && chipset < 0x30) ||
          (chipset < 0x40 && getenv("NOUVEAU_VIEUX") != NULL);
    }
    
    #else
    
    int is_nouveau_vieux(int fd) { return 0; }
    
    #endif