NVCtrl.h 172 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562
  1. /*
  2. * Copyright (c) 2010 NVIDIA, Corporation
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a copy
  5. * of this software and associated documentation files (the "Software"), to deal
  6. * in the Software without restriction, including without limitation the rights
  7. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  8. * copies of the Software, and to permit persons to whom the Software is
  9. * furnished to do so, subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice (including the next
  12. * paragraph) shall be included in all copies or substantial portions of the
  13. * Software.
  14. *
  15. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  21. * SOFTWARE.
  22. */
  23. #ifndef __NVCTRL_H
  24. #define __NVCTRL_H
  25. #include <stdint.h>
  26. /**************************************************************************/
  27. /*
  28. * Attribute Targets
  29. *
  30. * Targets define attribute groups. For example, some attributes are only
  31. * valid to set on a GPU, others are only valid when talking about an
  32. * X Screen. Target types are then what is used to identify the target
  33. * group of the attribute you wish to set/query.
  34. *
  35. * Here are the supported target types:
  36. */
  37. #define NV_CTRL_TARGET_TYPE_X_SCREEN 0
  38. #define NV_CTRL_TARGET_TYPE_GPU 1
  39. #define NV_CTRL_TARGET_TYPE_FRAMELOCK 2
  40. #define NV_CTRL_TARGET_TYPE_VCSC 3 /* Visual Computing System */
  41. #define NV_CTRL_TARGET_TYPE_GVI 4
  42. #define NV_CTRL_TARGET_TYPE_COOLER 5 /* e.g., fan */
  43. #define NV_CTRL_TARGET_TYPE_THERMAL_SENSOR 6
  44. #define NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER 7
  45. #define NV_CTRL_TARGET_TYPE_DISPLAY 8
  46. /**************************************************************************/
  47. /*
  48. * Attributes
  49. *
  50. * Some attributes may only be read; some may require a display_mask
  51. * argument and others may be valid only for specific target types.
  52. * This information is encoded in the "permission" comment after each
  53. * attribute #define, and can be queried at run time with
  54. * XNVCTRLQueryValidAttributeValues() and/or
  55. * XNVCTRLQueryValidTargetAttributeValues()
  56. *
  57. * Key to Integer Attribute "Permissions":
  58. *
  59. * R: The attribute is readable (in general, all attributes will be
  60. * readable)
  61. *
  62. * W: The attribute is writable (attributes may not be writable for
  63. * various reasons: they represent static system information, they
  64. * can only be changed by changing an XF86Config option, etc).
  65. *
  66. * D: The attribute requires the display mask argument. The
  67. * attributes NV_CTRL_CONNECTED_DISPLAYS and NV_CTRL_ENABLED_DISPLAYS
  68. * will be a bitmask of what display devices are connected and what
  69. * display devices are enabled for use in X, respectively. Each bit
  70. * in the bitmask represents a display device; it is these bits which
  71. * should be used as the display_mask when dealing with attributes
  72. * designated with "D" below. For attributes that do not require the
  73. * display mask, the argument is ignored.
  74. *
  75. * Alternatively, NV-CONTROL versions 1.27 and greater allow these
  76. * attributes to be accessed via display target types, in which case
  77. * the display_mask is ignored.
  78. *
  79. * G: The attribute may be queried using an NV_CTRL_TARGET_TYPE_GPU
  80. * target type via XNVCTRLQueryTargetAttribute().
  81. *
  82. * F: The attribute may be queried using an NV_CTRL_TARGET_TYPE_FRAMELOCK
  83. * target type via XNVCTRLQueryTargetAttribute().
  84. *
  85. * X: When Xinerama is enabled, this attribute is kept consistent across
  86. * all Physical X Screens; assignment of this attribute will be
  87. * broadcast by the NVIDIA X Driver to all X Screens.
  88. *
  89. * V: The attribute may be queried using an NV_CTRL_TARGET_TYPE_VCSC
  90. * target type via XNVCTRLQueryTargetAttribute().
  91. *
  92. * I: The attribute may be queried using an NV_CTRL_TARGET_TYPE_GVI target type
  93. * via XNVCTRLQueryTargetAttribute().
  94. *
  95. * Q: The attribute is a 64-bit integer attribute; use the 64-bit versions
  96. * of the appropriate query interfaces.
  97. *
  98. * C: The attribute may be queried using an NV_CTRL_TARGET_TYPE_COOLER target
  99. * type via XNVCTRLQueryTargetAttribute().
  100. *
  101. * S: The attribute may be queried using an NV_CTRL_TARGET_TYPE_THERMAL_SENSOR
  102. * target type via XNVCTRLQueryTargetAttribute().
  103. *
  104. * T: The attribute may be queried using an
  105. * NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER target type
  106. * via XNVCTRLQueryTargetAttribute().
  107. *
  108. * NOTE: Unless mentioned otherwise, all attributes may be queried using
  109. * an NV_CTRL_TARGET_TYPE_X_SCREEN target type via
  110. * XNVCTRLQueryTargetAttribute().
  111. */
  112. /**************************************************************************/
  113. /*
  114. * Integer attributes:
  115. *
  116. * Integer attributes can be queried through the XNVCTRLQueryAttribute() and
  117. * XNVCTRLQueryTargetAttribute() function calls.
  118. *
  119. * Integer attributes can be set through the XNVCTRLSetAttribute() and
  120. * XNVCTRLSetTargetAttribute() function calls.
  121. *
  122. * Unless otherwise noted, all integer attributes can be queried/set
  123. * using an NV_CTRL_TARGET_TYPE_X_SCREEN target. Attributes that cannot
  124. * take an NV_CTRL_TARGET_TYPE_X_SCREEN also cannot be queried/set through
  125. * XNVCTRLQueryAttribute()/XNVCTRLSetAttribute() (Since these assume
  126. * an X Screen target).
  127. */
  128. /*
  129. * NV_CTRL_FLATPANEL_SCALING - not supported
  130. */
  131. #define NV_CTRL_FLATPANEL_SCALING 2 /* RWDG */
  132. #define NV_CTRL_FLATPANEL_SCALING_DEFAULT 0
  133. #define NV_CTRL_FLATPANEL_SCALING_NATIVE 1
  134. #define NV_CTRL_FLATPANEL_SCALING_SCALED 2
  135. #define NV_CTRL_FLATPANEL_SCALING_CENTERED 3
  136. #define NV_CTRL_FLATPANEL_SCALING_ASPECT_SCALED 4
  137. /*
  138. * NV_CTRL_FLATPANEL_DITHERING is deprecated; NV_CTRL_DITHERING should
  139. * be used instead.
  140. */
  141. #define NV_CTRL_FLATPANEL_DITHERING 3 /* RWDG */
  142. #define NV_CTRL_FLATPANEL_DITHERING_DEFAULT 0
  143. #define NV_CTRL_FLATPANEL_DITHERING_ENABLED 1
  144. #define NV_CTRL_FLATPANEL_DITHERING_DISABLED 2
  145. /*
  146. * NV_CTRL_DITHERING - the requested dithering configuration;
  147. * possible values are:
  148. *
  149. * 0: auto (the driver will decide when to dither)
  150. * 1: enabled (the driver will always dither when possible)
  151. * 2: disabled (the driver will never dither)
  152. */
  153. #define NV_CTRL_DITHERING 3 /* RWDG */
  154. #define NV_CTRL_DITHERING_AUTO 0
  155. #define NV_CTRL_DITHERING_ENABLED 1
  156. #define NV_CTRL_DITHERING_DISABLED 2
  157. /*
  158. * NV_CTRL_DIGITAL_VIBRANCE - sets the digital vibrance level for the
  159. * specified display device.
  160. */
  161. #define NV_CTRL_DIGITAL_VIBRANCE 4 /* RWDG */
  162. /*
  163. * NV_CTRL_BUS_TYPE - returns the bus type through which the specified device
  164. * is connected to the computer.
  165. * When this attribute is queried on an X screen target, the bus type of the
  166. * GPU driving the X screen is returned.
  167. */
  168. #define NV_CTRL_BUS_TYPE 5 /* R--GI */
  169. #define NV_CTRL_BUS_TYPE_AGP 0
  170. #define NV_CTRL_BUS_TYPE_PCI 1
  171. #define NV_CTRL_BUS_TYPE_PCI_EXPRESS 2
  172. #define NV_CTRL_BUS_TYPE_INTEGRATED 3
  173. /*
  174. * NV_CTRL_VIDEO_RAM - returns the total amount of memory available
  175. * to the specified GPU (or the GPU driving the specified X
  176. * screen). Note: if the GPU supports TurboCache(TM), the value
  177. * reported may exceed the amount of video memory installed on the
  178. * GPU. The value reported for integrated GPUs may likewise exceed
  179. * the amount of dedicated system memory set aside by the system
  180. * BIOS for use by the integrated GPU.
  181. */
  182. #define NV_CTRL_VIDEO_RAM 6 /* R--G */
  183. /*
  184. * NV_CTRL_IRQ - returns the interrupt request line used by the specified
  185. * device.
  186. * When this attribute is queried on an X screen target, the IRQ of the GPU
  187. * driving the X screen is returned.
  188. */
  189. #define NV_CTRL_IRQ 7 /* R--GI */
  190. /*
  191. * NV_CTRL_OPERATING_SYSTEM - returns the operating system on which
  192. * the X server is running.
  193. */
  194. #define NV_CTRL_OPERATING_SYSTEM 8 /* R--G */
  195. #define NV_CTRL_OPERATING_SYSTEM_LINUX 0
  196. #define NV_CTRL_OPERATING_SYSTEM_FREEBSD 1
  197. #define NV_CTRL_OPERATING_SYSTEM_SUNOS 2
  198. /*
  199. * NV_CTRL_SYNC_TO_VBLANK - enables sync to vblank for OpenGL clients.
  200. * This setting is only applied to OpenGL clients that are started
  201. * after this setting is applied.
  202. */
  203. #define NV_CTRL_SYNC_TO_VBLANK 9 /* RW-X */
  204. #define NV_CTRL_SYNC_TO_VBLANK_OFF 0
  205. #define NV_CTRL_SYNC_TO_VBLANK_ON 1
  206. /*
  207. * NV_CTRL_LOG_ANISO - enables anisotropic filtering for OpenGL
  208. * clients; on some NVIDIA hardware, this can only be enabled or
  209. * disabled; on other hardware different levels of anisotropic
  210. * filtering can be specified. This setting is only applied to OpenGL
  211. * clients that are started after this setting is applied.
  212. */
  213. #define NV_CTRL_LOG_ANISO 10 /* RW-X */
  214. /*
  215. * NV_CTRL_FSAA_MODE - the FSAA setting for OpenGL clients; possible
  216. * FSAA modes:
  217. *
  218. * NV_CTRL_FSAA_MODE_2x "2x Bilinear Multisampling"
  219. * NV_CTRL_FSAA_MODE_2x_5t "2x Quincunx Multisampling"
  220. * NV_CTRL_FSAA_MODE_15x15 "1.5 x 1.5 Supersampling"
  221. * NV_CTRL_FSAA_MODE_2x2 "2 x 2 Supersampling"
  222. * NV_CTRL_FSAA_MODE_4x "4x Bilinear Multisampling"
  223. * NV_CTRL_FSAA_MODE_4x_9t "4x Gaussian Multisampling"
  224. * NV_CTRL_FSAA_MODE_8x "2x Bilinear Multisampling by 4x Supersampling"
  225. * NV_CTRL_FSAA_MODE_16x "4x Bilinear Multisampling by 4x Supersampling"
  226. * NV_CTRL_FSAA_MODE_8xS "4x Multisampling by 2x Supersampling"
  227. *
  228. * This setting is only applied to OpenGL clients that are started
  229. * after this setting is applied.
  230. */
  231. #define NV_CTRL_FSAA_MODE 11 /* RW-X */
  232. #define NV_CTRL_FSAA_MODE_NONE 0
  233. #define NV_CTRL_FSAA_MODE_2x 1
  234. #define NV_CTRL_FSAA_MODE_2x_5t 2
  235. #define NV_CTRL_FSAA_MODE_15x15 3
  236. #define NV_CTRL_FSAA_MODE_2x2 4
  237. #define NV_CTRL_FSAA_MODE_4x 5
  238. #define NV_CTRL_FSAA_MODE_4x_9t 6
  239. #define NV_CTRL_FSAA_MODE_8x 7
  240. #define NV_CTRL_FSAA_MODE_16x 8
  241. #define NV_CTRL_FSAA_MODE_8xS 9
  242. #define NV_CTRL_FSAA_MODE_8xQ 10
  243. #define NV_CTRL_FSAA_MODE_16xS 11
  244. #define NV_CTRL_FSAA_MODE_16xQ 12
  245. #define NV_CTRL_FSAA_MODE_32xS 13
  246. #define NV_CTRL_FSAA_MODE_32x 14
  247. #define NV_CTRL_FSAA_MODE_64xS 15
  248. #define NV_CTRL_FSAA_MODE_MAX NV_CTRL_FSAA_MODE_64xS
  249. /*
  250. * NV_CTRL_TEXTURE_SHARPEN - enables texture sharpening for OpenGL
  251. * clients. This setting is only applied to OpenGL clients that are
  252. * started after this setting is applied.
  253. */
  254. #define NV_CTRL_TEXTURE_SHARPEN 12 /* RW-X */
  255. #define NV_CTRL_TEXTURE_SHARPEN_OFF 0
  256. #define NV_CTRL_TEXTURE_SHARPEN_ON 1
  257. /*
  258. * NV_CTRL_UBB - returns whether UBB is enabled for the specified X
  259. * screen.
  260. */
  261. #define NV_CTRL_UBB 13 /* R-- */
  262. #define NV_CTRL_UBB_OFF 0
  263. #define NV_CTRL_UBB_ON 1
  264. /*
  265. * NV_CTRL_OVERLAY - returns whether the RGB overlay is enabled for
  266. * the specified X screen.
  267. */
  268. #define NV_CTRL_OVERLAY 14 /* R-- */
  269. #define NV_CTRL_OVERLAY_OFF 0
  270. #define NV_CTRL_OVERLAY_ON 1
  271. /*
  272. * NV_CTRL_STEREO - returns whether stereo (and what type) is enabled
  273. * for the specified X screen.
  274. */
  275. #define NV_CTRL_STEREO 16 /* R-- */
  276. #define NV_CTRL_STEREO_OFF 0
  277. #define NV_CTRL_STEREO_DDC 1
  278. #define NV_CTRL_STEREO_BLUELINE 2
  279. #define NV_CTRL_STEREO_DIN 3
  280. #define NV_CTRL_STEREO_PASSIVE_EYE_PER_DPY 4
  281. #define NV_CTRL_STEREO_VERTICAL_INTERLACED 5
  282. #define NV_CTRL_STEREO_COLOR_INTERLACED 6
  283. #define NV_CTRL_STEREO_HORIZONTAL_INTERLACED 7
  284. #define NV_CTRL_STEREO_CHECKERBOARD_PATTERN 8
  285. #define NV_CTRL_STEREO_INVERSE_CHECKERBOARD_PATTERN 9
  286. #define NV_CTRL_STEREO_3D_VISION 10
  287. #define NV_CTRL_STEREO_3D_VISION_PRO 11
  288. /*
  289. * NV_CTRL_EMULATE - controls OpenGL software emulation of future
  290. * NVIDIA GPUs.
  291. */
  292. #define NV_CTRL_EMULATE 17 /* RW- */
  293. #define NV_CTRL_EMULATE_NONE 0
  294. /*
  295. * NV_CTRL_TWINVIEW - returns whether TwinView is enabled for the
  296. * specified X screen.
  297. */
  298. #define NV_CTRL_TWINVIEW 18 /* R-- */
  299. #define NV_CTRL_TWINVIEW_NOT_ENABLED 0
  300. #define NV_CTRL_TWINVIEW_ENABLED 1
  301. /*
  302. * NV_CTRL_CONNECTED_DISPLAYS - returns a display mask indicating the last
  303. * cached state of the display devices connected to the GPU or GPU driving
  304. * the specified X screen.
  305. *
  306. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  307. * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
  308. */
  309. #define NV_CTRL_CONNECTED_DISPLAYS 19 /* R--G */
  310. /*
  311. * NV_CTRL_ENABLED_DISPLAYS - returns a display mask indicating what
  312. * display devices are enabled for use on the specified X screen or
  313. * GPU.
  314. *
  315. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  316. * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
  317. */
  318. #define NV_CTRL_ENABLED_DISPLAYS 20 /* R--G */
  319. /**************************************************************************/
  320. /*
  321. * Integer attributes specific to configuring Frame Lock on boards that
  322. * support it.
  323. */
  324. /*
  325. * NV_CTRL_FRAMELOCK - returns whether the underlying GPU supports
  326. * Frame Lock. All of the other frame lock attributes are only
  327. * applicable if NV_CTRL_FRAMELOCK is _SUPPORTED.
  328. *
  329. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  330. * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
  331. */
  332. #define NV_CTRL_FRAMELOCK 21 /* R--G */
  333. #define NV_CTRL_FRAMELOCK_NOT_SUPPORTED 0
  334. #define NV_CTRL_FRAMELOCK_SUPPORTED 1
  335. /*
  336. * NV_CTRL_FRAMELOCK_MASTER - get/set which display device to use
  337. * as the frame lock master for the entire sync group. Note that only
  338. * one node in the sync group should be configured as the master.
  339. *
  340. * This attribute can only be queried through XNVCTRLQueryTargetAttribute()
  341. * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be
  342. * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN.
  343. */
  344. #define NV_CTRL_FRAMELOCK_MASTER 22 /* RW-G */
  345. /* These are deprecated. NV_CTRL_FRAMELOCK_MASTER now takes and
  346. returns a display mask as value. */
  347. #define NV_CTRL_FRAMELOCK_MASTER_FALSE 0
  348. #define NV_CTRL_FRAMELOCK_MASTER_TRUE 1
  349. /*
  350. * NV_CTRL_FRAMELOCK_POLARITY - sync either to the rising edge of the
  351. * frame lock pulse, the falling edge of the frame lock pulse or both.
  352. *
  353. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  354. * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
  355. * target.
  356. */
  357. #define NV_CTRL_FRAMELOCK_POLARITY 23 /* RW-F */
  358. #define NV_CTRL_FRAMELOCK_POLARITY_RISING_EDGE 0x1
  359. #define NV_CTRL_FRAMELOCK_POLARITY_FALLING_EDGE 0x2
  360. #define NV_CTRL_FRAMELOCK_POLARITY_BOTH_EDGES 0x3
  361. /*
  362. * NV_CTRL_FRAMELOCK_SYNC_DELAY - delay between the frame lock pulse
  363. * and the GPU sync. This value must be multiplied by
  364. * NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION to determine the sync delay in
  365. * nanoseconds.
  366. *
  367. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  368. * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
  369. * target.
  370. *
  371. * USAGE NODE: NV_CTRL_FRAMELOCK_SYNC_DELAY_MAX and
  372. * NV_CTRL_FRAMELOCK_SYNC_DELAY_FACTOR are deprecated.
  373. * The Sync Delay _MAX and _FACTOR are different for different
  374. * GSync products and so, to be correct, the valid values for
  375. * NV_CTRL_FRAMELOCK_SYNC_DELAY must be queried to get the range
  376. * of acceptable sync delay values, and
  377. * NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION must be queried to
  378. * obtain the correct factor.
  379. */
  380. #define NV_CTRL_FRAMELOCK_SYNC_DELAY 24 /* RW-F */
  381. #define NV_CTRL_FRAMELOCK_SYNC_DELAY_MAX 2047 // deprecated
  382. #define NV_CTRL_FRAMELOCK_SYNC_DELAY_FACTOR 7.81 // deprecated
  383. /*
  384. * NV_CTRL_FRAMELOCK_SYNC_INTERVAL - how many house sync pulses
  385. * between the frame lock sync generation (0 == sync every house sync);
  386. * this only applies to the master when receiving house sync.
  387. *
  388. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  389. * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
  390. * target.
  391. */
  392. #define NV_CTRL_FRAMELOCK_SYNC_INTERVAL 25 /* RW-F */
  393. /*
  394. * NV_CTRL_FRAMELOCK_PORT0_STATUS - status of the rj45 port0.
  395. *
  396. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  397. * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
  398. * target.
  399. */
  400. #define NV_CTRL_FRAMELOCK_PORT0_STATUS 26 /* R--F */
  401. #define NV_CTRL_FRAMELOCK_PORT0_STATUS_INPUT 0
  402. #define NV_CTRL_FRAMELOCK_PORT0_STATUS_OUTPUT 1
  403. /*
  404. * NV_CTRL_FRAMELOCK_PORT1_STATUS - status of the rj45 port1.
  405. *
  406. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  407. * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
  408. * target.
  409. */
  410. #define NV_CTRL_FRAMELOCK_PORT1_STATUS 27 /* R--F */
  411. #define NV_CTRL_FRAMELOCK_PORT1_STATUS_INPUT 0
  412. #define NV_CTRL_FRAMELOCK_PORT1_STATUS_OUTPUT 1
  413. /*
  414. * NV_CTRL_FRAMELOCK_HOUSE_STATUS - returns whether or not the house
  415. * sync signal was detected on the BNC connector of the frame lock
  416. * board.
  417. *
  418. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  419. * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
  420. * target.
  421. */
  422. #define NV_CTRL_FRAMELOCK_HOUSE_STATUS 28 /* R--F */
  423. #define NV_CTRL_FRAMELOCK_HOUSE_STATUS_NOT_DETECTED 0
  424. #define NV_CTRL_FRAMELOCK_HOUSE_STATUS_DETECTED 1
  425. /*
  426. * NV_CTRL_FRAMELOCK_SYNC - enable/disable the syncing of display
  427. * devices to the frame lock pulse as specified by previous calls to
  428. * NV_CTRL_FRAMELOCK_MASTER and NV_CTRL_FRAMELOCK_SLAVES.
  429. *
  430. * This attribute can only be queried through XNVCTRLQueryTargetAttribute()
  431. * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be
  432. * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN.
  433. */
  434. #define NV_CTRL_FRAMELOCK_SYNC 29 /* RW-G */
  435. #define NV_CTRL_FRAMELOCK_SYNC_DISABLE 0
  436. #define NV_CTRL_FRAMELOCK_SYNC_ENABLE 1
  437. /*
  438. * NV_CTRL_FRAMELOCK_SYNC_READY - reports whether a frame lock
  439. * board is receiving sync (regardless of whether or not any display
  440. * devices are using the sync).
  441. *
  442. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  443. * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
  444. * target.
  445. */
  446. #define NV_CTRL_FRAMELOCK_SYNC_READY 30 /* R--F */
  447. #define NV_CTRL_FRAMELOCK_SYNC_READY_FALSE 0
  448. #define NV_CTRL_FRAMELOCK_SYNC_READY_TRUE 1
  449. /*
  450. * NV_CTRL_FRAMELOCK_STEREO_SYNC - this indicates that the GPU stereo
  451. * signal is in sync with the frame lock stereo signal.
  452. *
  453. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  454. * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN
  455. * target.
  456. */
  457. #define NV_CTRL_FRAMELOCK_STEREO_SYNC 31 /* R--G */
  458. #define NV_CTRL_FRAMELOCK_STEREO_SYNC_FALSE 0
  459. #define NV_CTRL_FRAMELOCK_STEREO_SYNC_TRUE 1
  460. /*
  461. * NV_CTRL_FRAMELOCK_TEST_SIGNAL - to test the connections in the sync
  462. * group, tell the master to enable a test signal, then query port[01]
  463. * status and sync_ready on all slaves. When done, tell the master to
  464. * disable the test signal. Test signal should only be manipulated
  465. * while NV_CTRL_FRAMELOCK_SYNC is enabled.
  466. *
  467. * The TEST_SIGNAL is also used to reset the Universal Frame Count (as
  468. * returned by the glXQueryFrameCountNV() function in the
  469. * GLX_NV_swap_group extension). Note: for best accuracy of the
  470. * Universal Frame Count, it is recommended to toggle the TEST_SIGNAL
  471. * on and off after enabling frame lock.
  472. *
  473. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  474. * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
  475. */
  476. #define NV_CTRL_FRAMELOCK_TEST_SIGNAL 32 /* RW-G */
  477. #define NV_CTRL_FRAMELOCK_TEST_SIGNAL_DISABLE 0
  478. #define NV_CTRL_FRAMELOCK_TEST_SIGNAL_ENABLE 1
  479. /*
  480. * NV_CTRL_FRAMELOCK_ETHERNET_DETECTED - The frame lock boards are
  481. * cabled together using regular cat5 cable, connecting to rj45 ports
  482. * on the backplane of the card. There is some concern that users may
  483. * think these are ethernet ports and connect them to a
  484. * router/hub/etc. The hardware can detect this and will shut off to
  485. * prevent damage (either to itself or to the router).
  486. * NV_CTRL_FRAMELOCK_ETHERNET_DETECTED may be called to find out if
  487. * ethernet is connected to one of the rj45 ports. An appropriate
  488. * error message should then be displayed. The _PORT0 and _PORT1
  489. * values may be or'ed together.
  490. *
  491. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  492. * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
  493. * target.
  494. */
  495. #define NV_CTRL_FRAMELOCK_ETHERNET_DETECTED 33 /* R--F */
  496. #define NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_NONE 0
  497. #define NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_PORT0 0x1
  498. #define NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_PORT1 0x2
  499. /*
  500. * NV_CTRL_FRAMELOCK_VIDEO_MODE - get/set what video mode is used
  501. * to interperate the house sync signal. This should only be set
  502. * on the master.
  503. *
  504. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  505. * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
  506. * target.
  507. */
  508. #define NV_CTRL_FRAMELOCK_VIDEO_MODE 34 /* RW-F */
  509. #define NV_CTRL_FRAMELOCK_VIDEO_MODE_NONE 0
  510. #define NV_CTRL_FRAMELOCK_VIDEO_MODE_TTL 1
  511. #define NV_CTRL_FRAMELOCK_VIDEO_MODE_NTSCPALSECAM 2
  512. #define NV_CTRL_FRAMELOCK_VIDEO_MODE_HDTV 3
  513. /*
  514. * During FRAMELOCK bring-up, the above values were redefined to
  515. * these:
  516. */
  517. #define NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_AUTO 0
  518. #define NV_CTRL_FRAMELOCK_VIDEO_MODE_TTL 1
  519. #define NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_BI_LEVEL 2
  520. #define NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_TRI_LEVEL 3
  521. /*
  522. * NV_CTRL_FRAMELOCK_SYNC_RATE - this is the refresh rate that the
  523. * frame lock board is sending to the GPU, in milliHz.
  524. *
  525. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  526. * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
  527. * target.
  528. */
  529. #define NV_CTRL_FRAMELOCK_SYNC_RATE 35 /* R--F */
  530. /**************************************************************************/
  531. /*
  532. * NV_CTRL_FORCE_GENERIC_CPU - inhibit the use of CPU specific
  533. * features such as MMX, SSE, or 3DNOW! for OpenGL clients; this
  534. * option may result in performance loss, but may be useful in
  535. * conjunction with software such as the Valgrind memory debugger.
  536. * This setting is only applied to OpenGL clients that are started
  537. * after this setting is applied.
  538. *
  539. * USAGE NOTE: This attribute is deprecated. CPU compatibility is now
  540. * checked each time during initialization.
  541. */
  542. #define NV_CTRL_FORCE_GENERIC_CPU 37 /* RW-X */
  543. #define NV_CTRL_FORCE_GENERIC_CPU_DISABLE 0
  544. #define NV_CTRL_FORCE_GENERIC_CPU_ENABLE 1
  545. /*
  546. * NV_CTRL_OPENGL_AA_LINE_GAMMA - for OpenGL clients, allow
  547. * Gamma-corrected antialiased lines to consider variances in the
  548. * color display capabilities of output devices when rendering smooth
  549. * lines. Only available on recent Quadro GPUs. This setting is only
  550. * applied to OpenGL clients that are started after this setting is
  551. * applied.
  552. */
  553. #define NV_CTRL_OPENGL_AA_LINE_GAMMA 38 /* RW-X */
  554. #define NV_CTRL_OPENGL_AA_LINE_GAMMA_DISABLE 0
  555. #define NV_CTRL_OPENGL_AA_LINE_GAMMA_ENABLE 1
  556. /*
  557. * NV_CTRL_FRAMELOCK_TIMING - this is TRUE when the gpu is both receiving
  558. * and locked to an input timing signal. Timing information may come from
  559. * the following places: Another frame lock device that is set to master,
  560. * the house sync signal, or the GPU's internal timing from a display
  561. * device.
  562. *
  563. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  564. * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
  565. */
  566. #define NV_CTRL_FRAMELOCK_TIMING 39 /* R--G */
  567. #define NV_CTRL_FRAMELOCK_TIMING_FALSE 0
  568. #define NV_CTRL_FRAMELOCK_TIMING_TRUE 1
  569. /*
  570. * NV_CTRL_FLIPPING_ALLOWED - when TRUE, OpenGL will swap by flipping
  571. * when possible; when FALSE, OpenGL will alway swap by blitting.
  572. */
  573. #define NV_CTRL_FLIPPING_ALLOWED 40 /* RW-X */
  574. #define NV_CTRL_FLIPPING_ALLOWED_FALSE 0
  575. #define NV_CTRL_FLIPPING_ALLOWED_TRUE 1
  576. /*
  577. * NV_CTRL_ARCHITECTURE - returns the architecture on which the X server is
  578. * running.
  579. */
  580. #define NV_CTRL_ARCHITECTURE 41 /* R-- */
  581. #define NV_CTRL_ARCHITECTURE_X86 0
  582. #define NV_CTRL_ARCHITECTURE_X86_64 1
  583. #define NV_CTRL_ARCHITECTURE_IA64 2
  584. /*
  585. * NV_CTRL_TEXTURE_CLAMPING - texture clamping mode in OpenGL. By
  586. * default, _SPEC is used, which forces OpenGL texture clamping to
  587. * conform with the OpenGL specification. _EDGE forces NVIDIA's
  588. * OpenGL implementation to remap GL_CLAMP to GL_CLAMP_TO_EDGE,
  589. * which is not strictly conformant, but some applications rely on
  590. * the non-conformant behavior.
  591. */
  592. #define NV_CTRL_TEXTURE_CLAMPING 42 /* RW-X */
  593. #define NV_CTRL_TEXTURE_CLAMPING_EDGE 0
  594. #define NV_CTRL_TEXTURE_CLAMPING_SPEC 1
  595. #define NV_CTRL_CURSOR_SHADOW 43 /* RW- */
  596. #define NV_CTRL_CURSOR_SHADOW_DISABLE 0
  597. #define NV_CTRL_CURSOR_SHADOW_ENABLE 1
  598. #define NV_CTRL_CURSOR_SHADOW_ALPHA 44 /* RW- */
  599. #define NV_CTRL_CURSOR_SHADOW_RED 45 /* RW- */
  600. #define NV_CTRL_CURSOR_SHADOW_GREEN 46 /* RW- */
  601. #define NV_CTRL_CURSOR_SHADOW_BLUE 47 /* RW- */
  602. #define NV_CTRL_CURSOR_SHADOW_X_OFFSET 48 /* RW- */
  603. #define NV_CTRL_CURSOR_SHADOW_Y_OFFSET 49 /* RW- */
  604. /*
  605. * When Application Control for FSAA is enabled, then what the
  606. * application requests is used, and NV_CTRL_FSAA_MODE is ignored. If
  607. * this is disabled, then any application setting is overridden with
  608. * NV_CTRL_FSAA_MODE
  609. */
  610. #define NV_CTRL_FSAA_APPLICATION_CONTROLLED 50 /* RW-X */
  611. #define NV_CTRL_FSAA_APPLICATION_CONTROLLED_ENABLED 1
  612. #define NV_CTRL_FSAA_APPLICATION_CONTROLLED_DISABLED 0
  613. /*
  614. * When Application Control for LogAniso is enabled, then what the
  615. * application requests is used, and NV_CTRL_LOG_ANISO is ignored. If
  616. * this is disabled, then any application setting is overridden with
  617. * NV_CTRL_LOG_ANISO
  618. */
  619. #define NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED 51 /* RW-X */
  620. #define NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED_ENABLED 1
  621. #define NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED_DISABLED 0
  622. /*
  623. * IMAGE_SHARPENING adjusts the sharpness of the display's image
  624. * quality by amplifying high frequency content. Valid values will
  625. * normally be in the range [0,32). Only available on GeForceFX or
  626. * newer.
  627. */
  628. #define NV_CTRL_IMAGE_SHARPENING 52 /* RWDG */
  629. /*
  630. * NV_CTRL_TV_OVERSCAN adjusts the amount of overscan on the specified
  631. * display device.
  632. */
  633. #define NV_CTRL_TV_OVERSCAN 53 /* RWDG */
  634. /*
  635. * NV_CTRL_TV_FLICKER_FILTER adjusts the amount of flicker filter on
  636. * the specified display device.
  637. */
  638. #define NV_CTRL_TV_FLICKER_FILTER 54 /* RWDG */
  639. /*
  640. * NV_CTRL_TV_BRIGHTNESS adjusts the amount of brightness on the
  641. * specified display device.
  642. */
  643. #define NV_CTRL_TV_BRIGHTNESS 55 /* RWDG */
  644. /*
  645. * NV_CTRL_TV_HUE adjusts the amount of hue on the specified display
  646. * device.
  647. */
  648. #define NV_CTRL_TV_HUE 56 /* RWDG */
  649. /*
  650. * NV_CTRL_TV_CONTRAST adjusts the amount of contrast on the specified
  651. * display device.
  652. */
  653. #define NV_CTRL_TV_CONTRAST 57 /* RWDG */
  654. /*
  655. * NV_CTRL_TV_SATURATION adjusts the amount of saturation on the
  656. * specified display device.
  657. */
  658. #define NV_CTRL_TV_SATURATION 58 /* RWDG */
  659. /*
  660. * NV_CTRL_TV_RESET_SETTINGS - this write-only attribute can be used
  661. * to request that all TV Settings be reset to their default values;
  662. * typical usage would be that this attribute be sent, and then all
  663. * the TV attributes be queried to retrieve their new values.
  664. */
  665. #define NV_CTRL_TV_RESET_SETTINGS 59 /* -WDG */
  666. /*
  667. * NV_CTRL_GPU_CORE_TEMPERATURE reports the current core temperature
  668. * of the GPU driving the X screen.
  669. */
  670. #define NV_CTRL_GPU_CORE_TEMPERATURE 60 /* R--G */
  671. /*
  672. * NV_CTRL_GPU_CORE_THRESHOLD reports the current GPU core slowdown
  673. * threshold temperature, NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD and
  674. * NV_CTRL_GPU_MAX_CORE_THRESHOLD report the default and MAX core
  675. * slowdown threshold temperatures.
  676. *
  677. * NV_CTRL_GPU_CORE_THRESHOLD reflects the temperature at which the
  678. * GPU is throttled to prevent overheating.
  679. */
  680. #define NV_CTRL_GPU_CORE_THRESHOLD 61 /* R--G */
  681. #define NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD 62 /* R--G */
  682. #define NV_CTRL_GPU_MAX_CORE_THRESHOLD 63 /* R--G */
  683. /*
  684. * NV_CTRL_AMBIENT_TEMPERATURE reports the current temperature in the
  685. * immediate neighbourhood of the GPU driving the X screen.
  686. */
  687. #define NV_CTRL_AMBIENT_TEMPERATURE 64 /* R--G */
  688. /*
  689. * NV_CTRL_PBUFFER_SCANOUT_SUPPORTED - returns whether this X screen
  690. * supports scanout of FP pbuffers;
  691. *
  692. * if this screen does not support PBUFFER_SCANOUT, then all other
  693. * PBUFFER_SCANOUT attributes are unavailable.
  694. *
  695. * PBUFFER_SCANOUT is supported if and only if:
  696. * - Twinview is configured with clone mode. The secondary screen is used to
  697. * scanout the pbuffer.
  698. * - The desktop is running in with 16 bits per pixel.
  699. */
  700. #define NV_CTRL_PBUFFER_SCANOUT_SUPPORTED 65 /* R-- */
  701. #define NV_CTRL_PBUFFER_SCANOUT_FALSE 0
  702. #define NV_CTRL_PBUFFER_SCANOUT_TRUE 1
  703. /*
  704. * NV_CTRL_PBUFFER_SCANOUT_XID indicates the XID of the pbuffer used for
  705. * scanout.
  706. */
  707. #define NV_CTRL_PBUFFER_SCANOUT_XID 66 /* RW- */
  708. /**************************************************************************/
  709. /*
  710. * The NV_CTRL_GVO_* integer attributes are used to configure GVO
  711. * (Graphics to Video Out). This functionality is available, for
  712. * example, on the Quadro FX 4000 SDI graphics board.
  713. *
  714. * The following is a typical usage pattern for the GVO attributes:
  715. *
  716. * - query NV_CTRL_GVO_SUPPORTED to determine if the X screen supports GV0.
  717. *
  718. * - specify NV_CTRL_GVO_SYNC_MODE (one of FREE_RUNNING, GENLOCK, or
  719. * FRAMELOCK); if you specify GENLOCK or FRAMELOCK, you should also
  720. * specify NV_CTRL_GVO_SYNC_SOURCE.
  721. *
  722. * - Use NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED and
  723. * NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED to detect what input syncs are
  724. * present.
  725. *
  726. * (If no analog sync is detected but it is known that a valid
  727. * bi-level or tri-level sync is connected set
  728. * NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE appropriately and
  729. * retest with NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED).
  730. *
  731. * - if syncing to input sync, query the
  732. * NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT attribute; note that Input video
  733. * format can only be queried after SYNC_SOURCE is specified.
  734. *
  735. * - specify the NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT
  736. *
  737. * - specify the NV_CTRL_GVO_DATA_FORMAT
  738. *
  739. * - specify any custom Color Space Conversion (CSC) matrix, offset,
  740. * and scale with XNVCTRLSetGvoColorConversion().
  741. *
  742. * - if using the GLX_NV_video_out extension to display one or more
  743. * pbuffers, call glXGetVideoDeviceNV() to lock the GVO output for use
  744. * by the GLX client; then bind the pbuffer(s) to the GVO output with
  745. * glXBindVideoImageNV() and send pbuffers to the GVO output with
  746. * glXSendPbufferToVideoNV(); see the GLX_NV_video_out spec for more
  747. * details.
  748. *
  749. * - if using the GLX_NV_present_video extension, call
  750. * glXBindVideoDeviceNV() to bind the GVO video device to current
  751. * OpenGL context.
  752. *
  753. * Note that setting most GVO attributes only causes the value to be
  754. * cached in the X server. The values will be flushed to the hardware
  755. * either when the next MetaMode is set that uses the GVO display
  756. * device, or when a GLX pbuffer is bound to the GVO output (with
  757. * glXBindVideoImageNV()).
  758. *
  759. * Note that GLX_NV_video_out/GLX_NV_present_video and X screen use
  760. * are mutually exclusive. If a MetaMode is currently using the GVO
  761. * device, then glXGetVideoDeviceNV and glXBindVideoImageNV() will
  762. * fail. Similarly, if a GLX client has locked the GVO output (via
  763. * glXGetVideoDeviceNV or glXBindVideoImageNV), then setting a
  764. * MetaMode that uses the GVO device will fail. The
  765. * NV_CTRL_GVO_GLX_LOCKED event will be sent when a GLX client locks
  766. * the GVO output.
  767. *
  768. */
  769. /*
  770. * NV_CTRL_GVO_SUPPORTED - returns whether this X screen supports GVO;
  771. * if this screen does not support GVO output, then all other GVO
  772. * attributes are unavailable.
  773. */
  774. #define NV_CTRL_GVO_SUPPORTED 67 /* R-- */
  775. #define NV_CTRL_GVO_SUPPORTED_FALSE 0
  776. #define NV_CTRL_GVO_SUPPORTED_TRUE 1
  777. /*
  778. * NV_CTRL_GVO_SYNC_MODE - selects the GVO sync mode; possible values
  779. * are:
  780. *
  781. * FREE_RUNNING - GVO does not sync to any external signal
  782. *
  783. * GENLOCK - the GVO output is genlocked to an incoming sync signal;
  784. * genlocking locks at hsync. This requires that the output video
  785. * format exactly match the incoming sync video format.
  786. *
  787. * FRAMELOCK - the GVO output is frame locked to an incoming sync
  788. * signal; frame locking locks at vsync. This requires that the output
  789. * video format have the same refresh rate as the incoming sync video
  790. * format.
  791. */
  792. #define NV_CTRL_GVO_SYNC_MODE 68 /* RW- */
  793. #define NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING 0
  794. #define NV_CTRL_GVO_SYNC_MODE_GENLOCK 1
  795. #define NV_CTRL_GVO_SYNC_MODE_FRAMELOCK 2
  796. /*
  797. * NV_CTRL_GVO_SYNC_SOURCE - if NV_CTRL_GVO_SYNC_MODE is set to either
  798. * GENLOCK or FRAMELOCK, this controls which sync source is used as
  799. * the incoming sync signal (either Composite or SDI). If
  800. * NV_CTRL_GVO_SYNC_MODE is FREE_RUNNING, this attribute has no
  801. * effect.
  802. */
  803. #define NV_CTRL_GVO_SYNC_SOURCE 69 /* RW- */
  804. #define NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE 0
  805. #define NV_CTRL_GVO_SYNC_SOURCE_SDI 1
  806. /*
  807. * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT - specifies the desired output video
  808. * format for GVO devices or the desired input video format for GVI devices.
  809. *
  810. * Note that for GVO, the valid video formats may vary depending on
  811. * the NV_CTRL_GVO_SYNC_MODE and the incoming sync video format. See
  812. * the definition of NV_CTRL_GVO_SYNC_MODE.
  813. *
  814. * Note that when querying the ValidValues for this data type, the
  815. * values are reported as bits within a bitmask
  816. * (ATTRIBUTE_TYPE_INT_BITS); unfortunately, there are more valid
  817. * value bits than will fit in a single 32-bit value. To solve this,
  818. * query the ValidValues for NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT to
  819. * check which of the first 31 VIDEO_FORMATS are valid, query the
  820. * ValidValues for NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2 to check which
  821. * of the 32-63 VIDEO_FORMATS are valid, and query the ValidValues of
  822. * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT3 to check which of the 64-95
  823. * VIDEO_FORMATS are valid.
  824. *
  825. * Note: Setting this attribute on a GVI device may also result in the
  826. * following NV-CONTROL attributes being reset on that device (to
  827. * ensure the configuration remains valid):
  828. * NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT
  829. * NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING
  830. */
  831. #define NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT 70 /* RW--I */
  832. #define NV_CTRL_GVIO_VIDEO_FORMAT_NONE 0
  833. #define NV_CTRL_GVIO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC 1
  834. #define NV_CTRL_GVIO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL 2
  835. #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_59_94_SMPTE296 3
  836. #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_60_00_SMPTE296 4
  837. #define NV_CTRL_GVIO_VIDEO_FORMAT_1035I_59_94_SMPTE260 5
  838. #define NV_CTRL_GVIO_VIDEO_FORMAT_1035I_60_00_SMPTE260 6
  839. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_SMPTE295 7
  840. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_SMPTE274 8
  841. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_59_94_SMPTE274 9
  842. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_60_00_SMPTE274 10
  843. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_23_976_SMPTE274 11
  844. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_24_00_SMPTE274 12
  845. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_25_00_SMPTE274 13
  846. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_29_97_SMPTE274 14
  847. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_30_00_SMPTE274 15
  848. #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_50_00_SMPTE296 16
  849. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_48_00_SMPTE274 17
  850. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_47_96_SMPTE274 18
  851. #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_30_00_SMPTE296 19
  852. #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_29_97_SMPTE296 20
  853. #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_25_00_SMPTE296 21
  854. #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_24_00_SMPTE296 22
  855. #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_23_98_SMPTE296 23
  856. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_25_00_SMPTE274 24
  857. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_29_97_SMPTE274 25
  858. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_30_00_SMPTE274 26
  859. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_24_00_SMPTE274 27
  860. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_23_98_SMPTE274 28
  861. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_30_00_SMPTE372 29
  862. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_29_97_SMPTE372 30
  863. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_60_00_SMPTE372 31
  864. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_59_94_SMPTE372 32
  865. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_25_00_SMPTE372 33
  866. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_50_00_SMPTE372 34
  867. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_24_00_SMPTE372 35
  868. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_23_98_SMPTE372 36
  869. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_48_00_SMPTE372 37
  870. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_47_96_SMPTE372 38
  871. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_50_00_3G_LEVEL_A_SMPTE274 39
  872. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_59_94_3G_LEVEL_A_SMPTE274 40
  873. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_60_00_3G_LEVEL_A_SMPTE274 41
  874. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_60_00_3G_LEVEL_B_SMPTE274 42
  875. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_60_00_3G_LEVEL_B_SMPTE274 43
  876. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_60_00_3G_LEVEL_B_SMPTE372 44
  877. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_50_00_3G_LEVEL_B_SMPTE274 45
  878. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_3G_LEVEL_B_SMPTE274 46
  879. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_50_00_3G_LEVEL_B_SMPTE372 47
  880. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_30_00_3G_LEVEL_B_SMPTE274 48
  881. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_30_00_3G_LEVEL_B_SMPTE372 49
  882. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_25_00_3G_LEVEL_B_SMPTE274 50
  883. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_25_00_3G_LEVEL_B_SMPTE372 51
  884. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_24_00_3G_LEVEL_B_SMPTE274 52
  885. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_24_00_3G_LEVEL_B_SMPTE372 53
  886. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_48_00_3G_LEVEL_B_SMPTE274 54
  887. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_48_00_3G_LEVEL_B_SMPTE372 55
  888. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_59_94_3G_LEVEL_B_SMPTE274 56
  889. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_59_94_3G_LEVEL_B_SMPTE274 57
  890. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_59_94_3G_LEVEL_B_SMPTE372 58
  891. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_29_97_3G_LEVEL_B_SMPTE274 59
  892. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_29_97_3G_LEVEL_B_SMPTE372 60
  893. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_23_98_3G_LEVEL_B_SMPTE274 61
  894. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_23_98_3G_LEVEL_B_SMPTE372 62
  895. #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_47_96_3G_LEVEL_B_SMPTE274 63
  896. #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_47_96_3G_LEVEL_B_SMPTE372 64
  897. /*
  898. * The following are deprecated; NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT and the
  899. * corresponding NV_CTRL_GVIO_* formats should be used instead.
  900. */
  901. #define NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT 70 /* RW- */
  902. #define NV_CTRL_GVO_VIDEO_FORMAT_NONE 0
  903. #define NV_CTRL_GVO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC 1
  904. #define NV_CTRL_GVO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL 2
  905. #define NV_CTRL_GVO_VIDEO_FORMAT_720P_59_94_SMPTE296 3
  906. #define NV_CTRL_GVO_VIDEO_FORMAT_720P_60_00_SMPTE296 4
  907. #define NV_CTRL_GVO_VIDEO_FORMAT_1035I_59_94_SMPTE260 5
  908. #define NV_CTRL_GVO_VIDEO_FORMAT_1035I_60_00_SMPTE260 6
  909. #define NV_CTRL_GVO_VIDEO_FORMAT_1080I_50_00_SMPTE295 7
  910. #define NV_CTRL_GVO_VIDEO_FORMAT_1080I_50_00_SMPTE274 8
  911. #define NV_CTRL_GVO_VIDEO_FORMAT_1080I_59_94_SMPTE274 9
  912. #define NV_CTRL_GVO_VIDEO_FORMAT_1080I_60_00_SMPTE274 10
  913. #define NV_CTRL_GVO_VIDEO_FORMAT_1080P_23_976_SMPTE274 11
  914. #define NV_CTRL_GVO_VIDEO_FORMAT_1080P_24_00_SMPTE274 12
  915. #define NV_CTRL_GVO_VIDEO_FORMAT_1080P_25_00_SMPTE274 13
  916. #define NV_CTRL_GVO_VIDEO_FORMAT_1080P_29_97_SMPTE274 14
  917. #define NV_CTRL_GVO_VIDEO_FORMAT_1080P_30_00_SMPTE274 15
  918. #define NV_CTRL_GVO_VIDEO_FORMAT_720P_50_00_SMPTE296 16
  919. #define NV_CTRL_GVO_VIDEO_FORMAT_1080I_48_00_SMPTE274 17
  920. #define NV_CTRL_GVO_VIDEO_FORMAT_1080I_47_96_SMPTE274 18
  921. #define NV_CTRL_GVO_VIDEO_FORMAT_720P_30_00_SMPTE296 19
  922. #define NV_CTRL_GVO_VIDEO_FORMAT_720P_29_97_SMPTE296 20
  923. #define NV_CTRL_GVO_VIDEO_FORMAT_720P_25_00_SMPTE296 21
  924. #define NV_CTRL_GVO_VIDEO_FORMAT_720P_24_00_SMPTE296 22
  925. #define NV_CTRL_GVO_VIDEO_FORMAT_720P_23_98_SMPTE296 23
  926. #define NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_25_00_SMPTE274 24
  927. #define NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_29_97_SMPTE274 25
  928. #define NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_30_00_SMPTE274 26
  929. #define NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_24_00_SMPTE274 27
  930. #define NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_23_98_SMPTE274 28
  931. #define NV_CTRL_GVO_VIDEO_FORMAT_2048P_30_00_SMPTE372 29
  932. #define NV_CTRL_GVO_VIDEO_FORMAT_2048P_29_97_SMPTE372 30
  933. #define NV_CTRL_GVO_VIDEO_FORMAT_2048I_60_00_SMPTE372 31
  934. #define NV_CTRL_GVO_VIDEO_FORMAT_2048I_59_94_SMPTE372 32
  935. #define NV_CTRL_GVO_VIDEO_FORMAT_2048P_25_00_SMPTE372 33
  936. #define NV_CTRL_GVO_VIDEO_FORMAT_2048I_50_00_SMPTE372 34
  937. #define NV_CTRL_GVO_VIDEO_FORMAT_2048P_24_00_SMPTE372 35
  938. #define NV_CTRL_GVO_VIDEO_FORMAT_2048P_23_98_SMPTE372 36
  939. #define NV_CTRL_GVO_VIDEO_FORMAT_2048I_48_00_SMPTE372 37
  940. #define NV_CTRL_GVO_VIDEO_FORMAT_2048I_47_96_SMPTE372 38
  941. /*
  942. * NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT - indicates the input video format
  943. * detected for GVO or GVI devices; the possible values are the
  944. * NV_CTRL_GVIO_VIDEO_FORMAT constants.
  945. *
  946. * For GVI devices, the jack number should be specified in the lower
  947. * 16 bits of the "display_mask" parameter, while the channel number should be
  948. * specified in the upper 16 bits.
  949. */
  950. #define NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT 71 /* R--I */
  951. /*
  952. * The following is deprecated. Use NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT,
  953. * instead.
  954. */
  955. #define NV_CTRL_GVO_INPUT_VIDEO_FORMAT 71 /* R-- */
  956. /*
  957. * NV_CTRL_GVO_DATA_FORMAT - This controls how the data in the source
  958. * (either the X screen or the GLX pbuffer) is interpretted and
  959. * displayed.
  960. *
  961. * Note: some of the below DATA_FORMATS have been renamed. For
  962. * example, R8G8B8_TO_RGB444 has been renamed to X8X8X8_444_PASSTHRU.
  963. * This is to more accurately reflect DATA_FORMATS where the
  964. * per-channel data could be either RGB or YCrCb -- the point is that
  965. * the driver and GVO hardware do not perform any implicit color space
  966. * conversion on the data; it is passed through to the SDI out.
  967. */
  968. #define NV_CTRL_GVO_DATA_FORMAT 72 /* RW- */
  969. #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB444 0
  970. #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4444 1
  971. #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_YCRCBZ4444 2
  972. #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB422 3
  973. #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4224 4
  974. #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_YCRCBZ4224 5
  975. #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_RGB444 6 // renamed
  976. #define NV_CTRL_GVO_DATA_FORMAT_X8X8X8_444_PASSTHRU 6
  977. #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_RGBA4444 7 // renamed
  978. #define NV_CTRL_GVO_DATA_FORMAT_X8X8X8A8_4444_PASSTHRU 7
  979. #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_RGBZ4444 8 // renamed
  980. #define NV_CTRL_GVO_DATA_FORMAT_X8X8X8Z8_4444_PASSTHRU 8
  981. #define NV_CTRL_GVO_DATA_FORMAT_Y10CR10CB10_TO_YCRCB444 9 // renamed
  982. #define NV_CTRL_GVO_DATA_FORMAT_X10X10X10_444_PASSTHRU 9
  983. #define NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8_TO_YCRCB444 10 // renamed
  984. #define NV_CTRL_GVO_DATA_FORMAT_X10X8X8_444_PASSTHRU 10
  985. #define NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8A10_TO_YCRCBA4444 11 // renamed
  986. #define NV_CTRL_GVO_DATA_FORMAT_X10X8X8A10_4444_PASSTHRU 11
  987. #define NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8Z10_TO_YCRCBZ4444 12 // renamed
  988. #define NV_CTRL_GVO_DATA_FORMAT_X10X8X8Z10_4444_PASSTHRU 12
  989. #define NV_CTRL_GVO_DATA_FORMAT_DUAL_R8G8B8_TO_DUAL_YCRCB422 13
  990. #define NV_CTRL_GVO_DATA_FORMAT_DUAL_Y8CR8CB8_TO_DUAL_YCRCB422 14 // renamed
  991. #define NV_CTRL_GVO_DATA_FORMAT_DUAL_X8X8X8_TO_DUAL_422_PASSTHRU 14
  992. #define NV_CTRL_GVO_DATA_FORMAT_R10G10B10_TO_YCRCB422 15
  993. #define NV_CTRL_GVO_DATA_FORMAT_R10G10B10_TO_YCRCB444 16
  994. #define NV_CTRL_GVO_DATA_FORMAT_Y12CR12CB12_TO_YCRCB444 17 // renamed
  995. #define NV_CTRL_GVO_DATA_FORMAT_X12X12X12_444_PASSTHRU 17
  996. #define NV_CTRL_GVO_DATA_FORMAT_R12G12B12_TO_YCRCB444 18
  997. #define NV_CTRL_GVO_DATA_FORMAT_X8X8X8_422_PASSTHRU 19
  998. #define NV_CTRL_GVO_DATA_FORMAT_X8X8X8A8_4224_PASSTHRU 20
  999. #define NV_CTRL_GVO_DATA_FORMAT_X8X8X8Z8_4224_PASSTHRU 21
  1000. #define NV_CTRL_GVO_DATA_FORMAT_X10X10X10_422_PASSTHRU 22
  1001. #define NV_CTRL_GVO_DATA_FORMAT_X10X8X8_422_PASSTHRU 23
  1002. #define NV_CTRL_GVO_DATA_FORMAT_X10X8X8A10_4224_PASSTHRU 24
  1003. #define NV_CTRL_GVO_DATA_FORMAT_X10X8X8Z10_4224_PASSTHRU 25
  1004. #define NV_CTRL_GVO_DATA_FORMAT_X12X12X12_422_PASSTHRU 26
  1005. #define NV_CTRL_GVO_DATA_FORMAT_R12G12B12_TO_YCRCB422 27
  1006. /*
  1007. * NV_CTRL_GVO_DISPLAY_X_SCREEN - no longer supported
  1008. */
  1009. #define NV_CTRL_GVO_DISPLAY_X_SCREEN 73 /* RW- */
  1010. #define NV_CTRL_GVO_DISPLAY_X_SCREEN_ENABLE 1
  1011. #define NV_CTRL_GVO_DISPLAY_X_SCREEN_DISABLE 0
  1012. /*
  1013. * NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED - indicates whether
  1014. * Composite Sync input is detected.
  1015. */
  1016. #define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED 74 /* R-- */
  1017. #define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_FALSE 0
  1018. #define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_TRUE 1
  1019. /*
  1020. * NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE - get/set the
  1021. * Composite Sync input detect mode.
  1022. */
  1023. #define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE 75 /* RW- */
  1024. #define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_AUTO 0
  1025. #define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_BI_LEVEL 1
  1026. #define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_TRI_LEVEL 2
  1027. /*
  1028. * NV_CTRL_GVO_SYNC_INPUT_DETECTED - indicates whether SDI Sync input
  1029. * is detected, and what type.
  1030. */
  1031. #define NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED 76 /* R-- */
  1032. #define NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_NONE 0
  1033. #define NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_HD 1
  1034. #define NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_SD 2
  1035. /*
  1036. * NV_CTRL_GVO_VIDEO_OUTPUTS - indicates which GVO video output
  1037. * connectors are currently outputing data.
  1038. */
  1039. #define NV_CTRL_GVO_VIDEO_OUTPUTS 77 /* R-- */
  1040. #define NV_CTRL_GVO_VIDEO_OUTPUTS_NONE 0
  1041. #define NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO1 1
  1042. #define NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO2 2
  1043. #define NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO_BOTH 3
  1044. /*
  1045. * NV_CTRL_GVO_FPGA_VERSION - indicates the version of the Firmware on
  1046. * the GVO device. Deprecated; use
  1047. * NV_CTRL_STRING_GVIO_FIRMWARE_VERSION instead.
  1048. */
  1049. #define NV_CTRL_GVO_FIRMWARE_VERSION 78 /* R-- */
  1050. /*
  1051. * NV_CTRL_GVO_SYNC_DELAY_PIXELS - controls the delay between the
  1052. * input sync and the output sync in numbers of pixels from hsync;
  1053. * this is a 12 bit value.
  1054. *
  1055. * If the NV_CTRL_GVO_CAPABILITIES_ADVANCE_SYNC_SKEW bit is set,
  1056. * then setting this value will set an advance instead of a delay.
  1057. */
  1058. #define NV_CTRL_GVO_SYNC_DELAY_PIXELS 79 /* RW- */
  1059. /*
  1060. * NV_CTRL_GVO_SYNC_DELAY_LINES - controls the delay between the input
  1061. * sync and the output sync in numbers of lines from vsync; this is a
  1062. * 12 bit value.
  1063. *
  1064. * If the NV_CTRL_GVO_CAPABILITIES_ADVANCE_SYNC_SKEW bit is set,
  1065. * then setting this value will set an advance instead of a delay.
  1066. */
  1067. #define NV_CTRL_GVO_SYNC_DELAY_LINES 80 /* RW- */
  1068. /*
  1069. * NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE - must be set for a period
  1070. * of about 2 seconds for the new InputVideoFormat to be properly
  1071. * locked to. In nvidia-settings, we do a reacquire whenever genlock
  1072. * or frame lock mode is entered into, when the user clicks the
  1073. * "detect" button. This value can be written, but always reads back
  1074. * _FALSE.
  1075. */
  1076. #define NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE 81 /* -W- */
  1077. #define NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_FALSE 0
  1078. #define NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_TRUE 1
  1079. /*
  1080. * NV_CTRL_GVO_GLX_LOCKED - indicates that GVO configurability is
  1081. * locked by GLX; this occurs when either glXGetVideoDeviceNV (part of
  1082. * GLX_NV_video_out) or glXBindVideoDeviceNV (part of
  1083. * GLX_NV_present_video) is called. All GVO output resources are
  1084. * locked until released by the GLX_NV_video_out/GLX_NV_present_video
  1085. * client.
  1086. *
  1087. * When GVO is locked, setting of the following GVO NV-CONTROL attributes will
  1088. * not happen immediately and will instead be cached. The GVO resource will
  1089. * need to be disabled/released and re-enabled/claimed for the values to be
  1090. * flushed. These attributes are:
  1091. * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT
  1092. * NV_CTRL_GVO_DATA_FORMAT
  1093. * NV_CTRL_GVO_FLIP_QUEUE_SIZE
  1094. *
  1095. * This attribute is deprecated and may be removed in a future release. Its
  1096. * functionality has been replaced by NV_CTRL_GVO_LOCK_OWNER.
  1097. */
  1098. #define NV_CTRL_GVO_GLX_LOCKED 82 /* R-- */
  1099. #define NV_CTRL_GVO_GLX_LOCKED_FALSE 0
  1100. #define NV_CTRL_GVO_GLX_LOCKED_TRUE 1
  1101. /*
  1102. * NV_CTRL_GVIO_VIDEO_FORMAT_{WIDTH,HEIGHT,REFRESH_RATE} - query the
  1103. * width, height, and refresh rate for the specified
  1104. * NV_CTRL_GVIO_VIDEO_FORMAT_*. So that this can be queried with
  1105. * existing interfaces, XNVCTRLQueryAttribute() should be used, and
  1106. * the video format specified in the display_mask field; eg:
  1107. *
  1108. * XNVCTRLQueryAttribute (dpy,
  1109. * screen,
  1110. * NV_CTRL_GVIO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC,
  1111. * NV_CTRL_GVIO_VIDEO_FORMAT_WIDTH,
  1112. * &value);
  1113. *
  1114. * Note that Refresh Rate is in milliHertz values
  1115. */
  1116. #define NV_CTRL_GVIO_VIDEO_FORMAT_WIDTH 83 /* R--I */
  1117. #define NV_CTRL_GVIO_VIDEO_FORMAT_HEIGHT 84 /* R--I */
  1118. #define NV_CTRL_GVIO_VIDEO_FORMAT_REFRESH_RATE 85 /* R--I */
  1119. /* The following are deprecated; use the NV_CTRL_GVIO_* versions, instead */
  1120. #define NV_CTRL_GVO_VIDEO_FORMAT_WIDTH 83 /* R-- */
  1121. #define NV_CTRL_GVO_VIDEO_FORMAT_HEIGHT 84 /* R-- */
  1122. #define NV_CTRL_GVO_VIDEO_FORMAT_REFRESH_RATE 85 /* R-- */
  1123. /*
  1124. * NV_CTRL_GVO_X_SCREEN_PAN_[XY] - no longer supported
  1125. */
  1126. #define NV_CTRL_GVO_X_SCREEN_PAN_X 86 /* RW- */
  1127. #define NV_CTRL_GVO_X_SCREEN_PAN_Y 87 /* RW- */
  1128. /*
  1129. * NV_CTRL_GPU_OVERCLOCKING_STATE - query the current or set a new
  1130. * overclocking state; the value of this attribute controls the
  1131. * availability of additional overclocking attributes (see below).
  1132. *
  1133. * Note: this attribute is unavailable unless overclocking support
  1134. * has been enabled in the X server (by the user).
  1135. */
  1136. #define NV_CTRL_GPU_OVERCLOCKING_STATE 88 /* RW-G */
  1137. #define NV_CTRL_GPU_OVERCLOCKING_STATE_NONE 0
  1138. #define NV_CTRL_GPU_OVERCLOCKING_STATE_MANUAL 1
  1139. /*
  1140. * NV_CTRL_GPU_{2,3}D_CLOCK_FREQS - query or set the GPU and memory
  1141. * clocks of the device driving the X screen. New clock frequencies
  1142. * are tested before being applied, and may be rejected.
  1143. *
  1144. * Note: if the target clocks are too aggressive, their testing may
  1145. * render the system unresponsive.
  1146. *
  1147. * Note: while this attribute can always be queried, it can't be set
  1148. * unless NV_CTRL_GPU_OVERCLOCKING_STATE is set to _MANUAL. Since
  1149. * the target clocks may be rejected, the requester should read this
  1150. * attribute after the set to determine success or failure.
  1151. *
  1152. * NV_CTRL_GPU_{2,3}D_CLOCK_FREQS are "packed" integer attributes; the
  1153. * GPU clock is stored in the upper 16 bits of the integer, and the
  1154. * memory clock is stored in the lower 16 bits of the integer. All
  1155. * clock values are in MHz.
  1156. */
  1157. #define NV_CTRL_GPU_2D_CLOCK_FREQS 89 /* RW-G */
  1158. #define NV_CTRL_GPU_3D_CLOCK_FREQS 90 /* RW-G */
  1159. /*
  1160. * NV_CTRL_GPU_DEFAULT_{2,3}D_CLOCK_FREQS - query the default memory
  1161. * and GPU core clocks of the device driving the X screen.
  1162. *
  1163. * NV_CTRL_GPU_DEFAULT_{2,3}D_CLOCK_FREQS are "packed" integer
  1164. * attributes; the GPU clock is stored in the upper 16 bits of the
  1165. * integer, and the memory clock is stored in the lower 16 bits of the
  1166. * integer. All clock values are in MHz.
  1167. */
  1168. #define NV_CTRL_GPU_DEFAULT_2D_CLOCK_FREQS 91 /* R--G */
  1169. #define NV_CTRL_GPU_DEFAULT_3D_CLOCK_FREQS 92 /* R--G */
  1170. /*
  1171. * NV_CTRL_GPU_CURRENT_CLOCK_FREQS - query the current GPU and memory
  1172. * clocks of the graphics device driving the X screen.
  1173. *
  1174. * NV_CTRL_GPU_CURRENT_CLOCK_FREQS is a "packed" integer attribute;
  1175. * the GPU clock is stored in the upper 16 bits of the integer, and
  1176. * the memory clock is stored in the lower 16 bits of the integer.
  1177. * All clock values are in MHz. All clock values are in MHz.
  1178. */
  1179. #define NV_CTRL_GPU_CURRENT_CLOCK_FREQS 93 /* R--G */
  1180. /*
  1181. * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS - Holds the last calculated
  1182. * optimal 3D clock frequencies found by the
  1183. * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION process. Querying this
  1184. * attribute before having probed for the optimal clocks will return
  1185. * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_INVALID
  1186. *
  1187. * Note: unless NV_CTRL_GPU_OVERCLOCKING_STATE is set to _MANUAL, the
  1188. * optimal clock detection process is unavailable.
  1189. */
  1190. #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS 94 /* R--G */
  1191. #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_INVALID 0
  1192. /*
  1193. * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION - set to _START to
  1194. * initiate testing for the optimal 3D clock frequencies. Once
  1195. * found, the optimal clock frequencies will be returned by the
  1196. * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS attribute asynchronously
  1197. * (using an X event, see XNVCtrlSelectNotify).
  1198. *
  1199. * To cancel an ongoing test for the optimal clocks, set the
  1200. * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION attribute to _CANCEL
  1201. *
  1202. * Note: unless NV_CTRL_GPU_OVERCLOCKING_STATE is set to _MANUAL, the
  1203. * optimal clock detection process is unavailable.
  1204. */
  1205. #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION 95 /* -W-G */
  1206. #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_START 0
  1207. #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_CANCEL 1
  1208. /*
  1209. * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE - query this
  1210. * variable to know if a test is currently being run to
  1211. * determine the optimal 3D clock frequencies. _BUSY means a
  1212. * test is currently running, _IDLE means the test is not running.
  1213. *
  1214. * Note: unless NV_CTRL_GPU_OVERCLOCKING_STATE is set to _MANUAL, the
  1215. * optimal clock detection process is unavailable.
  1216. */
  1217. #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE 96 /* R--G */
  1218. #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE_IDLE 0
  1219. #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE_BUSY 1
  1220. /*
  1221. * NV_CTRL_FLATPANEL_CHIP_LOCATION - for the specified display device,
  1222. * report whether the flat panel is driven by the on-chip controller,
  1223. * or a separate controller chip elsewhere on the graphics board.
  1224. * This attribute is only available for flat panels.
  1225. */
  1226. #define NV_CTRL_FLATPANEL_CHIP_LOCATION 215/* R-DG */
  1227. #define NV_CTRL_FLATPANEL_CHIP_LOCATION_INTERNAL 0
  1228. #define NV_CTRL_FLATPANEL_CHIP_LOCATION_EXTERNAL 1
  1229. /*
  1230. * NV_CTRL_FLATPANEL_LINK - report the number of links for a DVI connection, or
  1231. * the main link's active lane count for DisplayPort.
  1232. * This attribute is only available for flat panels.
  1233. */
  1234. #define NV_CTRL_FLATPANEL_LINK 216/* R-DG */
  1235. #define NV_CTRL_FLATPANEL_LINK_SINGLE 0
  1236. #define NV_CTRL_FLATPANEL_LINK_DUAL 1
  1237. #define NV_CTRL_FLATPANEL_LINK_QUAD 3
  1238. /*
  1239. * NV_CTRL_FLATPANEL_SIGNAL - for the specified display device, report
  1240. * whether the flat panel is driven by an LVDS, TMDS, or DisplayPort signal.
  1241. * This attribute is only available for flat panels.
  1242. */
  1243. #define NV_CTRL_FLATPANEL_SIGNAL 217/* R-DG */
  1244. #define NV_CTRL_FLATPANEL_SIGNAL_LVDS 0
  1245. #define NV_CTRL_FLATPANEL_SIGNAL_TMDS 1
  1246. #define NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT 2
  1247. /*
  1248. * NV_CTRL_USE_HOUSE_SYNC - when TRUE, the server (master) frame lock
  1249. * device will propagate the incoming house sync signal as the outgoing
  1250. * frame lock sync signal. If the frame lock device cannot detect a
  1251. * frame lock sync signal, it will default to using the internal timings
  1252. * from the GPU connected to the primary connector.
  1253. *
  1254. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  1255. * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
  1256. * target.
  1257. */
  1258. #define NV_CTRL_USE_HOUSE_SYNC 218/* RW-F */
  1259. #define NV_CTRL_USE_HOUSE_SYNC_FALSE 0
  1260. #define NV_CTRL_USE_HOUSE_SYNC_TRUE 1
  1261. /*
  1262. * NV_CTRL_EDID_AVAILABLE - report if an EDID is available for the
  1263. * specified display device.
  1264. *
  1265. * This attribute may also be queried through XNVCTRLQueryTargetAttribute()
  1266. * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN
  1267. * target.
  1268. */
  1269. #define NV_CTRL_EDID_AVAILABLE 219 /* R-DG */
  1270. #define NV_CTRL_EDID_AVAILABLE_FALSE 0
  1271. #define NV_CTRL_EDID_AVAILABLE_TRUE 1
  1272. /*
  1273. * NV_CTRL_FORCE_STEREO - when TRUE, OpenGL will force stereo flipping
  1274. * even when no stereo drawables are visible (if the device is configured
  1275. * to support it, see the "Stereo" X config option).
  1276. * When false, fall back to the default behavior of only flipping when a
  1277. * stereo drawable is visible.
  1278. */
  1279. #define NV_CTRL_FORCE_STEREO 220 /* RW- */
  1280. #define NV_CTRL_FORCE_STEREO_FALSE 0
  1281. #define NV_CTRL_FORCE_STEREO_TRUE 1
  1282. /*
  1283. * NV_CTRL_IMAGE_SETTINGS - the image quality setting for OpenGL clients.
  1284. *
  1285. * This setting is only applied to OpenGL clients that are started
  1286. * after this setting is applied.
  1287. */
  1288. #define NV_CTRL_IMAGE_SETTINGS 221 /* RW-X */
  1289. #define NV_CTRL_IMAGE_SETTINGS_HIGH_QUALITY 0
  1290. #define NV_CTRL_IMAGE_SETTINGS_QUALITY 1
  1291. #define NV_CTRL_IMAGE_SETTINGS_PERFORMANCE 2
  1292. #define NV_CTRL_IMAGE_SETTINGS_HIGH_PERFORMANCE 3
  1293. /*
  1294. * NV_CTRL_XINERAMA - return whether xinerama is enabled
  1295. */
  1296. #define NV_CTRL_XINERAMA 222 /* R--G */
  1297. #define NV_CTRL_XINERAMA_OFF 0
  1298. #define NV_CTRL_XINERAMA_ON 1
  1299. /*
  1300. * NV_CTRL_XINERAMA_STEREO - when TRUE, OpenGL will allow stereo flipping
  1301. * on multiple X screens configured with Xinerama.
  1302. * When FALSE, flipping is allowed only on one X screen at a time.
  1303. */
  1304. #define NV_CTRL_XINERAMA_STEREO 223 /* RW- */
  1305. #define NV_CTRL_XINERAMA_STEREO_FALSE 0
  1306. #define NV_CTRL_XINERAMA_STEREO_TRUE 1
  1307. /*
  1308. * NV_CTRL_BUS_RATE - if the bus type of the specified device is AGP, then
  1309. * NV_CTRL_BUS_RATE returns the configured AGP transfer rate. If the bus type
  1310. * is PCI Express, then this attribute returns the maximum link width.
  1311. * When this attribute is queried on an X screen target, the bus rate of the
  1312. * GPU driving the X screen is returned.
  1313. */
  1314. #define NV_CTRL_BUS_RATE 224 /* R--GI */
  1315. /*
  1316. * NV_CTRL_GPU_PCIE_MAX_LINK_WIDTH - returns the maximum
  1317. * PCIe link width, in number of lanes.
  1318. */
  1319. #define NV_CTRL_GPU_PCIE_MAX_LINK_WIDTH NV_CTRL_BUS_RATE
  1320. /*
  1321. * NV_CTRL_SHOW_SLI_HUD - when TRUE, OpenGL will draw information about the
  1322. * current SLI mode.
  1323. * Renamed this attribute to NV_CTRL_SHOW_SLI_VISUAL_INDICATOR
  1324. */
  1325. #define NV_CTRL_SHOW_SLI_HUD NV_CTRL_SHOW_SLI_VISUAL_INDICATOR
  1326. #define NV_CTRL_SHOW_SLI_HUD_FALSE NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_FALSE
  1327. #define NV_CTRL_SHOW_SLI_HUD_TRUE NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_TRUE
  1328. /*
  1329. * NV_CTRL_SHOW_SLI_VISUAL_INDICATOR - when TRUE, OpenGL will draw information
  1330. * about the current SLI mode.
  1331. */
  1332. #define NV_CTRL_SHOW_SLI_VISUAL_INDICATOR 225 /* RW-X */
  1333. #define NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_FALSE 0
  1334. #define NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_TRUE 1
  1335. /*
  1336. * NV_CTRL_XV_SYNC_TO_DISPLAY - this control is valid when TwinView and
  1337. * XVideo Sync To VBlank are enabled.
  1338. * It controls which display device will be synched to.
  1339. */
  1340. #define NV_CTRL_XV_SYNC_TO_DISPLAY 226 /* RW- */
  1341. /*
  1342. * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2 - this attribute is only
  1343. * intended to be used to query the ValidValues for
  1344. * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for VIDEO_FORMAT values between
  1345. * 31 and 63. See NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for details.
  1346. */
  1347. #define NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2 227 /* ---GI */
  1348. /*
  1349. * The following is deprecated; use NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2,
  1350. * instead
  1351. */
  1352. #define NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT2 227 /* --- */
  1353. /*
  1354. * NV_CTRL_GVO_OVERRIDE_HW_CSC - Override the SDI hardware's Color Space
  1355. * Conversion with the values controlled through
  1356. * XNVCTRLSetGvoColorConversion() and XNVCTRLGetGvoColorConversion(). If
  1357. * this attribute is FALSE, then the values specified through
  1358. * XNVCTRLSetGvoColorConversion() are ignored.
  1359. */
  1360. #define NV_CTRL_GVO_OVERRIDE_HW_CSC 228 /* RW- */
  1361. #define NV_CTRL_GVO_OVERRIDE_HW_CSC_FALSE 0
  1362. #define NV_CTRL_GVO_OVERRIDE_HW_CSC_TRUE 1
  1363. /*
  1364. * NV_CTRL_GVO_CAPABILITIES - this read-only attribute describes GVO
  1365. * capabilities that differ between NVIDIA SDI products. This value
  1366. * is a bitmask where each bit indicates whether that capability is
  1367. * available.
  1368. *
  1369. * APPLY_CSC_IMMEDIATELY - whether the CSC matrix, offset, and scale
  1370. * specified through XNVCTRLSetGvoColorConversion() will take affect
  1371. * immediately, or only after SDI output is disabled and enabled
  1372. * again.
  1373. *
  1374. * APPLY_CSC_TO_X_SCREEN - whether the CSC matrix, offset, and scale
  1375. * specified through XNVCTRLSetGvoColorConversion() will also apply
  1376. * to GVO output of an X screen, or only to OpenGL GVO output, as
  1377. * enabled through the GLX_NV_video_out extension.
  1378. *
  1379. * COMPOSITE_TERMINATION - whether the 75 ohm termination of the
  1380. * SDI composite input signal can be programmed through the
  1381. * NV_CTRL_GVO_COMPOSITE_TERMINATION attribute.
  1382. *
  1383. * SHARED_SYNC_BNC - whether the SDI device has a single BNC
  1384. * connector used for both (SDI & Composite) incoming signals.
  1385. *
  1386. * MULTIRATE_SYNC - whether the SDI device supports synchronization
  1387. * of input and output video modes that match in being odd or even
  1388. * modes (ie, AA.00 Hz modes can be synched to other BB.00 Hz modes and
  1389. * AA.XX Hz can match to BB.YY Hz where .XX and .YY are not .00)
  1390. */
  1391. #define NV_CTRL_GVO_CAPABILITIES 229 /* R-- */
  1392. #define NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_IMMEDIATELY 0x00000001
  1393. #define NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_TO_X_SCREEN 0x00000002
  1394. #define NV_CTRL_GVO_CAPABILITIES_COMPOSITE_TERMINATION 0x00000004
  1395. #define NV_CTRL_GVO_CAPABILITIES_SHARED_SYNC_BNC 0x00000008
  1396. #define NV_CTRL_GVO_CAPABILITIES_MULTIRATE_SYNC 0x00000010
  1397. #define NV_CTRL_GVO_CAPABILITIES_ADVANCE_SYNC_SKEW 0x00000020
  1398. /*
  1399. * NV_CTRL_GVO_COMPOSITE_TERMINATION - enable or disable 75 ohm
  1400. * termination of the SDI composite input signal.
  1401. */
  1402. #define NV_CTRL_GVO_COMPOSITE_TERMINATION 230 /* RW- */
  1403. #define NV_CTRL_GVO_COMPOSITE_TERMINATION_ENABLE 1
  1404. #define NV_CTRL_GVO_COMPOSITE_TERMINATION_DISABLE 0
  1405. /*
  1406. * NV_CTRL_ASSOCIATED_DISPLAY_DEVICES - display device mask indicating
  1407. * which display devices are "associated" with the specified X screen
  1408. * (ie: are available to the X screen for displaying the X screen).
  1409. */
  1410. #define NV_CTRL_ASSOCIATED_DISPLAY_DEVICES 231 /* RW- */
  1411. /*
  1412. * NV_CTRL_FRAMELOCK_SLAVES - get/set whether the display device(s)
  1413. * given should listen or ignore the master's sync signal.
  1414. *
  1415. * This attribute can only be queried through XNVCTRLQueryTargetAttribute()
  1416. * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be
  1417. * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN.
  1418. */
  1419. #define NV_CTRL_FRAMELOCK_SLAVES 232 /* RW-G */
  1420. /*
  1421. * NV_CTRL_FRAMELOCK_MASTERABLE - Can any of the given display devices
  1422. * be set as master of the frame lock group. Returns a bitmask of the
  1423. * corresponding display devices that can be set as master.
  1424. *
  1425. * This attribute can only be queried through XNVCTRLQueryTargetAttribute()
  1426. * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be
  1427. * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN.
  1428. */
  1429. #define NV_CTRL_FRAMELOCK_MASTERABLE 233 /* R-DG */
  1430. /*
  1431. * NV_CTRL_PROBE_DISPLAYS - re-probes the hardware to detect what
  1432. * display devices are connected to the GPU or GPU driving the
  1433. * specified X screen. Returns a display mask.
  1434. *
  1435. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  1436. * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
  1437. */
  1438. #define NV_CTRL_PROBE_DISPLAYS 234 /* R--G */
  1439. /*
  1440. * NV_CTRL_REFRESH_RATE - Returns the refresh rate of the specified
  1441. * display device in 100 * Hz (ie. to get the refresh rate in Hz, divide
  1442. * the returned value by 100.)
  1443. *
  1444. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  1445. * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
  1446. */
  1447. #define NV_CTRL_REFRESH_RATE 235 /* R-DG */
  1448. /*
  1449. * NV_CTRL_GVO_FLIP_QUEUE_SIZE - The Graphics to Video Out interface
  1450. * exposed through NV-CONTROL and the GLX_NV_video_out extension uses
  1451. * an internal flip queue when pbuffers are sent to the video device
  1452. * (via glXSendPbufferToVideoNV()). The NV_CTRL_GVO_FLIP_QUEUE_SIZE
  1453. * can be used to query and assign the flip queue size. This
  1454. * attribute is applied to GLX when glXGetVideoDeviceNV() is called by
  1455. * the application.
  1456. */
  1457. #define NV_CTRL_GVO_FLIP_QUEUE_SIZE 236 /* RW- */
  1458. /*
  1459. * NV_CTRL_CURRENT_SCANLINE - query the current scanline for the
  1460. * specified display device.
  1461. */
  1462. #define NV_CTRL_CURRENT_SCANLINE 237 /* R-DG */
  1463. /*
  1464. * NV_CTRL_INITIAL_PIXMAP_PLACEMENT - Controls where X pixmaps are initially
  1465. * created.
  1466. *
  1467. * NV_CTRL_INITIAL_PIXMAP_PLACEMENT_FORCE_SYSMEM causes pixmaps to stay in
  1468. * system memory. These pixmaps can't be accelerated by the NVIDIA driver; this
  1469. * will cause blank windows if used with an OpenGL compositing manager.
  1470. * NV_CTRL_INITIAL_PIXMAP_PLACEMENT_SYSMEM creates pixmaps in system memory
  1471. * initially, but allows them to migrate to video memory.
  1472. * NV_CTRL_INITIAL_PIXMAP_PLACEMENT_VIDMEM creates pixmaps in video memory
  1473. * when enough resources are available.
  1474. * NV_CTRL_INITIAL_PIXMAP_PLACEMENT_RESERVED is currently reserved for future
  1475. * use. Behavior is undefined.
  1476. * NV_CTRL_INITIAL_PIXMAP_PLACEMENT_GPU_SYSMEM creates pixmaps in GPU accessible
  1477. * system memory when enough resources are available.
  1478. */
  1479. #define NV_CTRL_INITIAL_PIXMAP_PLACEMENT 238 /* RW- */
  1480. #define NV_CTRL_INITIAL_PIXMAP_PLACEMENT_FORCE_SYSMEM 0
  1481. #define NV_CTRL_INITIAL_PIXMAP_PLACEMENT_SYSMEM 1
  1482. #define NV_CTRL_INITIAL_PIXMAP_PLACEMENT_VIDMEM 2
  1483. #define NV_CTRL_INITIAL_PIXMAP_PLACEMENT_RESERVED 3
  1484. #define NV_CTRL_INITIAL_PIXMAP_PLACEMENT_GPU_SYSMEM 4
  1485. /*
  1486. * NV_CTRL_PCI_BUS - Returns the PCI bus number the specified device is using.
  1487. */
  1488. #define NV_CTRL_PCI_BUS 239 /* R--GI */
  1489. /*
  1490. * NV_CTRL_PCI_DEVICE - Returns the PCI device number the specified device is
  1491. * using.
  1492. */
  1493. #define NV_CTRL_PCI_DEVICE 240 /* R--GI */
  1494. /*
  1495. * NV_CTRL_PCI_FUNCTION - Returns the PCI function number the specified device
  1496. * is using.
  1497. */
  1498. #define NV_CTRL_PCI_FUNCTION 241 /* R--GI */
  1499. /*
  1500. * NV_CTRL_FRAMELOCK_FPGA_REVISION - Querys the FPGA revision of the
  1501. * Frame Lock device.
  1502. *
  1503. * This attribute must be queried through XNVCTRLQueryTargetAttribute()
  1504. * using a NV_CTRL_TARGET_TYPE_FRAMELOCK target.
  1505. */
  1506. #define NV_CTRL_FRAMELOCK_FPGA_REVISION 242 /* R--F */
  1507. /*
  1508. * NV_CTRL_MAX_SCREEN_{WIDTH,HEIGHT} - the maximum allowable size, in
  1509. * pixels, of either the specified X screen (if the target_type of the
  1510. * query is an X screen), or any X screen on the specified GPU (if the
  1511. * target_type of the query is a GPU).
  1512. */
  1513. #define NV_CTRL_MAX_SCREEN_WIDTH 243 /* R--G */
  1514. #define NV_CTRL_MAX_SCREEN_HEIGHT 244 /* R--G */
  1515. /*
  1516. * NV_CTRL_MAX_DISPLAYS - the maximum number of display devices that
  1517. * can be driven simultaneously on a GPU (e.g., that can be used in a
  1518. * MetaMode at once). Note that this does not indicate the maximum
  1519. * number of bits that can be set in NV_CTRL_CONNECTED_DISPLAYS,
  1520. * because more display devices can be connected than are actively in
  1521. * use.
  1522. */
  1523. #define NV_CTRL_MAX_DISPLAYS 245 /* R--G */
  1524. /*
  1525. * NV_CTRL_DYNAMIC_TWINVIEW - Returns whether or not the screen
  1526. * supports dynamic twinview.
  1527. */
  1528. #define NV_CTRL_DYNAMIC_TWINVIEW 246 /* R-- */
  1529. /*
  1530. * NV_CTRL_MULTIGPU_DISPLAY_OWNER - Returns the (NV-CONTROL) GPU ID of
  1531. * the GPU that has the display device(s) used for showing the X Screen.
  1532. */
  1533. #define NV_CTRL_MULTIGPU_DISPLAY_OWNER 247 /* R-- */
  1534. /*
  1535. * NV_CTRL_GPU_SCALING - not supported
  1536. */
  1537. #define NV_CTRL_GPU_SCALING 248 /* RWDG */
  1538. #define NV_CTRL_GPU_SCALING_TARGET_INVALID 0
  1539. #define NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT 1
  1540. #define NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE 2
  1541. #define NV_CTRL_GPU_SCALING_METHOD_INVALID 0
  1542. #define NV_CTRL_GPU_SCALING_METHOD_STRETCHED 1
  1543. #define NV_CTRL_GPU_SCALING_METHOD_CENTERED 2
  1544. #define NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED 3
  1545. /*
  1546. * NV_CTRL_FRONTEND_RESOLUTION - not supported
  1547. */
  1548. #define NV_CTRL_FRONTEND_RESOLUTION 249 /* R-DG */
  1549. /*
  1550. * NV_CTRL_BACKEND_RESOLUTION - not supported
  1551. */
  1552. #define NV_CTRL_BACKEND_RESOLUTION 250 /* R-DG */
  1553. /*
  1554. * NV_CTRL_FLATPANEL_NATIVE_RESOLUTION - Returns the dimensions of the
  1555. * native resolution of the flat panel as determined by the
  1556. * NVIDIA X Driver.
  1557. *
  1558. * The native resolution is the resolution at which a flat panel
  1559. * must display any image. All other resolutions must be scaled to this
  1560. * resolution through GPU scaling or the DFP's native scaling capabilities
  1561. * in order to be displayed.
  1562. *
  1563. * This attribute is only valid for flat panel (DFP) display devices.
  1564. *
  1565. * This attribute is a packed integer; the width is packed in the upper
  1566. * 16-bits and the height is packed in the lower 16-bits.
  1567. */
  1568. #define NV_CTRL_FLATPANEL_NATIVE_RESOLUTION 251 /* R-DG */
  1569. /*
  1570. * NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION - not supported
  1571. */
  1572. #define NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION 252 /* R-DG */
  1573. /*
  1574. * NV_CTRL_GPU_SCALING_ACTIVE - not supported
  1575. */
  1576. #define NV_CTRL_GPU_SCALING_ACTIVE 253 /* R-DG */
  1577. /*
  1578. * NV_CTRL_DFP_SCALING_ACTIVE - not supported
  1579. */
  1580. #define NV_CTRL_DFP_SCALING_ACTIVE 254 /* R-DG */
  1581. /*
  1582. * NV_CTRL_FSAA_APPLICATION_ENHANCED - Controls how the NV_CTRL_FSAA_MODE
  1583. * is applied when NV_CTRL_FSAA_APPLICATION_CONTROLLED is set to
  1584. * NV_CTRL_APPLICATION_CONTROLLED_DISABLED. When
  1585. * NV_CTRL_FSAA_APPLICATION_ENHANCED is _DISABLED, OpenGL applications will
  1586. * be forced to use the FSAA mode specified by NV_CTRL_FSAA_MODE. when set
  1587. * to _ENABLED, only those applications that have selected a multisample
  1588. * FBConfig will be made to use the NV_CTRL_FSAA_MODE specified.
  1589. *
  1590. * This attribute is ignored when NV_CTRL_FSAA_APPLICATION_CONTROLLED is
  1591. * set to NV_CTRL_FSAA_APPLICATION_CONTROLLED_ENABLED.
  1592. */
  1593. #define NV_CTRL_FSAA_APPLICATION_ENHANCED 255 /* RW-X */
  1594. #define NV_CTRL_FSAA_APPLICATION_ENHANCED_ENABLED 1
  1595. #define NV_CTRL_FSAA_APPLICATION_ENHANCED_DISABLED 0
  1596. /*
  1597. * NV_CTRL_FRAMELOCK_SYNC_RATE_4 - This is the refresh rate that the
  1598. * frame lock board is sending to the GPU with 4 digits of precision.
  1599. *
  1600. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  1601. * using a NV_CTRL_TARGET_TYPE_FRAMELOCK.
  1602. */
  1603. #define NV_CTRL_FRAMELOCK_SYNC_RATE_4 256 /* R--F */
  1604. /*
  1605. * NV_CTRL_GVO_LOCK_OWNER - indicates that the GVO device is available
  1606. * or in use (by GLX or an X screen).
  1607. *
  1608. * The GVO device is locked by GLX when either glXGetVideoDeviceNV
  1609. * (part of GLX_NV_video_out) or glXBindVideoDeviceNV (part of
  1610. * GLX_NV_present_video) is called. All GVO output resources are
  1611. * locked until released by the GLX_NV_video_out/GLX_NV_present_video
  1612. * client.
  1613. *
  1614. * The GVO device is locked/unlocked by an X screen, when the GVO device is
  1615. * used in a MetaMode on an X screen.
  1616. *
  1617. * When the GVO device is locked, setting of the following GVO NV-CONTROL
  1618. * attributes will not happen immediately and will instead be cached. The
  1619. * GVO resource will need to be disabled/released and re-enabled/claimed for
  1620. * the values to be flushed. These attributes are:
  1621. *
  1622. * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT
  1623. * NV_CTRL_GVO_DATA_FORMAT
  1624. * NV_CTRL_GVO_FLIP_QUEUE_SIZE
  1625. */
  1626. #define NV_CTRL_GVO_LOCK_OWNER 257 /* R-- */
  1627. #define NV_CTRL_GVO_LOCK_OWNER_NONE 0
  1628. #define NV_CTRL_GVO_LOCK_OWNER_GLX 1
  1629. #define NV_CTRL_GVO_LOCK_OWNER_CLONE /* no longer supported */ 2
  1630. #define NV_CTRL_GVO_LOCK_OWNER_X_SCREEN 3
  1631. /*
  1632. * NV_CTRL_HWOVERLAY - when a workstation overlay is in use, reports
  1633. * whether the hardware overlay is used, or if the overlay is emulated.
  1634. */
  1635. #define NV_CTRL_HWOVERLAY 258 /* R-- */
  1636. #define NV_CTRL_HWOVERLAY_FALSE 0
  1637. #define NV_CTRL_HWOVERLAY_TRUE 1
  1638. /*
  1639. * NV_CTRL_NUM_GPU_ERRORS_RECOVERED - Returns the number of GPU errors
  1640. * occured. This attribute may be queried through XNVCTRLQueryTargetAttribute()
  1641. * using a NV_CTRL_TARGET_TYPE_X_SCREEN target.
  1642. */
  1643. #define NV_CTRL_NUM_GPU_ERRORS_RECOVERED 259 /* R--- */
  1644. /*
  1645. * NV_CTRL_REFRESH_RATE_3 - Returns the refresh rate of the specified
  1646. * display device in 1000 * Hz (ie. to get the refresh rate in Hz, divide
  1647. * the returned value by 1000.)
  1648. *
  1649. * This attribute may be queried through XNVCTRLQueryTargetAttribute()
  1650. * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
  1651. */
  1652. #define NV_CTRL_REFRESH_RATE_3 260 /* R-DG */
  1653. /*
  1654. * NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS - if the OnDemandVBlankInterrupts
  1655. * X driver option is set to true, this attribute can be used to
  1656. * determine if on-demand VBlank interrupt control is enabled on the
  1657. * specified GPU, as well as to enable or disable this feature.
  1658. */
  1659. #define NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS 261 /* RW-G */
  1660. #define NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS_OFF 0
  1661. #define NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS_ON 1
  1662. /*
  1663. * NV_CTRL_GPU_POWER_SOURCE reports the type of power source
  1664. * of the GPU driving the X screen.
  1665. */
  1666. #define NV_CTRL_GPU_POWER_SOURCE 262 /* R--G */
  1667. #define NV_CTRL_GPU_POWER_SOURCE_AC 0
  1668. #define NV_CTRL_GPU_POWER_SOURCE_BATTERY 1
  1669. /*
  1670. * NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE is deprecated
  1671. */
  1672. #define NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE 263 /* R--G */
  1673. #define NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE_DESKTOP 0
  1674. #define NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE_MAXPERF 1
  1675. /* NV_CTRL_GLYPH_CACHE - Enables RENDER Glyph Caching to VRAM */
  1676. #define NV_CTRL_GLYPH_CACHE 264 /* RW- */
  1677. #define NV_CTRL_GLYPH_CACHE_DISABLED 0
  1678. #define NV_CTRL_GLYPH_CACHE_ENABLED 1
  1679. /*
  1680. * NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL reports the current
  1681. * Performance level of the GPU driving the X screen. Each
  1682. * Performance level has associated NVClock and Mem Clock values.
  1683. */
  1684. #define NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL 265 /* R--G */
  1685. /*
  1686. * NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE reports if Adaptive Clocking
  1687. * is Enabled on the GPU driving the X screen.
  1688. */
  1689. #define NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE 266 /* R--G */
  1690. #define NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_DISABLED 0
  1691. #define NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_ENABLED 1
  1692. /*
  1693. * NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED - Returns whether or not the GVO output
  1694. * video is locked to the GPU.
  1695. */
  1696. #define NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED 267 /* R--- */
  1697. #define NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_FALSE 0
  1698. #define NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_TRUE 1
  1699. /*
  1700. * NV_CTRL_GVO_SYNC_LOCK_STATUS - Returns whether or not the GVO device
  1701. * is locked to the input ref signal. If the sync mode is set to
  1702. * NV_CTRL_GVO_SYNC_MODE_GENLOCK, then this returns the genlock
  1703. * sync status, and if the sync mode is set to NV_CTRL_GVO_SYNC_MODE_FRAMELOCK,
  1704. * then this reports the frame lock status.
  1705. */
  1706. #define NV_CTRL_GVO_SYNC_LOCK_STATUS 268 /* R--- */
  1707. #define NV_CTRL_GVO_SYNC_LOCK_STATUS_UNLOCKED 0
  1708. #define NV_CTRL_GVO_SYNC_LOCK_STATUS_LOCKED 1
  1709. /*
  1710. * NV_CTRL_GVO_ANC_TIME_CODE_GENERATION - Allows SDI device to generate
  1711. * time codes in the ANC region of the SDI video output stream.
  1712. */
  1713. #define NV_CTRL_GVO_ANC_TIME_CODE_GENERATION 269 /* RW-- */
  1714. #define NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_DISABLE 0
  1715. #define NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_ENABLE 1
  1716. /*
  1717. * NV_CTRL_GVO_COMPOSITE - Enables/Disables SDI compositing. This attribute
  1718. * is only available when an SDI input source is detected and is in genlock
  1719. * mode.
  1720. */
  1721. #define NV_CTRL_GVO_COMPOSITE 270 /* RW-- */
  1722. #define NV_CTRL_GVO_COMPOSITE_DISABLE 0
  1723. #define NV_CTRL_GVO_COMPOSITE_ENABLE 1
  1724. /*
  1725. * NV_CTRL_GVO_COMPOSITE_ALPHA_KEY - When compositing is enabled, this
  1726. * enables/disables alpha blending.
  1727. */
  1728. #define NV_CTRL_GVO_COMPOSITE_ALPHA_KEY 271 /* RW-- */
  1729. #define NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_DISABLE 0
  1730. #define NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_ENABLE 1
  1731. /*
  1732. * NV_CTRL_GVO_COMPOSITE_LUMA_KEY_RANGE - Set the values of a luma
  1733. * channel range. This is a packed int that has the following format
  1734. * (in order of high-bits to low bits):
  1735. *
  1736. * Range # (11 bits), (Enabled 1 bit), min value (10 bits), max value (10 bits)
  1737. *
  1738. * To query the current values, pass the range # throught the display_mask
  1739. * variable.
  1740. */
  1741. #define NV_CTRL_GVO_COMPOSITE_LUMA_KEY_RANGE 272 /* RW-- */
  1742. #define NV_CTRL_GVO_COMPOSITE_MAKE_RANGE(range, enable, min, max) \
  1743. ((((min) & 0x3FF) << 0) | \
  1744. (((max) & 0x3FF) << 10) | \
  1745. (((enable) & 0x1) << 20) | \
  1746. (((range) & 0x7FF) << 21))
  1747. #define NV_CTRL_GVO_COMPOSITE_GET_RANGE(val, range, enable, min, max) \
  1748. (min) = ((val) >> 0) & 0x3FF; \
  1749. (max) = ((val) >> 10) & 0x3FF; \
  1750. (enable) = ((val) >> 20) & 0x1; \
  1751. (range) = ((val) >> 21) & 0x7FF;
  1752. /*
  1753. * NV_CTRL_GVO_COMPOSITE_CR_KEY_RANGE - Set the values of a CR
  1754. * channel range. This is a packed int that has the following format
  1755. * (in order of high-bits to low bits):
  1756. *
  1757. * Range # (11 bits), (Enabled 1 bit), min value (10 bits), max value (10 bits)
  1758. *
  1759. * To query the current values, pass the range # throught he display_mask
  1760. * variable.
  1761. */
  1762. #define NV_CTRL_GVO_COMPOSITE_CR_KEY_RANGE 273 /* RW-- */
  1763. /*
  1764. * NV_CTRL_GVO_COMPOSITE_CB_KEY_RANGE - Set the values of a CB
  1765. * channel range. This is a packed int that has the following format
  1766. * (in order of high-bits to low bits):
  1767. *
  1768. * Range # (11 bits), (Enabled 1 bit), min value (10 bits), max value (10 bits)
  1769. *
  1770. * To query the current values, pass the range # throught he display_mask
  1771. * variable.
  1772. */
  1773. #define NV_CTRL_GVO_COMPOSITE_CB_KEY_RANGE 274 /* RW-- */
  1774. /*
  1775. * NV_CTRL_GVO_COMPOSITE_NUM_KEY_RANGES - Returns the number of ranges
  1776. * available for each channel (Y/Luma, Cr, and Cb.)
  1777. */
  1778. #define NV_CTRL_GVO_COMPOSITE_NUM_KEY_RANGES 275 /* R--- */
  1779. /*
  1780. * NV_CTRL_SWITCH_TO_DISPLAYS - Can be used to select which displays
  1781. * to switch to (as a hotkey event).
  1782. */
  1783. #define NV_CTRL_SWITCH_TO_DISPLAYS 276 /* -W- */
  1784. /*
  1785. * NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT - Event that notifies
  1786. * when a notebook lid change occurs (i.e. when the lid is opened or
  1787. * closed.) This attribute can be queried to retrieve the current
  1788. * notebook lid status (opened/closed.)
  1789. */
  1790. #define NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT 277 /* RW- */
  1791. #define NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT_CLOSE 0
  1792. #define NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT_OPEN 1
  1793. /*
  1794. * NV_CTRL_NOTEBOOK_INTERNAL_LCD - Returns the display device mask of
  1795. * the intenal LCD of a notebook.
  1796. */
  1797. #define NV_CTRL_NOTEBOOK_INTERNAL_LCD 278 /* R-- */
  1798. /*
  1799. * NV_CTRL_DEPTH_30_ALLOWED - returns whether the NVIDIA X driver supports
  1800. * depth 30 on the specified X screen or GPU.
  1801. */
  1802. #define NV_CTRL_DEPTH_30_ALLOWED 279 /* R--G */
  1803. /*
  1804. * NV_CTRL_MODE_SET_EVENT This attribute is sent as an event
  1805. * when hotkey, ctrl-alt-+/- or randr event occurs. Note that
  1806. * This attribute cannot be set or queried and is meant to
  1807. * be received by clients that wish to be notified of when
  1808. * mode set events occur.
  1809. */
  1810. #define NV_CTRL_MODE_SET_EVENT 280 /* --- */
  1811. /*
  1812. * NV_CTRL_OPENGL_AA_LINE_GAMMA_VALUE - the gamma value used by
  1813. * OpenGL when NV_CTRL_OPENGL_AA_LINE_GAMMA is enabled
  1814. */
  1815. #define NV_CTRL_OPENGL_AA_LINE_GAMMA_VALUE 281 /* RW-X */
  1816. /*
  1817. * NV_CTRL_VCSC_HIGH_PERF_MODE - Is used to both query High Performance Mode
  1818. * status on the Visual Computing System, and also to enable or disable High
  1819. * Performance Mode.
  1820. */
  1821. #define NV_CTRL_VCSC_HIGH_PERF_MODE 282 /* RW-V */
  1822. #define NV_CTRL_VCSC_HIGH_PERF_MODE_DISABLE 0
  1823. #define NV_CTRL_VCSC_HIGH_PERF_MODE_ENABLE 1
  1824. /*
  1825. * NV_CTRL_DISPLAYPORT_LINK_RATE - returns the negotiated lane bandwidth of the
  1826. * DisplayPort main link.
  1827. * This attribute is only available for DisplayPort flat panels.
  1828. */
  1829. #define NV_CTRL_DISPLAYPORT_LINK_RATE 291 /* R-DG */
  1830. #define NV_CTRL_DISPLAYPORT_LINK_RATE_DISABLED 0x0
  1831. #define NV_CTRL_DISPLAYPORT_LINK_RATE_1_62GBPS 0x6
  1832. #define NV_CTRL_DISPLAYPORT_LINK_RATE_2_70GBPS 0xA
  1833. /*
  1834. * NV_CTRL_STEREO_EYES_EXCHANGE - Controls whether or not the left and right
  1835. * eyes of a stereo image are flipped.
  1836. */
  1837. #define NV_CTRL_STEREO_EYES_EXCHANGE 292 /* RW-X */
  1838. #define NV_CTRL_STEREO_EYES_EXCHANGE_OFF 0
  1839. #define NV_CTRL_STEREO_EYES_EXCHANGE_ON 1
  1840. /*
  1841. * NV_CTRL_NO_SCANOUT - returns whether the special "NoScanout" mode is
  1842. * enabled on the specified X screen or GPU; for details on this mode,
  1843. * see the description of the "none" value for the "UseDisplayDevice"
  1844. * X configuration option in the NVIDIA driver README.
  1845. */
  1846. #define NV_CTRL_NO_SCANOUT 293 /* R--G */
  1847. #define NV_CTRL_NO_SCANOUT_DISABLED 0
  1848. #define NV_CTRL_NO_SCANOUT_ENABLED 1
  1849. /*
  1850. * NV_CTRL_GVO_CSC_CHANGED_EVENT This attribute is sent as an event
  1851. * when the color space conversion matrix has been altered by another
  1852. * client.
  1853. */
  1854. #define NV_CTRL_GVO_CSC_CHANGED_EVENT 294 /* --- */
  1855. /*
  1856. * NV_CTRL_FRAMELOCK_SLAVEABLE - Returns a bitmask of the display devices
  1857. * that are (currently) allowed to be selected as slave devices for the
  1858. * given GPU
  1859. */
  1860. #define NV_CTRL_FRAMELOCK_SLAVEABLE 295 /* R-DG */
  1861. /*
  1862. * NV_CTRL_GVO_SYNC_TO_DISPLAY This attribute controls whether or not
  1863. * the non-SDI display device will be sync'ed to the SDI display device
  1864. * (when configured in TwinView, Clone Mode or when using the SDI device
  1865. * with OpenGL).
  1866. */
  1867. #define NV_CTRL_GVO_SYNC_TO_DISPLAY 296 /* --- */
  1868. #define NV_CTRL_GVO_SYNC_TO_DISPLAY_DISABLE 0
  1869. #define NV_CTRL_GVO_SYNC_TO_DISPLAY_ENABLE 1
  1870. /*
  1871. * NV_CTRL_X_SERVER_UNIQUE_ID - returns a pseudo-unique identifier for this
  1872. * X server. Intended for use in cases where an NV-CONTROL client communicates
  1873. * with multiple X servers, and wants some level of confidence that two
  1874. * X Display connections correspond to the same or different X servers.
  1875. */
  1876. #define NV_CTRL_X_SERVER_UNIQUE_ID 297 /* R--- */
  1877. /*
  1878. * NV_CTRL_PIXMAP_CACHE - This attribute controls whether the driver attempts to
  1879. * store video memory pixmaps in a cache. The cache speeds up allocation and
  1880. * deallocation of pixmaps, but could use more memory than when the cache is
  1881. * disabled.
  1882. */
  1883. #define NV_CTRL_PIXMAP_CACHE 298 /* RW-X */
  1884. #define NV_CTRL_PIXMAP_CACHE_DISABLE 0
  1885. #define NV_CTRL_PIXMAP_CACHE_ENABLE 1
  1886. /*
  1887. * NV_CTRL_PIXMAP_CACHE_ROUNDING_SIZE_KB - When the pixmap cache is enabled and
  1888. * there is not enough free space in the cache to fit a new pixmap, the driver
  1889. * will round up to the next multiple of this number of kilobytes when
  1890. * allocating more memory for the cache.
  1891. */
  1892. #define NV_CTRL_PIXMAP_CACHE_ROUNDING_SIZE_KB 299 /* RW-X */
  1893. /*
  1894. * NV_CTRL_IS_GVO_DISPLAY - returns whether or not a given display is an
  1895. * SDI device.
  1896. */
  1897. #define NV_CTRL_IS_GVO_DISPLAY 300 /* R-D */
  1898. #define NV_CTRL_IS_GVO_DISPLAY_FALSE 0
  1899. #define NV_CTRL_IS_GVO_DISPLAY_TRUE 1
  1900. /*
  1901. * NV_CTRL_PCI_ID - Returns the PCI vendor and device ID of the specified
  1902. * device.
  1903. *
  1904. * NV_CTRL_PCI_ID is a "packed" integer attribute; the PCI vendor ID is stored
  1905. * in the upper 16 bits of the integer, and the PCI device ID is stored in the
  1906. * lower 16 bits of the integer.
  1907. */
  1908. #define NV_CTRL_PCI_ID 301 /* R--GI */
  1909. /*
  1910. * NV_CTRL_GVO_FULL_RANGE_COLOR - Allow full range color data [4-1019]
  1911. * without clamping to [64-940].
  1912. */
  1913. #define NV_CTRL_GVO_FULL_RANGE_COLOR 302 /* RW- */
  1914. #define NV_CTRL_GVO_FULL_RANGE_COLOR_DISABLED 0
  1915. #define NV_CTRL_GVO_FULL_RANGE_COLOR_ENABLED 1
  1916. /*
  1917. * NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE - Returns whether or not
  1918. * SLI Mosaic Mode supported.
  1919. */
  1920. #define NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE 303 /* R-- */
  1921. #define NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE_FALSE 0
  1922. #define NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE_TRUE 1
  1923. /*
  1924. * NV_CTRL_GVO_ENABLE_RGB_DATA - Allows clients to specify when
  1925. * the GVO board should process colors as RGB when the output data
  1926. * format is one of the NV_CTRL_GVO_DATA_FORMAT_???_PASSTRHU modes.
  1927. */
  1928. #define NV_CTRL_GVO_ENABLE_RGB_DATA 304 /* RW- */
  1929. #define NV_CTRL_GVO_ENABLE_RGB_DATA_DISABLE 0
  1930. #define NV_CTRL_GVO_ENABLE_RGB_DATA_ENABLE 1
  1931. /*
  1932. * NV_CTRL_IMAGE_SHARPENING_DEFAULT - Returns default value of
  1933. * Image Sharpening.
  1934. */
  1935. #define NV_CTRL_IMAGE_SHARPENING_DEFAULT 305 /* R-- */
  1936. /*
  1937. * NV_CTRL_PCI_DOMAIN - Returns the PCI domain number the specified device is
  1938. * using.
  1939. */
  1940. #define NV_CTRL_PCI_DOMAIN 306 /* R--GI */
  1941. /*
  1942. * NV_CTRL_GVI_NUM_JACKS - Returns the number of input BNC jacks available
  1943. * on a GVI device.
  1944. */
  1945. #define NV_CTRL_GVI_NUM_JACKS 307 /* R--I */
  1946. /*
  1947. * NV_CTRL_GVI_MAX_LINKS_PER_STREAM - Returns the maximum supported number of
  1948. * links that can be tied to one stream.
  1949. */
  1950. #define NV_CTRL_GVI_MAX_LINKS_PER_STREAM 308 /* R--I */
  1951. /*
  1952. * NV_CTRL_GVI_DETECTED_CHANNEL_BITS_PER_COMPONENT - Returns the detected
  1953. * number of bits per component (BPC) of data on the given input jack+
  1954. * channel.
  1955. *
  1956. * The jack number should be specified in the lower 16 bits of the
  1957. * "display_mask" parameter, while the channel number should be specified in
  1958. * the upper 16 bits.
  1959. */
  1960. #define NV_CTRL_GVI_DETECTED_CHANNEL_BITS_PER_COMPONENT 309 /* R--I */
  1961. #define NV_CTRL_GVI_BITS_PER_COMPONENT_UNKNOWN 0
  1962. #define NV_CTRL_GVI_BITS_PER_COMPONENT_8 1
  1963. #define NV_CTRL_GVI_BITS_PER_COMPONENT_10 2
  1964. #define NV_CTRL_GVI_BITS_PER_COMPONENT_12 3
  1965. /*
  1966. * NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT - Specify the number of
  1967. * bits per component (BPC) of data for the captured stream.
  1968. * The stream number should be specified in the "display_mask" parameter.
  1969. *
  1970. * Note: Setting this attribute may also result in the following
  1971. * NV-CONTROL attributes being reset on the GVI device (to ensure
  1972. * the configuration remains valid):
  1973. * NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING
  1974. */
  1975. #define NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT 310 /* RW-I */
  1976. /*
  1977. * NV_CTRL_GVI_DETECTED_CHANNEL_COMPONENT_SAMPLING - Returns the detected
  1978. * sampling format for the input jack+channel.
  1979. *
  1980. * The jack number should be specified in the lower 16 bits of the
  1981. * "display_mask" parameter, while the channel number should be specified in
  1982. * the upper 16 bits.
  1983. */
  1984. #define NV_CTRL_GVI_DETECTED_CHANNEL_COMPONENT_SAMPLING 311 /* R--I */
  1985. #define NV_CTRL_GVI_COMPONENT_SAMPLING_UNKNOWN 0
  1986. #define NV_CTRL_GVI_COMPONENT_SAMPLING_4444 1
  1987. #define NV_CTRL_GVI_COMPONENT_SAMPLING_4224 2
  1988. #define NV_CTRL_GVI_COMPONENT_SAMPLING_444 3
  1989. #define NV_CTRL_GVI_COMPONENT_SAMPLING_422 4
  1990. #define NV_CTRL_GVI_COMPONENT_SAMPLING_420 5
  1991. /*
  1992. * NV_CTRL_GVI_REQUESTED_COMPONENT_SAMPLING - Specify the sampling format for
  1993. * the captured stream.
  1994. * The possible values are the NV_CTRL_GVI_DETECTED_COMPONENT_SAMPLING
  1995. * constants.
  1996. * The stream number should be specified in the "display_mask" parameter.
  1997. */
  1998. #define NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING 312 /* RW-I */
  1999. /*
  2000. * NV_CTRL_GVI_CHROMA_EXPAND - Enable or disable 4:2:2 -> 4:4:4 chroma
  2001. * expansion for the captured stream. This value is ignored when a
  2002. * COMPONENT_SAMPLING format is selected that does not use chroma subsampling,
  2003. * or if a BITS_PER_COMPONENT value is selected that is not supported.
  2004. * The stream number should be specified in the "display_mask" parameter.
  2005. */
  2006. #define NV_CTRL_GVI_REQUESTED_STREAM_CHROMA_EXPAND 313 /* RW-I */
  2007. #define NV_CTRL_GVI_CHROMA_EXPAND_FALSE 0
  2008. #define NV_CTRL_GVI_CHROMA_EXPAND_TRUE 1
  2009. /*
  2010. * NV_CTRL_GVI_DETECTED_CHANNEL_COLOR_SPACE - Returns the detected color space
  2011. * of the input jack+channel.
  2012. *
  2013. * The jack number should be specified in the lower 16 bits of the
  2014. * "display_mask" parameter, while the channel number should be specified in
  2015. * the upper 16 bits.
  2016. */
  2017. #define NV_CTRL_GVI_DETECTED_CHANNEL_COLOR_SPACE 314 /* R--I */
  2018. #define NV_CTRL_GVI_COLOR_SPACE_UNKNOWN 0
  2019. #define NV_CTRL_GVI_COLOR_SPACE_GBR 1
  2020. #define NV_CTRL_GVI_COLOR_SPACE_GBRA 2
  2021. #define NV_CTRL_GVI_COLOR_SPACE_GBRD 3
  2022. #define NV_CTRL_GVI_COLOR_SPACE_YCBCR 4
  2023. #define NV_CTRL_GVI_COLOR_SPACE_YCBCRA 5
  2024. #define NV_CTRL_GVI_COLOR_SPACE_YCBCRD 6
  2025. /*
  2026. * NV_CTRL_GVI_DETECTED_CHANNEL_LINK_ID - Returns the detected link identifier
  2027. * for the given input jack+channel.
  2028. *
  2029. * The jack number should be specified in the lower 16 bits of the
  2030. * "display_mask" parameter, while the channel number should be specified in
  2031. * the upper 16 bits.
  2032. */
  2033. #define NV_CTRL_GVI_DETECTED_CHANNEL_LINK_ID 315 /* R--I */
  2034. #define NV_CTRL_GVI_LINK_ID_UNKNOWN 0xFFFF
  2035. /*
  2036. * NV_CTRL_GVI_DETECTED_CHANNEL_SMPTE352_IDENTIFIER - Returns the 4-byte
  2037. * SMPTE 352 identifier from the given input jack+channel.
  2038. *
  2039. * The jack number should be specified in the lower 16 bits of the
  2040. * "display_mask" parameter, while the channel number should be specified in
  2041. * the upper 16 bits.
  2042. */
  2043. #define NV_CTRL_GVI_DETECTED_CHANNEL_SMPTE352_IDENTIFIER 316 /* R--I */
  2044. /*
  2045. * NV_CTRL_GVI_GLOBAL_IDENTIFIER - Returns a global identifier for the
  2046. * GVI device. This identifier can be used to relate GVI devices named
  2047. * in NV-CONTROL with those enumerated in OpenGL.
  2048. */
  2049. #define NV_CTRL_GVI_GLOBAL_IDENTIFIER 317 /* R--I */
  2050. /*
  2051. * NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION - Returns the number of nanoseconds
  2052. * that one unit of NV_CTRL_FRAMELOCK_SYNC_DELAY corresponds to.
  2053. */
  2054. #define NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION 318 /* R-- */
  2055. /*
  2056. * NV_CTRL_GPU_COOLER_MANUAL_CONTROL - Query the current or set a new
  2057. * cooler control state; the value of this attribute controls the
  2058. * availability of additional cooler control attributes (see below).
  2059. *
  2060. * Note: this attribute is unavailable unless cooler control support
  2061. * has been enabled in the X server (by the user).
  2062. */
  2063. #define NV_CTRL_GPU_COOLER_MANUAL_CONTROL 319 /* RW-G */
  2064. #define NV_CTRL_GPU_COOLER_MANUAL_CONTROL_FALSE 0
  2065. #define NV_CTRL_GPU_COOLER_MANUAL_CONTROL_TRUE 1
  2066. /*
  2067. * NV_CTRL_THERMAL_COOLER_LEVEL - Returns cooler's current operating
  2068. * level.
  2069. */
  2070. #define NV_CTRL_THERMAL_COOLER_LEVEL 320 /* RW-C */
  2071. /* NV_CTRL_THERMAL_COOLER_LEVEL_SET_DEFAULT - Sets default values of
  2072. * cooler.
  2073. */
  2074. #define NV_CTRL_THERMAL_COOLER_LEVEL_SET_DEFAULT 321 /* -W-C */
  2075. /*
  2076. * NV_CTRL_THERMAL_COOLER_CONTROL_TYPE -
  2077. * Returns a cooler's control signal characteristics.
  2078. * The possible types are restricted, Variable and Toggle.
  2079. */
  2080. #define NV_CTRL_THERMAL_COOLER_CONTROL_TYPE 322 /* R--C */
  2081. #define NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_NONE 0
  2082. #define NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_TOGGLE 1
  2083. #define NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_VARIABLE 2
  2084. /*
  2085. * NV_CTRL_THERMAL_COOLER_TARGET - Returns objects that cooler cools.
  2086. * Targets may be GPU, Memory, Power Supply or All of these.
  2087. * GPU_RELATED = GPU | MEMORY | POWER_SUPPLY
  2088. *
  2089. */
  2090. #define NV_CTRL_THERMAL_COOLER_TARGET 323 /* R--C */
  2091. #define NV_CTRL_THERMAL_COOLER_TARGET_NONE 0
  2092. #define NV_CTRL_THERMAL_COOLER_TARGET_GPU 1
  2093. #define NV_CTRL_THERMAL_COOLER_TARGET_MEMORY 2
  2094. #define NV_CTRL_THERMAL_COOLER_TARGET_POWER_SUPPLY 4
  2095. #define NV_CTRL_THERMAL_COOLER_TARGET_GPU_RELATED \
  2096. (NV_CTRL_THERMAL_COOLER_TARGET_GPU | \
  2097. NV_CTRL_THERMAL_COOLER_TARGET_MEMORY | \
  2098. NV_CTRL_THERMAL_COOLER_TARGET_POWER_SUPPLY)
  2099. /*
  2100. * NV_CTRL_GPU_ECC_SUPPORTED - Reports whether ECC is supported by the
  2101. * targeted GPU.
  2102. */
  2103. #define NV_CTRL_GPU_ECC_SUPPORTED 324 /* R--G */
  2104. #define NV_CTRL_GPU_ECC_SUPPORTED_FALSE 0
  2105. #define NV_CTRL_GPU_ECC_SUPPORTED_TRUE 1
  2106. /*
  2107. * NV_CTRL_GPU_ECC_STATUS - Returns the current hardware ECC setting
  2108. * for the targeted GPU.
  2109. */
  2110. #define NV_CTRL_GPU_ECC_STATUS 325 /* R--G */
  2111. #define NV_CTRL_GPU_ECC_STATUS_DISABLED 0
  2112. #define NV_CTRL_GPU_ECC_STATUS_ENABLED 1
  2113. /*
  2114. * NV_CTRL_GPU_ECC_CONFIGURATION - Reports whether ECC can be configured
  2115. * dynamically for the GPU in question.
  2116. */
  2117. #define NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED 326 /* R--G */
  2118. #define NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED_FALSE 0
  2119. #define NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED_TRUE 1
  2120. /*
  2121. * NV_CTRL_GPU_ECC_CONFIGURATION_SETTING - Returns the current ECC
  2122. * configuration setting or specifies new settings. New settings do not
  2123. * take effect until the next POST.
  2124. */
  2125. #define NV_CTRL_GPU_ECC_CONFIGURATION 327 /* RW-G */
  2126. #define NV_CTRL_GPU_ECC_CONFIGURATION_DISABLED 0
  2127. #define NV_CTRL_GPU_ECC_CONFIGURATION_ENABLED 1
  2128. /*
  2129. * NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_SETTING - Returns the default
  2130. * ECC configuration setting.
  2131. */
  2132. #define NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION 328 /* R--G */
  2133. #define NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_DISABLED 0
  2134. #define NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_ENABLED 1
  2135. /*
  2136. * NV_CTRL_GPU_ECC_SINGLE_BIT_ERRORS - Returns the number of single-bit
  2137. * ECC errors detected by the targeted GPU since the last POST.
  2138. * Note: this attribute is a 64-bit integer attribute.
  2139. */
  2140. #define NV_CTRL_GPU_ECC_SINGLE_BIT_ERRORS 329 /* R--GQ */
  2141. /*
  2142. * NV_CTRL_GPU_ECC_DOUBLE_BIT_ERRORS - Returns the number of double-bit
  2143. * ECC errors detected by the targeted GPU since the last POST.
  2144. * Note: this attribute is a 64-bit integer attribute.
  2145. */
  2146. #define NV_CTRL_GPU_ECC_DOUBLE_BIT_ERRORS 330 /* R--GQ */
  2147. /*
  2148. * NV_CTRL_GPU_ECC_AGGREGATE_SINGLE_BIT_ERRORS - Returns the number of
  2149. * single-bit ECC errors detected by the targeted GPU since the
  2150. * last counter reset.
  2151. * Note: this attribute is a 64-bit integer attribute.
  2152. */
  2153. #define NV_CTRL_GPU_ECC_AGGREGATE_SINGLE_BIT_ERRORS 331 /* R--GQ */
  2154. /*
  2155. * NV_CTRL_GPU_ECC_AGGREGATE_DOUBLE_BIT_ERRORS - Returns the number of
  2156. * double-bit ECC errors detected by the targeted GPU since the
  2157. * last counter reset.
  2158. * Note: this attribute is a 64-bit integer attribute.
  2159. */
  2160. #define NV_CTRL_GPU_ECC_AGGREGATE_DOUBLE_BIT_ERRORS 332 /* R--GQ */
  2161. /*
  2162. * NV_CTRL_GPU_ECC_RESET_ERROR_STATUS - Resets the volatile/aggregate
  2163. * single-bit and double-bit error counters. This attribute is a
  2164. * bitmask attribute.
  2165. */
  2166. #define NV_CTRL_GPU_ECC_RESET_ERROR_STATUS 333 /* -W-G */
  2167. #define NV_CTRL_GPU_ECC_RESET_ERROR_STATUS_VOLATILE 0x00000001
  2168. #define NV_CTRL_GPU_ECC_RESET_ERROR_STATUS_AGGREGATE 0x00000002
  2169. /*
  2170. * NV_CTRL_GPU_POWER_MIZER_MODE - Provides a hint to the driver
  2171. * as to how to manage the performance of the GPU.
  2172. *
  2173. * ADAPTIVE - adjust GPU clocks based on GPU
  2174. * utilization
  2175. * PREFER_MAXIMUM_PERFORMANCE - raise GPU clocks to favor
  2176. * maximum performance, to the extent
  2177. * that thermal and other constraints
  2178. * allow
  2179. */
  2180. #define NV_CTRL_GPU_POWER_MIZER_MODE 334 /* RW-G */
  2181. #define NV_CTRL_GPU_POWER_MIZER_MODE_ADAPTIVE 0
  2182. #define NV_CTRL_GPU_POWER_MIZER_MODE_PREFER_MAXIMUM_PERFORMANCE 1
  2183. /*
  2184. * NV_CTRL_GVI_SYNC_OUTPUT_FORMAT - Returns the output sync signal
  2185. * from the GVI device.
  2186. */
  2187. #define NV_CTRL_GVI_SYNC_OUTPUT_FORMAT 335 /* R--I */
  2188. /*
  2189. * NV_CTRL_GVI_MAX_CHANNELS_PER_JACK - Returns the maximum
  2190. * supported number of (logical) channels within a single physical jack of
  2191. * a GVI device. For most SDI video formats, there is only one channel
  2192. * (channel 0). But for 3G video formats (as specified in SMPTE 425),
  2193. * as an example, there are two channels (channel 0 and channel 1) per
  2194. * physical jack.
  2195. */
  2196. #define NV_CTRL_GVI_MAX_CHANNELS_PER_JACK 336 /* R--I */
  2197. /*
  2198. * NV_CTRL_GVI_MAX_STREAMS - Returns the maximum number of streams
  2199. * that can be configured on the GVI device.
  2200. */
  2201. #define NV_CTRL_GVI_MAX_STREAMS 337 /* R--I */
  2202. /*
  2203. * NV_CTRL_GVI_NUM_CAPTURE_SURFACES - The GVI interface exposed through
  2204. * NV-CONTROL and the GLX_NV_video_input extension uses internal capture
  2205. * surfaces when frames are read from the GVI device. The
  2206. * NV_CTRL_GVI_NUM_CAPTURE_SURFACES can be used to query and assign the
  2207. * number of capture surfaces. This attribute is applied when
  2208. * glXBindVideoCaptureDeviceNV() is called by the application.
  2209. *
  2210. * A lower number of capture surfaces will mean less video memory is used,
  2211. * but can result in frames being dropped if the application cannot keep up
  2212. * with the capture device. A higher number will prevent frames from being
  2213. * dropped, making capture more reliable but will consume move video memory.
  2214. */
  2215. #define NV_CTRL_GVI_NUM_CAPTURE_SURFACES 338 /* RW-I */
  2216. /*
  2217. * NV_CTRL_OVERSCAN_COMPENSATION - not supported
  2218. */
  2219. #define NV_CTRL_OVERSCAN_COMPENSATION 339 /* RWDG */
  2220. /*
  2221. * NV_CTRL_GPU_PCIE_GENERATION - Reports the current PCIe generation.
  2222. */
  2223. #define NV_CTRL_GPU_PCIE_GENERATION 341 /* R--GI */
  2224. #define NV_CTRL_GPU_PCIE_GENERATION1 0x00000001
  2225. #define NV_CTRL_GPU_PCIE_GENERATION2 0x00000002
  2226. #define NV_CTRL_GPU_PCIE_GENERATION3 0x00000003
  2227. /*
  2228. * NV_CTRL_GVI_BOUND_GPU - Returns the NV_CTRL_TARGET_TYPE_GPU target_id of
  2229. * the GPU currently bound to the GVI device. Returns -1 if no GPU is
  2230. * currently bound to the GVI device.
  2231. */
  2232. #define NV_CTRL_GVI_BOUND_GPU 342 /* R--I */
  2233. /*
  2234. * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT3 - this attribute is only
  2235. * intended to be used to query the ValidValues for
  2236. * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for VIDEO_FORMAT values between
  2237. * 64 and 95. See NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for details.
  2238. */
  2239. #define NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT3 343 /* ---GI */
  2240. /*
  2241. * NV_CTRL_ACCELERATE_TRAPEZOIDS - Toggles RENDER Trapezoid acceleration
  2242. */
  2243. #define NV_CTRL_ACCELERATE_TRAPEZOIDS 344 /* RW- */
  2244. #define NV_CTRL_ACCELERATE_TRAPEZOIDS_DISABLE 0
  2245. #define NV_CTRL_ACCELERATE_TRAPEZOIDS_ENABLE 1
  2246. /*
  2247. * NV_CTRL_GPU_CORES - Returns number of GPU cores supported by the graphics
  2248. * pipeline.
  2249. */
  2250. #define NV_CTRL_GPU_CORES 345 /* R--G */
  2251. /*
  2252. * NV_CTRL_GPU_MEMORY_BUS_WIDTH - Returns memory bus bandwidth on the associated
  2253. * subdevice.
  2254. */
  2255. #define NV_CTRL_GPU_MEMORY_BUS_WIDTH 346 /* R--G */
  2256. /*
  2257. * NV_CTRL_GVI_TEST_MODE - This attribute controls the GVI test mode. When
  2258. * enabled, the GVI device will generate fake data as quickly as possible. All
  2259. * GVI settings are still valid when this is enabled (e.g., the requested video
  2260. * format is honored and sets the video size).
  2261. * This may be used to test the pipeline.
  2262. */
  2263. #define NV_CTRL_GVI_TEST_MODE 347 /* R--I */
  2264. #define NV_CTRL_GVI_TEST_MODE_DISABLE 0
  2265. #define NV_CTRL_GVI_TEST_MODE_ENABLE 1
  2266. /*
  2267. * NV_CTRL_COLOR_SPACE - This option sets color space of the video
  2268. * signal.
  2269. */
  2270. #define NV_CTRL_COLOR_SPACE 348 /* RWDG */
  2271. #define NV_CTRL_COLOR_SPACE_RGB 0
  2272. #define NV_CTRL_COLOR_SPACE_YCbCr422 1
  2273. #define NV_CTRL_COLOR_SPACE_YCbCr444 2
  2274. /*
  2275. * NV_CTRL_COLOR_RANGE - This option sets color range of the video
  2276. * signal.
  2277. */
  2278. #define NV_CTRL_COLOR_RANGE 349 /* RWDG */
  2279. #define NV_CTRL_COLOR_RANGE_FULL 0
  2280. #define NV_CTRL_COLOR_RANGE_LIMITED 1
  2281. /*
  2282. * NV_CTRL_GPU_SCALING_DEFAULT_TARGET - not supported
  2283. *
  2284. * NV_CTRL_GPU_SCALING_DEFAULT_METHOD - not supported
  2285. */
  2286. #define NV_CTRL_GPU_SCALING_DEFAULT_TARGET 350 /* R-DG */
  2287. #define NV_CTRL_GPU_SCALING_DEFAULT_METHOD 351 /* R-DG */
  2288. /*
  2289. * NV_CTRL_DITHERING_MODE - Controls the dithering mode, when
  2290. * NV_CTRL_CURRENT_DITHERING is Enabled.
  2291. *
  2292. * AUTO: allow the driver to choose the dithering mode automatically.
  2293. *
  2294. * DYNAMIC_2X2: use a 2x2 matrix to dither from the GPU's pixel
  2295. * pipeline to the bit depth of the flat panel. The matrix values
  2296. * are changed from frame to frame.
  2297. *
  2298. * STATIC_2X2: use a 2x2 matrix to dither from the GPU's pixel
  2299. * pipeline to the bit depth of the flat panel. The matrix values
  2300. * do not change from frame to frame.
  2301. *
  2302. * TEMPORAL: use a pseudorandom value from a uniform distribution calculated at
  2303. * every pixel to achieve stochastic dithering. This method produces a better
  2304. * visual result than 2x2 matrix approaches.
  2305. */
  2306. #define NV_CTRL_DITHERING_MODE 352 /* RWDG */
  2307. #define NV_CTRL_DITHERING_MODE_AUTO 0
  2308. #define NV_CTRL_DITHERING_MODE_DYNAMIC_2X2 1
  2309. #define NV_CTRL_DITHERING_MODE_STATIC_2X2 2
  2310. #define NV_CTRL_DITHERING_MODE_TEMPORAL 3
  2311. /*
  2312. * NV_CTRL_CURRENT_DITHERING - Returns the current dithering state.
  2313. */
  2314. #define NV_CTRL_CURRENT_DITHERING 353 /* R-DG */
  2315. #define NV_CTRL_CURRENT_DITHERING_DISABLED 0
  2316. #define NV_CTRL_CURRENT_DITHERING_ENABLED 1
  2317. /*
  2318. * NV_CTRL_CURRENT_DITHERING_MODE - Returns the current dithering
  2319. * mode.
  2320. */
  2321. #define NV_CTRL_CURRENT_DITHERING_MODE 354 /* R-DG */
  2322. #define NV_CTRL_CURRENT_DITHERING_MODE_NONE 0
  2323. #define NV_CTRL_CURRENT_DITHERING_MODE_DYNAMIC_2X2 1
  2324. #define NV_CTRL_CURRENT_DITHERING_MODE_STATIC_2X2 2
  2325. #define NV_CTRL_CURRENT_DITHERING_MODE_TEMPORAL 3
  2326. /*
  2327. * NV_CTRL_THERMAL_SENSOR_READING - Returns the thermal sensor's current
  2328. * reading.
  2329. */
  2330. #define NV_CTRL_THERMAL_SENSOR_READING 355 /* R--S */
  2331. /*
  2332. * NV_CTRL_THERMAL_SENSOR_PROVIDER - Returns the hardware device that
  2333. * provides the thermal sensor.
  2334. */
  2335. #define NV_CTRL_THERMAL_SENSOR_PROVIDER 356 /* R--S */
  2336. #define NV_CTRL_THERMAL_SENSOR_PROVIDER_NONE 0
  2337. #define NV_CTRL_THERMAL_SENSOR_PROVIDER_GPU_INTERNAL 1
  2338. #define NV_CTRL_THERMAL_SENSOR_PROVIDER_ADM1032 2
  2339. #define NV_CTRL_THERMAL_SENSOR_PROVIDER_ADT7461 3
  2340. #define NV_CTRL_THERMAL_SENSOR_PROVIDER_MAX6649 4
  2341. #define NV_CTRL_THERMAL_SENSOR_PROVIDER_MAX1617 5
  2342. #define NV_CTRL_THERMAL_SENSOR_PROVIDER_LM99 6
  2343. #define NV_CTRL_THERMAL_SENSOR_PROVIDER_LM89 7
  2344. #define NV_CTRL_THERMAL_SENSOR_PROVIDER_LM64 8
  2345. #define NV_CTRL_THERMAL_SENSOR_PROVIDER_G781 9
  2346. #define NV_CTRL_THERMAL_SENSOR_PROVIDER_ADT7473 10
  2347. #define NV_CTRL_THERMAL_SENSOR_PROVIDER_SBMAX6649 11
  2348. #define NV_CTRL_THERMAL_SENSOR_PROVIDER_VBIOSEVT 12
  2349. #define NV_CTRL_THERMAL_SENSOR_PROVIDER_OS 13
  2350. #define NV_CTRL_THERMAL_SENSOR_PROVIDER_UNKNOWN 0xFFFFFFFF
  2351. /*
  2352. * NV_CTRL_THERMAL_SENSOR_TARGET - Returns what hardware component
  2353. * the thermal sensor is measuring.
  2354. */
  2355. #define NV_CTRL_THERMAL_SENSOR_TARGET 357 /* R--S */
  2356. #define NV_CTRL_THERMAL_SENSOR_TARGET_NONE 0
  2357. #define NV_CTRL_THERMAL_SENSOR_TARGET_GPU 1
  2358. #define NV_CTRL_THERMAL_SENSOR_TARGET_MEMORY 2
  2359. #define NV_CTRL_THERMAL_SENSOR_TARGET_POWER_SUPPLY 4
  2360. #define NV_CTRL_THERMAL_SENSOR_TARGET_BOARD 8
  2361. #define NV_CTRL_THERMAL_SENSOR_TARGET_UNKNOWN 0xFFFFFFFF
  2362. /*
  2363. * NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR - when TRUE, OpenGL will
  2364. * draw information about the current MULTIGPU mode.
  2365. */
  2366. #define NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR 358 /* RW-X */
  2367. #define NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR_FALSE 0
  2368. #define NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR_TRUE 1
  2369. /*
  2370. * NV_CTRL_GPU_CURRENT_PROCESSOR_CLOCK_FREQS - Returns GPU's processor
  2371. * clock freqs.
  2372. */
  2373. #define NV_CTRL_GPU_CURRENT_PROCESSOR_CLOCK_FREQS 359 /* RW-G */
  2374. /*
  2375. * NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS - query the flags (various information
  2376. * for the specified NV_CTRL_GVIO_VIDEO_FORMAT_*. So that this can be
  2377. * queried with existing interfaces, the video format should be specified
  2378. * in the display_mask field; eg:
  2379. *
  2380. * XNVCTRLQueryTargetAttribute(dpy,
  2381. * NV_CTRL_TARGET_TYPE_GVI,
  2382. * gvi,
  2383. * NV_CTRL_GVIO_VIDEO_FORMAT_720P_60_00_SMPTE296,
  2384. * NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS,
  2385. * &flags);
  2386. *
  2387. * Note: The NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_1080P_NO_12BPC flag is set
  2388. * for those 1080P 3G modes (level A and B) that do not support
  2389. * 12 bits per component (when configuring a GVI stream.)
  2390. */
  2391. #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS 360 /* R--I */
  2392. #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_NONE 0x00000000
  2393. #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_INTERLACED 0x00000001
  2394. #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_PROGRESSIVE 0x00000002
  2395. #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_PSF 0x00000004
  2396. #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_A 0x00000008
  2397. #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_B 0x00000010
  2398. #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G \
  2399. ((NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_A) | \
  2400. (NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_B))
  2401. #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_1080P_NO_12BPC 0x00000020
  2402. /*
  2403. * NV_CTRL_GPU_PCIE_MAX_LINK_SPEED - returns maximum PCIe link speed,
  2404. * in gigatransfers per second (GT/s).
  2405. */
  2406. #define NV_CTRL_GPU_PCIE_MAX_LINK_SPEED 361 /* R--GI */
  2407. /*
  2408. * NV_CTRL_3D_VISION_PRO_RESET_TRANSCEIVER_TO_FACTORY_SETTINGS - Resets the
  2409. * 3D Vision Pro transceiver to its factory settings.
  2410. */
  2411. #define NV_CTRL_3D_VISION_PRO_RESET_TRANSCEIVER_TO_FACTORY_SETTINGS 363 /* -W-T */
  2412. /*
  2413. * NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL - Controls the channel that is
  2414. * currently used by the 3D Vision Pro transceiver.
  2415. */
  2416. #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL 364 /* RW-T */
  2417. /*
  2418. * NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE - Controls the mode in which the
  2419. * 3D Vision Pro transceiver operates.
  2420. * NV_CTRL_3D_VISION_PRO_TM_LOW_RANGE is bidirectional
  2421. * NV_CTRL_3D_VISION_PRO_TM_MEDIUM_RANGE is bidirectional
  2422. * NV_CTRL_3D_VISION_PRO_TM_HIGH_RANGE may be bidirectional just up to a
  2423. * given range, and unidirectional beyond it
  2424. * NV_CTRL_3D_VISION_PRO_TM_COUNT is the total number of
  2425. * 3D Vision Pro transceiver modes
  2426. */
  2427. #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE 365 /* RW-T */
  2428. #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_INVALID 0
  2429. #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_LOW_RANGE 1
  2430. #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_MEDIUM_RANGE 2
  2431. #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_HIGH_RANGE 3
  2432. #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_COUNT 4
  2433. /*
  2434. * NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES - controls whether updates to the color
  2435. * lookup table (LUT) are synchronous with respect to X rendering. For example,
  2436. * if an X client sends XStoreColors followed by XFillRectangle, the driver will
  2437. * guarantee that the FillRectangle request is not processed until after the
  2438. * updated LUT colors are actually visible on the screen if
  2439. * NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES is enabled. Otherwise, the rendering may
  2440. * occur first.
  2441. *
  2442. * This makes a difference for applications that use the LUT to animate, such as
  2443. * XPilot. If you experience flickering in applications that use LUT
  2444. * animations, try enabling this attribute.
  2445. *
  2446. * When synchronous updates are enabled, XStoreColors requests will be processed
  2447. * at your screen's refresh rate.
  2448. */
  2449. #define NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES 367 /* RWDG */
  2450. #define NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES_DISABLE 0
  2451. #define NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES_ENABLE 1
  2452. /*
  2453. * NV_CTRL_DITHERING_DEPTH - Controls the dithering depth when
  2454. * NV_CTRL_CURRENT_DITHERING is ENABLED. Some displays connected
  2455. * to the GPU via the DVI or LVDS interfaces cannot display the
  2456. * full color range of ten bits per channel, so the GPU will
  2457. * dither to either 6 or 8 bits per channel.
  2458. */
  2459. #define NV_CTRL_DITHERING_DEPTH 368 /* RWDG */
  2460. #define NV_CTRL_DITHERING_DEPTH_AUTO 0
  2461. #define NV_CTRL_DITHERING_DEPTH_6_BITS 1
  2462. #define NV_CTRL_DITHERING_DEPTH_8_BITS 2
  2463. /*
  2464. * NV_CTRL_CURRENT_DITHERING_DEPTH - Returns the current dithering
  2465. * depth value.
  2466. */
  2467. #define NV_CTRL_CURRENT_DITHERING_DEPTH 369 /* R-DG */
  2468. #define NV_CTRL_CURRENT_DITHERING_DEPTH_NONE 0
  2469. #define NV_CTRL_CURRENT_DITHERING_DEPTH_6_BITS 1
  2470. #define NV_CTRL_CURRENT_DITHERING_DEPTH_8_BITS 2
  2471. /*
  2472. * NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_FREQUENCY - Returns the
  2473. * frequency of the channel(in kHz) of the 3D Vision Pro transceiver.
  2474. * Use the display_mask parameter to specify the channel number.
  2475. */
  2476. #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_FREQUENCY 370 /* R--T */
  2477. /*
  2478. * NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_QUALITY - Returns the
  2479. * quality of the channel(in percentage) of the 3D Vision Pro transceiver.
  2480. * Use the display_mask parameter to specify the channel number.
  2481. */
  2482. #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_QUALITY 371 /* R--T */
  2483. /*
  2484. * NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_COUNT - Returns the number of
  2485. * channels on the 3D Vision Pro transceiver.
  2486. */
  2487. #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_COUNT 372 /* R--T */
  2488. /*
  2489. * NV_CTRL_3D_VISION_PRO_PAIR_GLASSES - Puts the 3D Vision Pro
  2490. * transceiver into pairing mode to gather additional glasses.
  2491. * NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_STOP - stops any pairing
  2492. * NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_BEACON - starts continuous
  2493. * pairing via beacon mode
  2494. * Any other value, N - Puts the 3D Vision Pro transceiver into
  2495. * authenticated pairing mode for N seconds.
  2496. */
  2497. #define NV_CTRL_3D_VISION_PRO_PAIR_GLASSES 373 /* -W-T */
  2498. #define NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_STOP 0
  2499. #define NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_BEACON 0xFFFFFFFF
  2500. /*
  2501. * NV_CTRL_3D_VISION_PRO_UNPAIR_GLASSES - Tells a specific pair
  2502. * of glasses to unpair. The glasses will "forget" the address
  2503. * of the 3D Vision Pro transceiver to which they have been paired.
  2504. * To unpair all the currently paired glasses, specify
  2505. * the glasses id as 0.
  2506. */
  2507. #define NV_CTRL_3D_VISION_PRO_UNPAIR_GLASSES 374 /* -W-T */
  2508. /*
  2509. * NV_CTRL_3D_VISION_PRO_DISCOVER_GLASSES - Tells the 3D Vision Pro
  2510. * transceiver about the glasses that have been paired using
  2511. * NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_BEACON. Unless this is done,
  2512. * the 3D Vision Pro transceiver will not know about glasses paired in
  2513. * beacon mode.
  2514. */
  2515. #define NV_CTRL_3D_VISION_PRO_DISCOVER_GLASSES 375 /* -W-T */
  2516. /*
  2517. * NV_CTRL_3D_VISION_PRO_IDENTIFY_GLASSES - Causes glasses LEDs to
  2518. * flash for a short period of time.
  2519. */
  2520. #define NV_CTRL_3D_VISION_PRO_IDENTIFY_GLASSES 376 /* -W-T */
  2521. /*
  2522. * NV_CTRL_3D_VISION_PRO_GLASSES_SYNC_CYCLE - Controls the
  2523. * sync cycle duration(in milliseconds) of the glasses.
  2524. * Use the display_mask parameter to specify the glasses id.
  2525. */
  2526. #define NV_CTRL_3D_VISION_PRO_GLASSES_SYNC_CYCLE 378 /* RW-T */
  2527. /*
  2528. * NV_CTRL_3D_VISION_PRO_GLASSES_MISSED_SYNC_CYCLES - Returns the
  2529. * number of state sync cycles recently missed by the glasses.
  2530. * Use the display_mask parameter to specify the glasses id.
  2531. */
  2532. #define NV_CTRL_3D_VISION_PRO_GLASSES_MISSED_SYNC_CYCLES 379 /* R--T */
  2533. /*
  2534. * NV_CTRL_3D_VISION_PRO_GLASSES_BATTERY_LEVEL - Returns the
  2535. * battery level(in percentage) of the glasses.
  2536. * Use the display_mask parameter to specify the glasses id.
  2537. */
  2538. #define NV_CTRL_3D_VISION_PRO_GLASSES_BATTERY_LEVEL 380 /* R--T */
  2539. /*
  2540. * NV_CTRL_GVO_ANC_PARITY_COMPUTATION - Controls the SDI device's computation
  2541. * of the parity bit (bit 8) for ANC data words.
  2542. */
  2543. #define NV_CTRL_GVO_ANC_PARITY_COMPUTATION 381 /* RW--- */
  2544. #define NV_CTRL_GVO_ANC_PARITY_COMPUTATION_AUTO 0
  2545. #define NV_CTRL_GVO_ANC_PARITY_COMPUTATION_ON 1
  2546. #define NV_CTRL_GVO_ANC_PARITY_COMPUTATION_OFF 2
  2547. /*
  2548. * NV_CTRL_3D_VISION_PRO_GLASSES_PAIR_EVENT - This attribute is sent
  2549. * as an event when glasses get paired in response to pair command
  2550. * from any of the clients.
  2551. */
  2552. #define NV_CTRL_3D_VISION_PRO_GLASSES_PAIR_EVENT 382 /* ---T */
  2553. /*
  2554. * NV_CTRL_3D_VISION_PRO_GLASSES_UNPAIR_EVENT - This attribute is sent
  2555. * as an event when glasses get unpaired in response to unpair command
  2556. * from any of the clients.
  2557. */
  2558. #define NV_CTRL_3D_VISION_PRO_GLASSES_UNPAIR_EVENT 383 /* ---T */
  2559. /*
  2560. * NV_CTRL_GPU_PCIE_CURRENT_LINK_WIDTH - returns the current
  2561. * PCIe link width, in number of lanes.
  2562. */
  2563. #define NV_CTRL_GPU_PCIE_CURRENT_LINK_WIDTH 384 /* R--GI */
  2564. /*
  2565. * NV_CTRL_GPU_PCIE_CURRENT_LINK_SPEED - returns the current
  2566. * PCIe link speed, in megatransfers per second (GT/s).
  2567. */
  2568. #define NV_CTRL_GPU_PCIE_CURRENT_LINK_SPEED 385 /* R--GI */
  2569. /*
  2570. * NV_CTRL_GVO_AUDIO_BLANKING - specifies whether the GVO device should delete
  2571. * audio ancillary data packets when frames are repeated.
  2572. *
  2573. * When a new frame is not ready in time, the current frame, including all
  2574. * ancillary data packets, is repeated. When this data includes audio packets,
  2575. * this can result in stutters or clicks. When this option is enabled, the GVO
  2576. * device will detect when frames are repeated, identify audio ancillary data
  2577. * packets, and mark them for deletion.
  2578. *
  2579. * This option is applied when the GVO device is bound.
  2580. */
  2581. #define NV_CTRL_GVO_AUDIO_BLANKING 386 /* RW- */
  2582. #define NV_CTRL_GVO_AUDIO_BLANKING_DISABLE 0
  2583. #define NV_CTRL_GVO_AUDIO_BLANKING_ENABLE 1
  2584. /*
  2585. * NV_CTRL_CURRENT_METAMODE_ID - switch modes to the MetaMode with
  2586. * the specified ID.
  2587. */
  2588. #define NV_CTRL_CURRENT_METAMODE_ID 387 /* RW- */
  2589. /*
  2590. * NV_CTRL_DISPLAY_ENABLED - Returns whether or not the display device
  2591. * is currently enabled.
  2592. */
  2593. #define NV_CTRL_DISPLAY_ENABLED 388 /* R-D */
  2594. #define NV_CTRL_DISPLAY_ENABLED_TRUE 1
  2595. #define NV_CTRL_DISPLAY_ENABLED_FALSE 0
  2596. #define NV_CTRL_LAST_ATTRIBUTE NV_CTRL_DISPLAY_ENABLED
  2597. /**************************************************************************/
  2598. /*
  2599. * String Attributes:
  2600. *
  2601. * String attributes can be queryied through the XNVCTRLQueryStringAttribute()
  2602. * and XNVCTRLQueryTargetStringAttribute() function calls.
  2603. *
  2604. * String attributes can be set through the XNVCTRLSetStringAttribute()
  2605. * function call. (There are currently no string attributes that can be
  2606. * set on non-X Screen targets.)
  2607. *
  2608. * Unless otherwise noted, all string attributes can be queried/set using an
  2609. * NV_CTRL_TARGET_TYPE_X_SCREEN target. Attributes that cannot take an
  2610. * NV_CTRL_TARGET_TYPE_X_SCREEN target also cannot be queried/set through
  2611. * XNVCTRLQueryStringAttribute()/XNVCTRLSetStringAttribute() (Since
  2612. * these assume an X Screen target).
  2613. */
  2614. /*
  2615. * NV_CTRL_STRING_PRODUCT_NAME - the GPU product name on which the
  2616. * specified X screen is running.
  2617. *
  2618. * This attribute may be queried through XNVCTRLQueryTargetStringAttribute()
  2619. * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
  2620. */
  2621. #define NV_CTRL_STRING_PRODUCT_NAME 0 /* R--G */
  2622. /*
  2623. * NV_CTRL_STRING_VBIOS_VERSION - the video bios version on the GPU on
  2624. * which the specified X screen is running.
  2625. */
  2626. #define NV_CTRL_STRING_VBIOS_VERSION 1 /* R--G */
  2627. /*
  2628. * NV_CTRL_STRING_NVIDIA_DRIVER_VERSION - string representation of the
  2629. * NVIDIA driver version number for the NVIDIA X driver in use.
  2630. */
  2631. #define NV_CTRL_STRING_NVIDIA_DRIVER_VERSION 3 /* R--G */
  2632. /*
  2633. * NV_CTRL_STRING_DISPLAY_DEVICE_NAME - name of the display device
  2634. * specified in the display_mask argument.
  2635. *
  2636. * This attribute may be queried through XNVCTRLQueryTargetStringAttribute()
  2637. * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
  2638. */
  2639. #define NV_CTRL_STRING_DISPLAY_DEVICE_NAME 4 /* R-DG */
  2640. /*
  2641. * NV_CTRL_STRING_TV_ENCODER_NAME - name of the TV encoder used by the
  2642. * specified display device; only valid if the display device is a TV.
  2643. */
  2644. #define NV_CTRL_STRING_TV_ENCODER_NAME 5 /* R-DG */
  2645. /*
  2646. * NV_CTRL_STRING_GVIO_FIRMWARE_VERSION - indicates the version of the
  2647. * Firmware on the GVIO device.
  2648. */
  2649. #define NV_CTRL_STRING_GVIO_FIRMWARE_VERSION 8 /* R--I */
  2650. /*
  2651. * The following is deprecated; use NV_CTRL_STRING_GVIO_FIRMWARE_VERSION,
  2652. * instead
  2653. */
  2654. #define NV_CTRL_STRING_GVO_FIRMWARE_VERSION 8 /* R-- */
  2655. /*
  2656. * NV_CTRL_STRING_CURRENT_MODELINE - Return the ModeLine currently
  2657. * being used by the specified display device.
  2658. *
  2659. * This attribute may be queried through XNVCTRLQueryTargetStringAttribute()
  2660. * using an NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
  2661. *
  2662. * The ModeLine string may be prepended with a comma-separated list of
  2663. * "token=value" pairs, separated from the ModeLine string by "::".
  2664. * This "token=value" syntax is the same as that used in
  2665. * NV_CTRL_BINARY_DATA_MODELINES
  2666. */
  2667. #define NV_CTRL_STRING_CURRENT_MODELINE 9 /* R-DG */
  2668. /*
  2669. * NV_CTRL_STRING_ADD_MODELINE - Adds a ModeLine to the specified
  2670. * display device. The ModeLine is not added if validation fails.
  2671. *
  2672. * The ModeLine string should have the same syntax as a ModeLine in
  2673. * the X configuration file; e.g.,
  2674. *
  2675. * "1600x1200" 229.5 1600 1664 1856 2160 1200 1201 1204 1250 +HSync +VSync
  2676. */
  2677. #define NV_CTRL_STRING_ADD_MODELINE 10 /* -WDG */
  2678. /*
  2679. * NV_CTRL_STRING_DELETE_MODELINE - Deletes an existing ModeLine
  2680. * from the specified display device. The currently selected
  2681. * ModeLine cannot be deleted. (This also means you cannot delete
  2682. * the last ModeLine.)
  2683. *
  2684. * The ModeLine string should have the same syntax as a ModeLine in
  2685. * the X configuration file; e.g.,
  2686. *
  2687. * "1600x1200" 229.5 1600 1664 1856 2160 1200 1201 1204 1250 +HSync +VSync
  2688. */
  2689. #define NV_CTRL_STRING_DELETE_MODELINE 11 /* -WDG */
  2690. /*
  2691. * NV_CTRL_STRING_CURRENT_METAMODE - Returns the metamode currently
  2692. * being used by the specified X screen. The MetaMode string has the
  2693. * same syntax as the MetaMode X configuration option, as documented
  2694. * in the NVIDIA driver README.
  2695. *
  2696. * The returned string may be prepended with a comma-separated list of
  2697. * "token=value" pairs, separated from the MetaMode string by "::".
  2698. * This "token=value" syntax is the same as that used in
  2699. * NV_CTRL_BINARY_DATA_METAMODES.
  2700. */
  2701. #define NV_CTRL_STRING_CURRENT_METAMODE 12 /* RW-- */
  2702. #define NV_CTRL_STRING_CURRENT_METAMODE_VERSION_1 \
  2703. NV_CTRL_STRING_CURRENT_METAMODE
  2704. /*
  2705. * NV_CTRL_STRING_ADD_METAMODE - Adds a MetaMode to the specified
  2706. * X Screen.
  2707. *
  2708. * It is recommended to not use this attribute, but instead use
  2709. * NV_CTRL_STRING_OPERATION_ADD_METAMODE.
  2710. */
  2711. #define NV_CTRL_STRING_ADD_METAMODE 13 /* -W-- */
  2712. /*
  2713. * NV_CTRL_STRING_DELETE_METAMODE - Deletes an existing MetaMode from
  2714. * the specified X Screen. The currently selected MetaMode cannot be
  2715. * deleted. (This also means you cannot delete the last MetaMode).
  2716. * The MetaMode string should have the same syntax as the MetaMode X
  2717. * configuration option, as documented in the NVIDIA driver README.
  2718. */
  2719. #define NV_CTRL_STRING_DELETE_METAMODE 14 /* -WD-- */
  2720. /*
  2721. * NV_CTRL_STRING_VCSC_PRODUCT_NAME - Querys the product name of the
  2722. * VCSC device.
  2723. *
  2724. * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
  2725. * using a NV_CTRL_TARGET_TYPE_VCSC target.
  2726. */
  2727. #define NV_CTRL_STRING_VCSC_PRODUCT_NAME 15 /* R---V */
  2728. /*
  2729. * NV_CTRL_STRING_VCSC_PRODUCT_ID - Querys the product ID of the VCSC device.
  2730. *
  2731. * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
  2732. * using a NV_CTRL_TARGET_TYPE_VCSC target.
  2733. */
  2734. #define NV_CTRL_STRING_VCSC_PRODUCT_ID 16 /* R---V */
  2735. /*
  2736. * NV_CTRL_STRING_VCSC_SERIAL_NUMBER - Querys the unique serial number
  2737. * of the VCS device.
  2738. *
  2739. * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
  2740. * using a NV_CTRL_TARGET_TYPE_VCSC target.
  2741. */
  2742. #define NV_CTRL_STRING_VCSC_SERIAL_NUMBER 17 /* R---V */
  2743. /*
  2744. * NV_CTRL_STRING_VCSC_BUILD_DATE - Querys the date of the VCS device.
  2745. * the returned string is in the following format: "Week.Year"
  2746. *
  2747. * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
  2748. * using a NV_CTRL_TARGET_TYPE_VCSC target.
  2749. */
  2750. #define NV_CTRL_STRING_VCSC_BUILD_DATE 18 /* R---V */
  2751. /*
  2752. * NV_CTRL_STRING_VCSC_FIRMWARE_VERSION - Querys the firmware version
  2753. * of the VCS device.
  2754. *
  2755. * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
  2756. * using a NV_CTRL_TARGET_TYPE_VCSC target.
  2757. */
  2758. #define NV_CTRL_STRING_VCSC_FIRMWARE_VERSION 19 /* R---V */
  2759. /*
  2760. * NV_CTRL_STRING_VCSC_FIRMWARE_REVISION - Querys the firmware revision
  2761. * of the VCS device.
  2762. *
  2763. * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
  2764. * using a NV_CTRL_TARGET_TYPE_VCS target.
  2765. */
  2766. #define NV_CTRL_STRING_VCSC_FIRMWARE_REVISION 20 /* R---V */
  2767. /*
  2768. * NV_CTRL_STRING_VCSC_HARDWARE_VERSION - Querys the hardware version
  2769. * of the VCS device.
  2770. *
  2771. * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
  2772. * using a NV_CTRL_TARGET_TYPE_VCSC target.
  2773. */
  2774. #define NV_CTRL_STRING_VCSC_HARDWARE_VERSION 21 /* R---V */
  2775. /*
  2776. * NV_CTRL_STRING_VCSC_HARDWARE_REVISION - Querys the hardware revision
  2777. * of the VCS device.
  2778. *
  2779. * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
  2780. * using a NV_CTRL_TARGET_TYPE_VCSC target.
  2781. */
  2782. #define NV_CTRL_STRING_VCSC_HARDWARE_REVISION 22 /* R---V */
  2783. /*
  2784. * NV_CTRL_STRING_MOVE_METAMODE - Moves a MetaMode to the specified
  2785. * index location. The MetaMode must already exist in the X Screen's
  2786. * list of MetaModes (as returned by the NV_CTRL_BINARY_DATA_METAMODES
  2787. * attribute). If the index is larger than the number of MetaModes in
  2788. * the list, the MetaMode is moved to the end of the list. The
  2789. * MetaMode string should have the same syntax as the MetaMode X
  2790. * configuration option, as documented in the NVIDIA driver README.
  2791. * The MetaMode string must be prepended with a comma-separated list
  2792. * of "token=value" pairs, separated from the MetaMode string by "::".
  2793. * Currently, the only valid token is "index", which indicates where
  2794. * in the MetaMode list the MetaMode should be moved to.
  2795. *
  2796. * Other tokens may be added in the future.
  2797. *
  2798. * E.g.,
  2799. * "index=5 :: CRT-0: 1024x768 @1024x768 +0+0"
  2800. */
  2801. #define NV_CTRL_STRING_MOVE_METAMODE 23 /* -W-- */
  2802. /*
  2803. * NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES - returns the valid
  2804. * horizontal sync ranges used to perform mode validation for the
  2805. * specified display device. The ranges are in the same format as the
  2806. * "HorizSync" X config option:
  2807. *
  2808. * "horizsync-range may be a comma separated list of either discrete
  2809. * values or ranges of values. A range of values is two values
  2810. * separated by a dash."
  2811. *
  2812. * The values are in kHz.
  2813. *
  2814. * Additionally, the string may be prepended with a comma-separated
  2815. * list of "token=value" pairs, separated from the HorizSync string by
  2816. * "::". Valid tokens:
  2817. *
  2818. * Token Value
  2819. * "source" "edid" - HorizSync is from the display device's EDID
  2820. * "xconfig" - HorizSync is from the "HorizSync" entry in
  2821. * the Monitor section of the X config file
  2822. * "option" - HorizSync is from the "HorizSync" NVIDIA X
  2823. * config option
  2824. * "twinview" - HorizSync is from the "SecondMonitorHorizSync"
  2825. * NVIDIA X config option
  2826. * "builtin" - HorizSync is from NVIDIA X driver builtin
  2827. * default values
  2828. *
  2829. * Additional tokens and/or values may be added in the future.
  2830. *
  2831. * Example: "source=edid :: 30.000-62.000"
  2832. */
  2833. #define NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES 24 /* R-DG */
  2834. /*
  2835. * NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES - returns the valid
  2836. * vertical refresh ranges used to perform mode validation for the
  2837. * specified display device. The ranges are in the same format as the
  2838. * "VertRefresh" X config option:
  2839. *
  2840. * "vertrefresh-range may be a comma separated list of either discrete
  2841. * values or ranges of values. A range of values is two values
  2842. * separated by a dash."
  2843. *
  2844. * The values are in Hz.
  2845. *
  2846. * Additionally, the string may be prepended with a comma-separated
  2847. * list of "token=value" pairs, separated from the VertRefresh string by
  2848. * "::". Valid tokens:
  2849. *
  2850. * Token Value
  2851. * "source" "edid" - VertRefresh is from the display device's EDID
  2852. * "xconfig" - VertRefresh is from the "VertRefresh" entry in
  2853. * the Monitor section of the X config file
  2854. * "option" - VertRefresh is from the "VertRefresh" NVIDIA X
  2855. * config option
  2856. * "twinview" - VertRefresh is from the "SecondMonitorVertRefresh"
  2857. * NVIDIA X config option
  2858. * "builtin" - VertRefresh is from NVIDIA X driver builtin
  2859. * default values
  2860. *
  2861. * Additional tokens and/or values may be added in the future.
  2862. *
  2863. * Example: "source=edid :: 50.000-75.000"
  2864. */
  2865. #define NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES 25 /* R-DG */
  2866. /*
  2867. * NV_CTRL_STRING_XINERAMA_SCREEN_INFO - returns the physical X Screen's
  2868. * initial position and size (in absolute coordinates) within the Xinerama
  2869. * desktop as the "token=value" string: "x=#, y=#, width=#, height=#"
  2870. *
  2871. * Querying this attribute returns FALSE if NV_CTRL_XINERAMA is not
  2872. * NV_CTRL_XINERAMA_ON.
  2873. */
  2874. #define NV_CTRL_STRING_XINERAMA_SCREEN_INFO 26 /* R--- */
  2875. /*
  2876. * NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER - used to specify the
  2877. * order that display devices will be returned via Xinerama when
  2878. * nvidiaXineramaInfo is enabled. Follows the same syntax as the
  2879. * nvidiaXineramaInfoOrder X config option.
  2880. */
  2881. #define NV_CTRL_STRING_NVIDIA_XINERAMA_INFO_ORDER 27 /* RW-- */
  2882. #define NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER \
  2883. NV_CTRL_STRING_NVIDIA_XINERAMA_INFO_ORDER /* for backwards compatibility: */
  2884. /*
  2885. * NV_CTRL_STRING_SLI_MODE - returns a string describing the current
  2886. * SLI mode, if any, or FALSE if SLI is not currently enabled.
  2887. *
  2888. * This string should be used for informational purposes only, and
  2889. * should not be used to distinguish between SLI modes, other than to
  2890. * recognize when SLI is disabled (FALSE is returned) or
  2891. * enabled (the returned string is non-NULL and describes the current
  2892. * SLI configuration).
  2893. */
  2894. #define NV_CTRL_STRING_SLI_MODE 28 /* R---*/
  2895. /*
  2896. * NV_CTRL_STRING_PERFORMANCE_MODES - returns a string with all the
  2897. * performance modes defined for this GPU along with their associated
  2898. * NV Clock and Memory Clock values.
  2899. *
  2900. * Each performance modes are returned as a comma-separated list of
  2901. * "token=value" pairs. Each set of performance mode tokens are separated
  2902. * by a ";". Valid tokens:
  2903. *
  2904. * Token Value
  2905. * "perf" integer - the Performance level
  2906. * "nvclock" integer - the GPU clocks (in MHz) for the perf level
  2907. * "memclock" integer - the memory clocks (in MHz) for the perf level
  2908. *
  2909. *
  2910. * Example:
  2911. *
  2912. * perf=0, nvclock=500, memclock=505 ; perf=1, nvclock=650, memclock=505
  2913. *
  2914. * This attribute may be queried through XNVCTRLQueryTargetStringAttribute()
  2915. * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
  2916. */
  2917. #define NV_CTRL_STRING_PERFORMANCE_MODES 29 /* R--G */
  2918. /*
  2919. * NV_CTRL_STRING_VCSC_FAN_STATUS - returns a string with status of all the
  2920. * fans in the Visual Computing System, if such a query is supported. Fan
  2921. * information is reported along with its tachometer reading (in RPM) and a
  2922. * flag indicating whether the fan has failed or not.
  2923. *
  2924. * Valid tokens:
  2925. *
  2926. * Token Value
  2927. * "fan" integer - the Fan index
  2928. * "speed" integer - the tachometer reading of the fan in rpm
  2929. * "fail" integer - flag to indicate whether the fan has failed
  2930. *
  2931. * Example:
  2932. *
  2933. * fan=0, speed=694, fail=0 ; fan=1, speed=693, fail=0
  2934. *
  2935. * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
  2936. * using a NV_CTRL_TARGET_TYPE_VCSC target.
  2937. *
  2938. */
  2939. #define NV_CTRL_STRING_VCSC_FAN_STATUS 30 /* R---V */
  2940. /*
  2941. * NV_CTRL_STRING_VCSC_TEMPERATURES - returns a string with all Temperature
  2942. * readings in the Visual Computing System, if such a query is supported.
  2943. * Intake, Exhaust and Board Temperature values are reported in Celcius.
  2944. *
  2945. * Valid tokens:
  2946. *
  2947. * Token Value
  2948. * "intake" integer - the intake temperature for the VCS
  2949. * "exhaust" integer - the exhaust temperature for the VCS
  2950. * "board" integer - the board temperature of the VCS
  2951. *
  2952. * Example:
  2953. *
  2954. * intake=29, exhaust=46, board=41
  2955. *
  2956. * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
  2957. * using a NV_CTRL_TARGET_TYPE_VCSC target.
  2958. *
  2959. */
  2960. #define NV_CTRL_STRING_VCSC_TEMPERATURES 31 /* R---V */
  2961. /*
  2962. * NV_CTRL_STRING_VCSC_PSU_INFO - returns a string with all Power Supply Unit
  2963. * related readings in the Visual Computing System, if such a query is
  2964. * supported. Current in amperes, Power in watts, Voltage in volts and PSU
  2965. * state may be reported. Not all PSU types support all of these values, and
  2966. * therefore some readings may be unknown.
  2967. *
  2968. * Valid tokens:
  2969. *
  2970. * Token Value
  2971. * "current" integer - the current drawn in amperes by the VCS
  2972. * "power" integer - the power drawn in watts by the VCS
  2973. * "voltage" integer - the voltage reading of the VCS
  2974. * "state" integer - flag to indicate whether PSU is operating normally
  2975. *
  2976. * Example:
  2977. *
  2978. * current=10, power=15, voltage=unknown, state=normal
  2979. *
  2980. * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
  2981. * using a NV_CTRL_TARGET_TYPE_VCSC target.
  2982. *
  2983. */
  2984. #define NV_CTRL_STRING_VCSC_PSU_INFO 32 /* R---V */
  2985. /*
  2986. * NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME - query the name for the specified
  2987. * NV_CTRL_GVIO_VIDEO_FORMAT_*. So that this can be queried with existing
  2988. * interfaces, XNVCTRLQueryStringAttribute() should be used, and the video
  2989. * format specified in the display_mask field; eg:
  2990. *
  2991. * XNVCTRLQueryStringAttribute(dpy,
  2992. * screen,
  2993. * NV_CTRL_GVIO_VIDEO_FORMAT_720P_60_00_SMPTE296,
  2994. * NV_CTRL_GVIO_VIDEO_FORMAT_NAME,
  2995. * &name);
  2996. */
  2997. #define NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME 33 /* R--GI */
  2998. /*
  2999. * The following is deprecated; use NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME,
  3000. * instead
  3001. */
  3002. #define NV_CTRL_STRING_GVO_VIDEO_FORMAT_NAME 33 /* R--- */
  3003. /*
  3004. * NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS - returns a string with the
  3005. * associated NV Clock, Memory Clock and Processor Clock values.
  3006. *
  3007. * Current valid tokens are "nvclock", "memclock", and "processorclock".
  3008. * Not all tokens will be reported on all GPUs, and additional tokens
  3009. * may be added in the future.
  3010. *
  3011. * Clock values are returned as a comma-separated list of
  3012. * "token=value" pairs.
  3013. * Valid tokens:
  3014. *
  3015. * Token Value
  3016. * "nvclock" integer - the GPU clocks (in MHz) for the current
  3017. * perf level
  3018. * "memclock" integer - the memory clocks (in MHz) for the current
  3019. * perf level
  3020. * "processorclock" integer - the processor clocks (in MHz) for the perf level
  3021. *
  3022. *
  3023. * Example:
  3024. *
  3025. * nvclock=459, memclock=400, processorclock=918
  3026. *
  3027. * This attribute may be queried through XNVCTRLQueryTargetStringAttribute()
  3028. * using an NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
  3029. */
  3030. #define NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS 34 /* RW-G */
  3031. /*
  3032. * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_HARDWARE_REVISION - Returns the
  3033. * hardware revision of the 3D Vision Pro transceiver.
  3034. */
  3035. #define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_HARDWARE_REVISION 35 /* R--T */
  3036. /*
  3037. * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_A - Returns the
  3038. * firmware version of chip A of the 3D Vision Pro transceiver.
  3039. */
  3040. #define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_A 36 /* R--T */
  3041. /*
  3042. * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_A - Returns the
  3043. * date of the firmware of chip A of the 3D Vision Pro transceiver.
  3044. */
  3045. #define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_A 37 /* R--T */
  3046. /*
  3047. * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_B - Returns the
  3048. * firmware version of chip B of the 3D Vision Pro transceiver.
  3049. */
  3050. #define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_B 38 /* R--T */
  3051. /*
  3052. * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_B - Returns the
  3053. * date of the firmware of chip B of the 3D Vision Pro transceiver.
  3054. */
  3055. #define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_B 39 /* R--T */
  3056. /*
  3057. * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_ADDRESS - Returns the RF address
  3058. * of the 3D Vision Pro transceiver.
  3059. */
  3060. #define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_ADDRESS 40 /* R--T */
  3061. /*
  3062. * NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_VERSION_A - Returns the
  3063. * firmware version of chip A of the glasses.
  3064. * Use the display_mask parameter to specify the glasses id.
  3065. */
  3066. #define NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_VERSION_A 41 /* R--T */
  3067. /*
  3068. * NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_DATE_A - Returns the
  3069. * date of the firmware of chip A of the glasses.
  3070. * Use the display_mask parameter to specify the glasses id.
  3071. */
  3072. #define NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_DATE_A 42 /* R--T */
  3073. /*
  3074. * NV_CTRL_STRING_3D_VISION_PRO_GLASSES_ADDRESS - Returns the RF address
  3075. * of the glasses.
  3076. * Use the display_mask parameter to specify the glasses id.
  3077. */
  3078. #define NV_CTRL_STRING_3D_VISION_PRO_GLASSES_ADDRESS 43 /* R--T */
  3079. /*
  3080. * NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME - Controls the name the
  3081. * glasses should use.
  3082. * Use the display_mask parameter to specify the glasses id.
  3083. * Glasses' name should start and end with an alpha-numeric character.
  3084. */
  3085. #define NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME 44 /* RW-T */
  3086. /*
  3087. * NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2 - Returns the metamode currently
  3088. * being used by the specified X screen. The MetaMode string has the same
  3089. * syntax as the MetaMode X configuration option, as documented in the NVIDIA
  3090. * driver README. Also, see NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 for more
  3091. * details on the base syntax.
  3092. *
  3093. * The returned string may also be prepended with a comma-separated list of
  3094. * "token=value" pairs, separated from the MetaMode string by "::".
  3095. */
  3096. #define NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2 45 /* RW-- */
  3097. /*
  3098. * NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME - Returns a type name for the
  3099. * display device ("CRT", "DFP", or "TV"). However, note that the determination
  3100. * of the name is based on the protocol through which the X driver communicates
  3101. * to the display device. E.g., if the driver communicates using VGA ,then the
  3102. * basename is "CRT"; if the driver communicates using TMDS, LVDS, or DP, then
  3103. * the name is "DFP".
  3104. */
  3105. #define NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME 46 /* R-D- */
  3106. /*
  3107. * NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID - Returns the type-based name + ID for
  3108. * the display device, e.g. "CRT-0", "DFP-1", "TV-2". If this device is a
  3109. * DisplayPort 1.2 device, then this name will also be prepended with the
  3110. * device's port address like so: "DFP-1.0.1.2.3". See
  3111. * NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME for more information about the
  3112. * construction of type-based names.
  3113. */
  3114. #define NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID 47 /* R-D- */
  3115. /*
  3116. * NV_CTRL_STRING_DISPLAY_NAME_DP_GUID - Returns the GUID of the DisplayPort
  3117. * display device. e.g. "DP-GUID-f16a5bde-79f3-11e1-b2ae-8b5a8969ba9c"
  3118. *
  3119. * The display device must be a DisplayPort 1.2 device.
  3120. */
  3121. #define NV_CTRL_STRING_DISPLAY_NAME_DP_GUID 48 /* R-D- */
  3122. /*
  3123. * NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH - Returns the SHA-1 hash of the
  3124. * display device's EDID in 8-4-4-4-12 UID format. e.g.
  3125. * "DPY-EDID-f16a5bde-79f3-11e1-b2ae-8b5a8969ba9c"
  3126. *
  3127. * The display device must have a valid EDID.
  3128. */
  3129. #define NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH 49 /* R-D- */
  3130. /*
  3131. * NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX - Returns the current NV-CONTROL
  3132. * target ID (name) of the display device. e.g. "DPY-1", "DPY-4"
  3133. *
  3134. * This name for the display device is not guarenteed to be the same between
  3135. * different runs of the X server.
  3136. */
  3137. #define NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX 50 /* R-D- */
  3138. /*
  3139. * NV_CTRL_STRING_DISPLAY_NAME_RANDR - Returns the RandR output name for the
  3140. * display device. e.g. "VGA-1", "DVI-I-0", "DVI-D-3", "LVDS-1", "DP-2",
  3141. * "HDMI-3", "eDP-6". This name should match If this device is a DisplayPort
  3142. * 1.2 device, then this name will also be prepended with the device's port
  3143. * address like so: "DVI-I-3.0.1.2.3"
  3144. */
  3145. #define NV_CTRL_STRING_DISPLAY_NAME_RANDR 51 /* R-D- */
  3146. #define NV_CTRL_STRING_LAST_ATTRIBUTE \
  3147. NV_CTRL_STRING_DISPLAY_NAME_RANDR
  3148. /**************************************************************************/
  3149. /*
  3150. * Binary Data Attributes:
  3151. *
  3152. * Binary data attributes can be queryied through the XNVCTRLQueryBinaryData()
  3153. * and XNVCTRLQueryTargetBinaryData() function calls.
  3154. *
  3155. * There are currently no binary data attributes that can be set.
  3156. *
  3157. * Unless otherwise noted, all Binary data attributes can be queried
  3158. * using an NV_CTRL_TARGET_TYPE_X_SCREEN target. Attributes that cannot take
  3159. * an NV_CTRL_TARGET_TYPE_X_SCREEN target also cannot be queried through
  3160. * XNVCTRLQueryBinaryData() (Since an X Screen target is assumed).
  3161. */
  3162. /*
  3163. * NV_CTRL_BINARY_DATA_EDID - Returns a display device's EDID information
  3164. * data.
  3165. *
  3166. * This attribute may be queried through XNVCTRLQueryTargetBinaryData()
  3167. * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
  3168. */
  3169. #define NV_CTRL_BINARY_DATA_EDID 0 /* R-DG */
  3170. /*
  3171. * NV_CTRL_BINARY_DATA_MODELINES - Returns a display device's supported
  3172. * ModeLines. ModeLines are returned in a buffer, separated by a single
  3173. * '\0' and terminated by two consecutive '\0' s like so:
  3174. *
  3175. * "ModeLine 1\0ModeLine 2\0ModeLine 3\0Last ModeLine\0\0"
  3176. *
  3177. * This attribute may be queried through XNVCTRLQueryTargetBinaryData()
  3178. * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
  3179. *
  3180. * Each ModeLine string may be prepended with a comma-separated list
  3181. * of "token=value" pairs, separated from the ModeLine string with a
  3182. * "::". Valid tokens:
  3183. *
  3184. * Token Value
  3185. * "source" "xserver" - the ModeLine is from the core X server
  3186. * "xconfig" - the ModeLine was specified in the X config file
  3187. * "builtin" - the NVIDIA driver provided this builtin ModeLine
  3188. * "vesa" - this is a VESA standard ModeLine
  3189. * "edid" - the ModeLine was in the display device's EDID
  3190. * "nv-control" - the ModeLine was specified via NV-CONTROL
  3191. *
  3192. * "xconfig-name" - for ModeLines that were specified in the X config
  3193. * file, this is the name the X config file
  3194. * gave for the ModeLine.
  3195. *
  3196. * Note that a ModeLine can have several sources; the "source" token
  3197. * can appear multiple times in the "token=value" pairs list.
  3198. * Additional source values may be specified in the future.
  3199. *
  3200. * Additional tokens may be added in the future, so it is recommended
  3201. * that any token parser processing the returned string from
  3202. * NV_CTRL_BINARY_DATA_MODELINES be implemented to gracefully ignore
  3203. * unrecognized tokens.
  3204. *
  3205. * E.g.,
  3206. *
  3207. * "source=xserver, source=vesa, source=edid :: "1024x768_70" 75.0 1024 1048 1184 1328 768 771 777 806 -HSync -VSync"
  3208. * "source=xconfig, xconfig-name=1600x1200_60.00 :: "1600x1200_60_0" 161.0 1600 1704 1880 2160 1200 1201 1204 1242 -HSync +VSync"
  3209. */
  3210. #define NV_CTRL_BINARY_DATA_MODELINES 1 /* R-DG */
  3211. /*
  3212. * NV_CTRL_BINARY_DATA_METAMODES - Returns an X Screen's supported
  3213. * MetaModes. MetaModes are returned in a buffer separated by a
  3214. * single '\0' and terminated by two consecutive '\0' s like so:
  3215. *
  3216. * "MetaMode 1\0MetaMode 2\0MetaMode 3\0Last MetaMode\0\0"
  3217. *
  3218. * The MetaMode string should have the same syntax as the MetaMode X
  3219. * configuration option, as documented in the NVIDIA driver README.
  3220. * Each MetaMode string may be prepended with a comma-separated list
  3221. * of "token=value" pairs, separated from the MetaMode string with
  3222. * "::". Currently, valid tokens are:
  3223. *
  3224. * Token Value
  3225. * "id" <number> - the id of this MetaMode; this is stored in
  3226. * the Vertical Refresh field, as viewed
  3227. * by the XRandR and XF86VidMode X *
  3228. * extensions.
  3229. *
  3230. * "switchable" "yes"/"no" - whether this MetaMode may be switched to via
  3231. * ctrl-alt-+/-; Implicit MetaModes (see
  3232. * the "IncludeImplicitMetaModes" X
  3233. * config option), for example, are not
  3234. * normally made available through
  3235. * ctrl-alt-+/-.
  3236. *
  3237. * "source" "xconfig" - the MetaMode was specified in the X
  3238. * config file.
  3239. * "implicit" - the MetaMode was implicitly added; see the
  3240. * "IncludeImplicitMetaModes" X config option
  3241. * for details.
  3242. * "nv-control" - the MetaMode was added via the NV-CONTROL X
  3243. * extension to the currently running X server.
  3244. * "RandR" - the MetaMode was modified in response to an
  3245. * RandR RRSetCrtcConfig request.
  3246. *
  3247. * Additional tokens may be added in the future, so it is recommended
  3248. * that any token parser processing the returned string from
  3249. * NV_CTRL_BINARY_DATA_METAMODES be implemented to gracefully ignore
  3250. * unrecognized tokens.
  3251. *
  3252. * E.g.,
  3253. *
  3254. * "id=50, switchable=yes, source=xconfig :: CRT-0: 1024x768 @1024x768 +0+0"
  3255. */
  3256. #define NV_CTRL_BINARY_DATA_METAMODES 2 /* R-D- */
  3257. #define NV_CTRL_BINARY_DATA_METAMODES_VERSION_1 \
  3258. NV_CTRL_BINARY_DATA_METAMODES
  3259. /*
  3260. * NV_CTRL_BINARY_DATA_XSCREENS_USING_GPU - Returns the list of X
  3261. * screens currently driven by the given GPU.
  3262. *
  3263. * The format of the returned data is:
  3264. *
  3265. * 4 CARD32 number of screens
  3266. * 4 * n CARD32 screen indices
  3267. *
  3268. * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
  3269. * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be
  3270. * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN.
  3271. */
  3272. #define NV_CTRL_BINARY_DATA_XSCREENS_USING_GPU 3 /* R-DG */
  3273. /*
  3274. * NV_CTRL_BINARY_DATA_GPUS_USED_BY_XSCREEN - Returns the list of GPUs
  3275. * currently in use by the given X screen.
  3276. *
  3277. * The format of the returned data is:
  3278. *
  3279. * 4 CARD32 number of GPUs
  3280. * 4 * n CARD32 GPU indices
  3281. */
  3282. #define NV_CTRL_BINARY_DATA_GPUS_USED_BY_XSCREEN 4 /* R--- */
  3283. /*
  3284. * NV_CTRL_BINARY_DATA_GPUS_USING_FRAMELOCK - Returns the list of
  3285. * GPUs currently connected to the given frame lock board.
  3286. *
  3287. * The format of the returned data is:
  3288. *
  3289. * 4 CARD32 number of GPUs
  3290. * 4 * n CARD32 GPU indices
  3291. *
  3292. * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
  3293. * using a NV_CTRL_TARGET_TYPE_FRAMELOCK target. This attribute cannot be
  3294. * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN.
  3295. */
  3296. #define NV_CTRL_BINARY_DATA_GPUS_USING_FRAMELOCK 5 /* R-DF */
  3297. /*
  3298. * NV_CTRL_BINARY_DATA_DISPLAY_VIEWPORT - Returns the Display Device's
  3299. * viewport box into the given X Screen (in X Screen coordinates.)
  3300. *
  3301. * The format of the returned data is:
  3302. *
  3303. * 4 CARD32 Offset X
  3304. * 4 CARD32 Offset Y
  3305. * 4 CARD32 Width
  3306. * 4 CARD32 Height
  3307. */
  3308. #define NV_CTRL_BINARY_DATA_DISPLAY_VIEWPORT 6 /* R-DG */
  3309. /*
  3310. * NV_CTRL_BINARY_DATA_FRAMELOCKS_USED_BY_GPU - Returns the list of
  3311. * Framelock devices currently connected to the given GPU.
  3312. *
  3313. * The format of the returned data is:
  3314. *
  3315. * 4 CARD32 number of Framelocks
  3316. * 4 * n CARD32 Framelock indices
  3317. *
  3318. * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
  3319. * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be
  3320. * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN.
  3321. */
  3322. #define NV_CTRL_BINARY_DATA_FRAMELOCKS_USED_BY_GPU 7 /* R-DG */
  3323. /*
  3324. * NV_CTRL_BINARY_DATA_GPUS_USING_VCSC - Returns the list of
  3325. * GPU devices connected to the given VCS.
  3326. *
  3327. * The format of the returned data is:
  3328. *
  3329. * 4 CARD32 number of GPUs
  3330. * 4 * n CARD32 GPU indices
  3331. *
  3332. * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
  3333. * using a NV_CTRL_TARGET_TYPE_VCSC target. This attribute cannot be
  3334. * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN and cannot be queried using
  3335. * a NV_CTRL_TARGET_TYPE_X_GPU
  3336. */
  3337. #define NV_CTRL_BINARY_DATA_GPUS_USING_VCSC 8 /* R-DV */
  3338. /*
  3339. * NV_CTRL_BINARY_DATA_VCSCS_USED_BY_GPU - Returns the VCSC device
  3340. * that is controlling the given GPU.
  3341. *
  3342. * The format of the returned data is:
  3343. *
  3344. * 4 CARD32 number of VCS (always 1)
  3345. * 4 * n CARD32 VCS indices
  3346. *
  3347. * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
  3348. * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be
  3349. * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN
  3350. */
  3351. #define NV_CTRL_BINARY_DATA_VCSCS_USED_BY_GPU 9 /* R-DG */
  3352. /*
  3353. * NV_CTRL_BINARY_DATA_COOLERS_USED_BY_GPU - Returns the coolers that
  3354. * are cooling the given GPU.
  3355. *
  3356. * The format of the returned data is:
  3357. *
  3358. * 4 CARD32 number of COOLER
  3359. * 4 * n CARD32 COOLER indices
  3360. *
  3361. * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
  3362. * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be
  3363. * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN
  3364. */
  3365. #define NV_CTRL_BINARY_DATA_COOLERS_USED_BY_GPU 10 /* R-DG */
  3366. /*
  3367. * NV_CTRL_BINARY_DATA_GPUS_USED_BY_LOGICAL_XSCREEN - Returns the list of
  3368. * GPUs currently driving the given X screen. If Xinerama is enabled, this
  3369. * will return all GPUs that are driving any X screen.
  3370. *
  3371. * The format of the returned data is:
  3372. *
  3373. * 4 CARD32 number of GPUs
  3374. * 4 * n CARD32 GPU indices
  3375. */
  3376. #define NV_CTRL_BINARY_DATA_GPUS_USED_BY_LOGICAL_XSCREEN 11 /* R--- */
  3377. /*
  3378. * NV_CTRL_BINARY_DATA_THERMAL_SENSORS_USED_BY_GPU - Returns the sensors that
  3379. * are attached to the given GPU.
  3380. *
  3381. * The format of the returned data is:
  3382. *
  3383. * 4 CARD32 number of SENSOR
  3384. * 4 * n CARD32 SENSOR indices
  3385. *
  3386. * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
  3387. * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be
  3388. * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN
  3389. */
  3390. #define NV_CTRL_BINARY_DATA_THERMAL_SENSORS_USED_BY_GPU 12 /* R--G */
  3391. /*
  3392. * NV_CTRL_BINARY_DATA_GLASSES_PAIRED_TO_3D_VISION_PRO_TRANSCEIVER - Returns
  3393. * the id of the glasses that are currently paired to the given
  3394. * 3D Vision Pro transceiver.
  3395. *
  3396. * The format of the returned data is:
  3397. *
  3398. * 4 CARD32 number of glasses
  3399. * 4 * n CARD32 id of glasses
  3400. *
  3401. * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
  3402. * using a NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER target.
  3403. */
  3404. #define NV_CTRL_BINARY_DATA_GLASSES_PAIRED_TO_3D_VISION_PRO_TRANSCEIVER 13 /* R--T */
  3405. /*
  3406. * NV_CTRL_BINARY_DATA_DISPLAY_TARGETS - Returns all the display devices
  3407. * currently connected to any GPU on the X server.
  3408. *
  3409. * The format of the returned data is:
  3410. *
  3411. * 4 CARD32 number of display devices
  3412. * 4 * n CARD32 display device indices
  3413. *
  3414. * This attribute can only be queried through XNVCTRLQueryTargetBinaryData().
  3415. */
  3416. #define NV_CTRL_BINARY_DATA_DISPLAY_TARGETS 14 /* R--- */
  3417. /*
  3418. * NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU - Returns the list of
  3419. * display devices that are connected to the GPU target.
  3420. *
  3421. * The format of the returned data is:
  3422. *
  3423. * 4 CARD32 number of display devices
  3424. * 4 * n CARD32 display device indices
  3425. *
  3426. * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
  3427. * using a NV_CTRL_TARGET_TYPE_GPU target.
  3428. */
  3429. #define NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU 15 /* R--G */
  3430. /*
  3431. * NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 - Returns values similar to
  3432. * NV_CTRL_BINARY_DATA_METAMODES(_VERSION_1) but also returns extended syntax
  3433. * information to indicate a specific display device, as well as other per-
  3434. * display deviceflags as "token=value" pairs. For example:
  3435. *
  3436. * "DPY-1: 1280x1024 {Stereo=PassiveLeft},
  3437. * DPY-2: 1280x1024 {Stereo=PassiveRight},"
  3438. *
  3439. * The display device names have the form "DPY-%d", where the integer
  3440. * part of the name is the NV-CONTROL target ID for that display device
  3441. * for this instance of the X server. Note that display device NV-CONTROL
  3442. * target IDs are not guaranteed to be the same from one run of the X
  3443. * server to the next.
  3444. */
  3445. #define NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 16 /* R-D- */
  3446. /*
  3447. * NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN - Returns the list of
  3448. * display devices that are currently scanning out the X screen target.
  3449. *
  3450. * The format of the returned data is:
  3451. *
  3452. * 4 CARD32 number of display devices
  3453. * 4 * n CARD32 display device indices
  3454. *
  3455. * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
  3456. * using a NV_CTRL_TARGET_TYPE_X_SCREEN target.
  3457. */
  3458. #define NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN 17 /* R--- */
  3459. #define NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE \
  3460. NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN
  3461. /**************************************************************************/
  3462. /*
  3463. * String Operation Attributes:
  3464. *
  3465. * These attributes are used with the XNVCTRLStringOperation()
  3466. * function; a string is specified as input, and a string is returned
  3467. * as output.
  3468. *
  3469. * Unless otherwise noted, all attributes can be operated upon using
  3470. * an NV_CTRL_TARGET_TYPE_X_SCREEN target.
  3471. */
  3472. /*
  3473. * NV_CTRL_STRING_OPERATION_ADD_METAMODE - provide a MetaMode string
  3474. * as input, and returns a string containing comma-separated list of
  3475. * "token=value" pairs as output. Currently, the only output token is
  3476. * "id", which indicates the id that was assigned to the MetaMode.
  3477. *
  3478. * All ModeLines referenced in the MetaMode must already exist for
  3479. * each display device (as returned by the
  3480. * NV_CTRL_BINARY_DATA_MODELINES attribute).
  3481. *
  3482. * The MetaMode string should have the same syntax as the MetaMode X
  3483. * configuration option, as documented in the NVIDIA driver README.
  3484. *
  3485. * The input string can optionally be prepended with a string of
  3486. * comma-separated "token=value" pairs, separated from the MetaMode
  3487. * string by "::". Currently, the only valid token is "index" which
  3488. * indicates the insertion index for the MetaMode.
  3489. *
  3490. * E.g.,
  3491. *
  3492. * Input: "index=5 :: 1600x1200+0+0, 1600x1200+1600+0"
  3493. * Output: "id=58"
  3494. *
  3495. * which causes the MetaMode to be inserted at position 5 in the
  3496. * MetaMode list (all entries after 5 will be shifted down one slot in
  3497. * the list), and the X server's containing mode stores 58 as the
  3498. * VRefresh, so that the MetaMode can be uniquely identifed through
  3499. * XRandR and XF86VidMode.
  3500. */
  3501. #define NV_CTRL_STRING_OPERATION_ADD_METAMODE 0
  3502. /*
  3503. * NV_CTRL_STRING_OPERATION_GTF_MODELINE - provide as input a string
  3504. * of comma-separated "token=value" pairs, and returns a ModeLine
  3505. * string, computed using the GTF formula using the parameters from
  3506. * the input string. Valid tokens for the input string are "width",
  3507. * "height", and "refreshrate".
  3508. *
  3509. * E.g.,
  3510. *
  3511. * Input: "width=1600, height=1200, refreshrate=60"
  3512. * Output: "160.96 1600 1704 1880 2160 1200 1201 1204 1242 -HSync +VSync"
  3513. *
  3514. * This operation does not have any impact on any display device's
  3515. * modePool, and the ModeLine is not validated; it is simply intended
  3516. * for generating ModeLines.
  3517. */
  3518. #define NV_CTRL_STRING_OPERATION_GTF_MODELINE 1
  3519. /*
  3520. * NV_CTRL_STRING_OPERATION_CVT_MODELINE - provide as input a string
  3521. * of comma-separated "token=value" pairs, and returns a ModeLine
  3522. * string, computed using the CVT formula using the parameters from
  3523. * the input string. Valid tokens for the input string are "width",
  3524. * "height", "refreshrate", and "reduced-blanking". The
  3525. * "reduced-blanking" argument can be "0" or "1", to enable or disable
  3526. * use of reduced blanking for the CVT formula.
  3527. *
  3528. * E.g.,
  3529. *
  3530. * Input: "width=1600, height=1200, refreshrate=60, reduced-blanking=1"
  3531. * Output: "130.25 1600 1648 1680 1760 1200 1203 1207 1235 +HSync -VSync"
  3532. *
  3533. * This operation does not have any impact on any display device's
  3534. * modePool, and the ModeLine is not validated; it is simply intended
  3535. * for generating ModeLines.
  3536. */
  3537. #define NV_CTRL_STRING_OPERATION_CVT_MODELINE 2
  3538. /*
  3539. * NV_CTRL_STRING_OPERATION_BUILD_MODEPOOL - build a ModePool for the
  3540. * specified display device on the specified target (either an X
  3541. * screen or a GPU). This is typically used to generate a ModePool
  3542. * for a display device on a GPU on which no X screens are present.
  3543. *
  3544. * Currently, a display device's ModePool is static for the life of
  3545. * the X server, so XNVCTRLStringOperation will return FALSE if
  3546. * requested to build a ModePool on a display device that already has
  3547. * a ModePool.
  3548. *
  3549. * The string input to BUILD_MODEPOOL may be NULL. If it is not NULL,
  3550. * then it is interpreted as a double-colon ("::") separated list
  3551. * of "option=value" pairs, where the options and the syntax of their
  3552. * values are the X configuration options that impact the behavior of
  3553. * modePool construction; namely:
  3554. *
  3555. * "ModeValidation"
  3556. * "HorizSync"
  3557. * "VertRefresh"
  3558. * "FlatPanelProperties"
  3559. * "TVStandard"
  3560. * "ExactModeTimingsDVI"
  3561. * "UseEdidFreqs"
  3562. *
  3563. * An example input string might look like:
  3564. *
  3565. * "ModeValidation=NoVesaModes :: HorizSync=50-110 :: VertRefresh=50-150"
  3566. *
  3567. * This request currently does not return a string.
  3568. */
  3569. #define NV_CTRL_STRING_OPERATION_BUILD_MODEPOOL 3 /* DG */
  3570. /*
  3571. * NV_CTRL_STRING_OPERATION_GVI_CONFIGURE_STREAMS - Configure the streams-
  3572. * to-jack+channel topology for a GVI (Graphics capture board).
  3573. *
  3574. * The string input to GVI_CONFIGURE_STREAMS may be NULL. If this is the
  3575. * case, then the current topology is returned.
  3576. *
  3577. * If the input string to GVI_CONFIGURE_STREAMS is not NULL, the string
  3578. * is interpreted as a semicolon (";") separated list of comma-separated
  3579. * lists of "option=value" pairs that define a stream's composition. The
  3580. * available options and their values are:
  3581. *
  3582. * "stream": Defines which stream this comma-separated list describes.
  3583. * Valid values are the integers between 0 and
  3584. * NV_CTRL_GVI_NUM_STREAMS-1 (inclusive).
  3585. *
  3586. * "linkN": Defines a jack+channel pair to use for the given link N.
  3587. * Valid options are the string "linkN", where N is an integer
  3588. * between 0 and NV_CTRL_GVI_MAX_LINKS_PER_STREAM-1 (inclusive).
  3589. * Valid values for these options are strings of the form
  3590. * "jackX" and/or "jackX.Y", where X is an integer between 0 and
  3591. * NV_CTRL_GVI_NUM_JACKS-1 (inclusive), and Y (optional) is an
  3592. * integer between 0 and NV_CTRL_GVI_MAX_CHANNELS_PER_JACK-1
  3593. * (inclusive).
  3594. *
  3595. * An example input string might look like:
  3596. *
  3597. * "stream=0, link0=jack0, link1=jack1; stream=1, link0=jack2.1"
  3598. *
  3599. * This example specifies two streams, stream 0 and stream 1. Stream 0
  3600. * is defined to capture link0 data from the first channel (channel 0) of
  3601. * BNC jack 0 and link1 data from the first channel of BNC jack 1. The
  3602. * second stream (Stream 1) is defined to capture link0 data from channel 1
  3603. * (second channel) of BNC jack 2.
  3604. *
  3605. * This example shows a possible configuration for capturing 3G input:
  3606. *
  3607. * "stream=0, link0=jack0.0, link1=jack0.1"
  3608. *
  3609. * Applications should query the following attributes to determine
  3610. * possible combinations:
  3611. *
  3612. * NV_CTRL_GVI_MAX_STREAMS
  3613. * NV_CTRL_GVI_MAX_LINKS_PER_STREAM
  3614. * NV_CTRL_GVI_NUM_JACKS
  3615. * NV_CTRL_GVI_MAX_CHANNELS_PER_JACK
  3616. *
  3617. * Note: A jack+channel pair can only be tied to one link/stream.
  3618. *
  3619. * Upon successful configuration or querying of this attribute, a string
  3620. * representing the current topology for all known streams on the device
  3621. * will be returned. On failure, NULL is returned.
  3622. *
  3623. * Note: Setting this attribute may also result in the following
  3624. * NV-CONTROL attributes being reset on the GVI device (to ensure
  3625. * the configuration remains valid):
  3626. * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT
  3627. * NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT
  3628. * NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING
  3629. */
  3630. #define NV_CTRL_STRING_OPERATION_GVI_CONFIGURE_STREAMS 4 /* RW-I */
  3631. #define NV_CTRL_STRING_OPERATION_LAST_ATTRIBUTE \
  3632. NV_CTRL_STRING_OPERATION_GVI_CONFIGURE_STREAMS
  3633. /**************************************************************************/
  3634. /*
  3635. * CTRLAttributeValidValuesRec -
  3636. *
  3637. * structure and related defines used by
  3638. * XNVCTRLQueryValidAttributeValues() to describe the valid values of
  3639. * a particular attribute. The type field will be one of:
  3640. *
  3641. * ATTRIBUTE_TYPE_INTEGER : the attribute is an integer value; there
  3642. * is no fixed range of valid values.
  3643. *
  3644. * ATTRIBUTE_TYPE_BITMASK : the attribute is an integer value,
  3645. * interpretted as a bitmask.
  3646. *
  3647. * ATTRIBUTE_TYPE_BOOL : the attribute is a boolean, valid values are
  3648. * either 1 (on/true) or 0 (off/false).
  3649. *
  3650. * ATTRIBUTE_TYPE_RANGE : the attribute can have any integer value
  3651. * between NVCTRLAttributeValidValues.u.range.min and
  3652. * NVCTRLAttributeValidValues.u.range.max (inclusive).
  3653. *
  3654. * ATTRIBUTE_TYPE_INT_BITS : the attribute can only have certain
  3655. * integer values, indicated by which bits in
  3656. * NVCTRLAttributeValidValues.u.bits.ints are on (for example: if bit
  3657. * 0 is on, then 0 is a valid value; if bit 5 is on, then 5 is a valid
  3658. * value, etc). This is useful for attributes like NV_CTRL_FSAA_MODE,
  3659. * which can only have certain values, depending on GPU.
  3660. *
  3661. * ATTRIBUTE_TYPE_64BIT_INTEGER : the attribute is a 64 bit integer value;
  3662. * there is no fixed range of valid values.
  3663. *
  3664. * ATTRIBUTE_TYPE_STRING : the attribute is a string value; there is no fixed
  3665. * range of valid values.
  3666. *
  3667. * ATTRIBUTE_TYPE_BINARY_DATA : the attribute is binary data; there is
  3668. * no fixed range of valid values.
  3669. *
  3670. * ATTRIBUTE_TYPE_STRING_OPERATION : the attribute is a string; there is
  3671. * no fixed range of valid values.
  3672. *
  3673. *
  3674. * The permissions field of NVCTRLAttributeValidValuesRec is a bitmask
  3675. * that may contain:
  3676. *
  3677. * ATTRIBUTE_TYPE_READ - Attribute may be read (queried.)
  3678. * ATTRIBUTE_TYPE_WRITE - Attribute may be written to (set.)
  3679. * ATTRIBUTE_TYPE_DISPLAY - Attribute is valid for display target types
  3680. * (requires a display_mask if queried via
  3681. * a GPU or X screen.)
  3682. * ATTRIBUTE_TYPE_GPU - Attribute is valid for GPU target types.
  3683. * ATTRIBUTE_TYPE_FRAMELOCK - Attribute is valid for Frame Lock target types.
  3684. * ATTRIBUTE_TYPE_X_SCREEN - Attribute is valid for X Screen target types.
  3685. * ATTRIBUTE_TYPE_XINERAMA - Attribute will be made consistent for all
  3686. * X Screens when the Xinerama extension is enabled.
  3687. * ATTRIBUTE_TYPE_VCSC - Attribute is valid for Visual Computing System
  3688. * target types.
  3689. * ATTRIBUTE_TYPE_GVI - Attribute is valid for Graphics Video In target
  3690. * types.
  3691. * ATTRIBUTE_TYPE_COOLER - Attribute is valid for Cooler target types.
  3692. * ATTRIBUTE_TYPE_3D_VISION_PRO_TRANSCEIVER - Attribute is valid for 3D Vision
  3693. * Pro Transceiver target types.
  3694. *
  3695. * See 'Key to Integer Attribute "Permissions"' at the top of this
  3696. * file for a description of what these permission bits mean.
  3697. */
  3698. #define ATTRIBUTE_TYPE_UNKNOWN 0
  3699. #define ATTRIBUTE_TYPE_INTEGER 1
  3700. #define ATTRIBUTE_TYPE_BITMASK 2
  3701. #define ATTRIBUTE_TYPE_BOOL 3
  3702. #define ATTRIBUTE_TYPE_RANGE 4
  3703. #define ATTRIBUTE_TYPE_INT_BITS 5
  3704. #define ATTRIBUTE_TYPE_64BIT_INTEGER 6
  3705. #define ATTRIBUTE_TYPE_STRING 7
  3706. #define ATTRIBUTE_TYPE_BINARY_DATA 8
  3707. #define ATTRIBUTE_TYPE_STRING_OPERATION 9
  3708. #define ATTRIBUTE_TYPE_READ 0x001
  3709. #define ATTRIBUTE_TYPE_WRITE 0x002
  3710. #define ATTRIBUTE_TYPE_DISPLAY 0x004
  3711. #define ATTRIBUTE_TYPE_GPU 0x008
  3712. #define ATTRIBUTE_TYPE_FRAMELOCK 0x010
  3713. #define ATTRIBUTE_TYPE_X_SCREEN 0x020
  3714. #define ATTRIBUTE_TYPE_XINERAMA 0x040
  3715. #define ATTRIBUTE_TYPE_VCSC 0x080
  3716. #define ATTRIBUTE_TYPE_GVI 0x100
  3717. #define ATTRIBUTE_TYPE_COOLER 0x200
  3718. #define ATTRIBUTE_TYPE_THERMAL_SENSOR 0x400
  3719. #define ATTRIBUTE_TYPE_3D_VISION_PRO_TRANSCEIVER 0x800
  3720. #define ATTRIBUTE_TYPE_ALL_TARGETS \
  3721. ((ATTRIBUTE_TYPE_DISPLAY) | \
  3722. (ATTRIBUTE_TYPE_GPU) | \
  3723. (ATTRIBUTE_TYPE_FRAMELOCK) | \
  3724. (ATTRIBUTE_TYPE_X_SCREEN) | \
  3725. (ATTRIBUTE_TYPE_VCSC) | \
  3726. (ATTRIBUTE_TYPE_GVI) | \
  3727. (ATTRIBUTE_TYPE_COOLER) | \
  3728. (ATTRIBUTE_TYPE_THERMAL_SENSOR) | \
  3729. (ATTRIBUTE_TYPE_3D_VISION_PRO_TRANSCEIVER))
  3730. typedef struct _NVCTRLAttributeValidValues {
  3731. int type;
  3732. union {
  3733. struct {
  3734. int64_t min;
  3735. int64_t max;
  3736. } range;
  3737. struct {
  3738. unsigned int ints;
  3739. } bits;
  3740. } u;
  3741. unsigned int permissions;
  3742. } NVCTRLAttributeValidValuesRec;
  3743. typedef struct _NVCTRLAttributePermissions {
  3744. int type;
  3745. unsigned int permissions;
  3746. } NVCTRLAttributePermissionsRec;
  3747. /**************************************************************************/
  3748. /*
  3749. * NV-CONTROL X event notification.
  3750. *
  3751. * To receive X event notifications dealing with NV-CONTROL, you should
  3752. * call XNVCtrlSelectNotify() with one of the following set as the type
  3753. * of event to receive (see NVCtrlLib.h for more information):
  3754. */
  3755. #define ATTRIBUTE_CHANGED_EVENT 0
  3756. #define TARGET_ATTRIBUTE_CHANGED_EVENT 1
  3757. #define TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT 2
  3758. #define TARGET_STRING_ATTRIBUTE_CHANGED_EVENT 3
  3759. #define TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT 4
  3760. #endif /* __NVCTRL_H */