NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

availablePlatforms.py (4098B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\d3dinfo\availablePlatforms.py
      2 import sys
      3 import os
      4 import blue
      5 import logging
      6 logger = logging.getLogger(__name__)
      7 try:
      8     d3dinfo = blue.LoadExtension('_d3dinfo')
      9 except ImportError:
     10     d3dinfo = None
     11 
     12 def IsD3D11Valid():
     13     if not d3dinfo:
     14         return True
     15     isOK = False
     16     d3d = d3dinfo.D3D11Info()
     17     try:
     18         d3d.InitializeD3D()
     19         adapterCount = d3d.GetAdapterCount()
     20         if adapterCount > 0:
     21             isOK = True
     22         d3d.ShutdownD3D()
     23     except RuntimeError:
     24         pass
     25 
     26     return isOK
     27 
     28 
     29 _INTEL_ONBOARD_DEVICE_IDS = [42880,
     30  42881,
     31  42888,
     32  42889,
     33  42890,
     34  42882,
     35  42891,
     36  42883,
     37  42912,
     38  42913,
     39  42920,
     40  42922,
     41  42923,
     42  42924,
     43  42925,
     44  42921,
     45  42785,
     46  18693,
     47  18695,
     48  18696,
     49  18697,
     50  18048,
     51  4690,
     52  18056,
     53  18058,
     54  18059,
     55  18050,
     56  4692,
     57  18067,
     58  18131,
     59  18132,
     60  18128,
     61  18129,
     62  18130,
     63  17958,
     64  17960,
     65  17962,
     66  18082,
     67  18099,
     68  18114,
     69  18083,
     70  18098,
     71  18115,
     72  18080,
     73  18096,
     74  18112,
     75  18086,
     76  18090,
     77  18088,
     78  18081,
     79  18097,
     80  18113,
     81  19594,
     82  19595,
     83  19600,
     84  19610,
     85  20081,
     86  20065,
     87  20055,
     88  20053,
     89  20049,
     90  17751,
     91  17749,
     92  17777,
     93  17745,
     94  17729,
     95  39513,
     96  39544,
     97  39520,
     98  39536,
     99  39528,
    100  39488,
    101  39497,
    102  35440,
    103  35441,
    104  35414,
    105  35416,
    106  35419,
    107  35421,
    108  35412,
    109  35418,
    110  35420,
    111  35415,
    112  35417,
    113  35408,
    114  35409,
    115  35410,
    116  35411,
    117  16037,
    118  16040,
    119  16038,
    120  16039,
    121  16034,
    122  16016,
    123  16019,
    124  16025,
    125  16028,
    126  16033,
    127  39845,
    128  39848,
    129  16036,
    130  39713,
    131  39840,
    132  39842,
    133  39844,
    134  39850,
    135  39851,
    136  39852,
    137  34762,
    138  16035,
    139  39745,
    140  39872,
    141  39874,
    142  39876,
    143  39882,
    144  39883,
    145  39884,
    146  16017,
    147  16018,
    148  16024,
    149  16027,
    150  39877,
    151  39880,
    152  16022,
    153  16026,
    154  16020,
    155  39878,
    156  39910,
    157  39926,
    158  16041,
    159  16032,
    160  22843,
    161  22819,
    162  22822,
    163  22823,
    164  22807,
    165  22802,
    166  22811,
    167  22806,
    168  22817,
    169  22810,
    170  22813,
    171  22814,
    172  22812,
    173  34752,
    174  22803,
    175  22805,
    176  22786,
    177  22790,
    178  22795,
    179  22794,
    180  22792,
    181  22798,
    182  12677,
    183  12676,
    184  6789,
    185  23173,
    186  2692,
    187  6788,
    188  23172,
    189  6442,
    190  6450,
    191  6459,
    192  6458,
    193  6461,
    194  6435,
    195  6438,
    196  6439,
    197  6443,
    198  6445,
    199  6418,
    200  6427,
    201  6419,
    202  6421,
    203  6423,
    204  6426,
    205  6422,
    206  6433,
    207  6429,
    208  6430,
    209  6402,
    210  6406,
    211  6411,
    212  6410,
    213  6414,
    214  5693,
    215  5690,
    216  5682,
    217  5694,
    218  5691,
    219  5686,
    220  5666,
    221  5670,
    222  5674,
    223  5675,
    224  5677,
    225  5678,
    226  5650,
    227  5654,
    228  5658,
    229  5659,
    230  5661,
    231  5662,
    232  5634,
    233  5638,
    234  5642,
    235  5643,
    236  5645,
    237  5646,
    238  8880,
    239  8882,
    240  8883,
    241  8881]
    242 _INTEL_VENDOR_ID = 32902
    243 
    244 def IsIntelOnBoardGpu(adapterInfo):
    245     return adapterInfo.vendorID == _INTEL_VENDOR_ID and adapterInfo.deviceID in _INTEL_ONBOARD_DEVICE_IDS
    246 
    247 
    248 def IsD3D12Valid():
    249     if not d3dinfo:
    250         return True
    251     isOK = False
    252     d3d = d3dinfo.D3D12Info()
    253     try:
    254         d3d.InitializeD3D()
    255         adapterCount = d3d.GetAdapterCount()
    256         if adapterCount > 0:
    257             isOK = True
    258             try:
    259                 if IsIntelOnBoardGpu(d3d.GetAdapterInfo(0)):
    260                     logger.info('Intel on-board GPU detected, assuming D3D12 is not supported')
    261                     isOK = False
    262             except:
    263                 pass
    264 
    265         d3d.ShutdownD3D()
    266     except RuntimeError:
    267         pass
    268 
    269     return isOK
    270 
    271 
    272 def GetAvailablePlatforms():
    273     platforms = []
    274     if sys.platform.startswith('darwin'):
    275         platforms.append('metal')
    276     else:
    277         if IsD3D11Valid():
    278             platforms.append('dx11')
    279         if IsD3D12Valid():
    280             platforms.append('dx12')
    281     platforms.append('stub')
    282     return platforms
    283 
    284 
    285 def InstallSystemBinaries(fileName):
    286     installMsg = 'Executing %s ...' % fileName
    287     print installMsg
    288     logger.info(installMsg)
    289     oldDir = os.getcwdu()
    290     os.chdir(blue.paths.ResolvePath(u'bin:/'))
    291     exitStatus = os.system(fileName)
    292     os.chdir(oldDir)
    293     retString = 'Execution of ' + fileName
    294     if exitStatus:
    295         retString += ' failed (exit code %d)' % exitStatus
    296         logger.error(retString)
    297     else:
    298         retString += ' succeeded'
    299         logger.info(retString)
    300 
    301 
    302 def InstallDirectXIfNeeded():
    303     if not IsD3D11Valid():
    304         import imp
    305         if imp.get_suffixes()[0][0] == '_d.pyd':
    306             InstallSystemBinaries('DirectXRedistForDebug.exe')
    307         else:
    308             InstallSystemBinaries('DirectXRedist.exe')