1fa225cbcSrjs /************************************************************************** 2fa225cbcSrjs * 3fa225cbcSrjs * Copyright 2005 Tungsten Graphics, Inc., Cedar Park, Texas. 4fa225cbcSrjs * All Rights Reserved. 5fa225cbcSrjs * 6fa225cbcSrjs * Permission is hereby granted, free of charge, to any person obtaining a 7fa225cbcSrjs * copy of this software and associated documentation files (the 8fa225cbcSrjs * "Software"), to deal in the Software without restriction, including 9fa225cbcSrjs * without limitation the rights to use, copy, modify, merge, publish, 10fa225cbcSrjs * distribute, sub license, and/or sell copies of the Software, and to 11fa225cbcSrjs * permit persons to whom the Software is furnished to do so, subject to 12fa225cbcSrjs * the following conditions: 13fa225cbcSrjs * 14fa225cbcSrjs * The above copyright notice and this permission notice (including the 15fa225cbcSrjs * next paragraph) shall be included in all copies or substantial portions 16fa225cbcSrjs * of the Software. 17fa225cbcSrjs * 18fa225cbcSrjs * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19fa225cbcSrjs * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20fa225cbcSrjs * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21fa225cbcSrjs * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22fa225cbcSrjs * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23fa225cbcSrjs * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24fa225cbcSrjs * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25fa225cbcSrjs * 26fa225cbcSrjs **************************************************************************/ 27fa225cbcSrjs 28fa225cbcSrjs#ifndef BRW_STRUCTS_H 29fa225cbcSrjs#define BRW_STRUCTS_H 30fa225cbcSrjs 31fa225cbcSrjs/* Command packets: 32fa225cbcSrjs */ 33fa225cbcSrjsstruct header 34fa225cbcSrjs{ 35fa225cbcSrjs unsigned int length:16; 36fa225cbcSrjs unsigned int opcode:16; 37fa225cbcSrjs}; 38fa225cbcSrjs 39fa225cbcSrjs 40fa225cbcSrjsunion header_union 41fa225cbcSrjs{ 42fa225cbcSrjs struct header bits; 43fa225cbcSrjs unsigned int dword; 44fa225cbcSrjs}; 45fa225cbcSrjs 46fa225cbcSrjsstruct brw_3d_control 47fa225cbcSrjs{ 48fa225cbcSrjs struct 49fa225cbcSrjs { 50fa225cbcSrjs unsigned int length:8; 51fa225cbcSrjs unsigned int notify_enable:1; 52fa225cbcSrjs unsigned int pad:3; 53fa225cbcSrjs unsigned int wc_flush_enable:1; 54fa225cbcSrjs unsigned int depth_stall_enable:1; 55fa225cbcSrjs unsigned int operation:2; 56fa225cbcSrjs unsigned int opcode:16; 57fa225cbcSrjs } header; 58fa225cbcSrjs 59fa225cbcSrjs struct 60fa225cbcSrjs { 61fa225cbcSrjs unsigned int pad:2; 62fa225cbcSrjs unsigned int dest_addr_type:1; 63fa225cbcSrjs unsigned int dest_addr:29; 64fa225cbcSrjs } dest; 65fa225cbcSrjs 66fa225cbcSrjs unsigned int dword2; 67fa225cbcSrjs unsigned int dword3; 68fa225cbcSrjs}; 69fa225cbcSrjs 70fa225cbcSrjs 71fa225cbcSrjsstruct brw_3d_primitive 72fa225cbcSrjs{ 73fa225cbcSrjs struct 74fa225cbcSrjs { 75fa225cbcSrjs unsigned int length:8; 76fa225cbcSrjs unsigned int pad:2; 77fa225cbcSrjs unsigned int topology:5; 78fa225cbcSrjs unsigned int indexed:1; 79fa225cbcSrjs unsigned int opcode:16; 80fa225cbcSrjs } header; 81fa225cbcSrjs 82fa225cbcSrjs unsigned int verts_per_instance; 83fa225cbcSrjs unsigned int start_vert_location; 84fa225cbcSrjs unsigned int instance_count; 85fa225cbcSrjs unsigned int start_instance_location; 86fa225cbcSrjs unsigned int base_vert_location; 87fa225cbcSrjs}; 88fa225cbcSrjs 89fa225cbcSrjs/* These seem to be passed around as function args, so it works out 90fa225cbcSrjs * better to keep them as #defines: 91fa225cbcSrjs */ 92fa225cbcSrjs#define BRW_FLUSH_READ_CACHE 0x1 93fa225cbcSrjs#define BRW_FLUSH_STATE_CACHE 0x2 94fa225cbcSrjs#define BRW_INHIBIT_FLUSH_RENDER_CACHE 0x4 95fa225cbcSrjs#define BRW_FLUSH_SNAPSHOT_COUNTERS 0x8 96fa225cbcSrjs 97fa225cbcSrjsstruct brw_mi_flush 98fa225cbcSrjs{ 99fa225cbcSrjs unsigned int flags:4; 100fa225cbcSrjs unsigned int pad:12; 101fa225cbcSrjs unsigned int opcode:16; 102fa225cbcSrjs}; 103fa225cbcSrjs 104fa225cbcSrjsstruct brw_vf_statistics 105fa225cbcSrjs{ 106fa225cbcSrjs unsigned int statistics_enable:1; 107fa225cbcSrjs unsigned int pad:15; 108fa225cbcSrjs unsigned int opcode:16; 109fa225cbcSrjs}; 110fa225cbcSrjs 111fa225cbcSrjs 112fa225cbcSrjs 113fa225cbcSrjsstruct brw_binding_table_pointers 114fa225cbcSrjs{ 115fa225cbcSrjs struct header header; 116fa225cbcSrjs unsigned int vs; 117fa225cbcSrjs unsigned int gs; 118fa225cbcSrjs unsigned int clp; 119fa225cbcSrjs unsigned int sf; 120fa225cbcSrjs unsigned int wm; 121fa225cbcSrjs}; 122fa225cbcSrjs 123fa225cbcSrjs 124fa225cbcSrjsstruct brw_blend_constant_color 125fa225cbcSrjs{ 126fa225cbcSrjs struct header header; 127fa225cbcSrjs float blend_constant_color[4]; 128fa225cbcSrjs}; 129fa225cbcSrjs 130fa225cbcSrjs 131fa225cbcSrjsstruct brw_depthbuffer 132fa225cbcSrjs{ 133fa225cbcSrjs union header_union header; 134fa225cbcSrjs 135fa225cbcSrjs union { 136fa225cbcSrjs struct { 137fa225cbcSrjs unsigned int pitch:18; 138fa225cbcSrjs unsigned int format:3; 139fa225cbcSrjs unsigned int pad:4; 140fa225cbcSrjs unsigned int depth_offset_disable:1; 141fa225cbcSrjs unsigned int tile_walk:1; 142fa225cbcSrjs unsigned int tiled_surface:1; 143fa225cbcSrjs unsigned int pad2:1; 144fa225cbcSrjs unsigned int surface_type:3; 145fa225cbcSrjs } bits; 146fa225cbcSrjs unsigned int dword; 147fa225cbcSrjs } dword1; 148fa225cbcSrjs 149fa225cbcSrjs unsigned int dword2_base_addr; 150fa225cbcSrjs 151fa225cbcSrjs union { 152fa225cbcSrjs struct { 153fa225cbcSrjs unsigned int pad:1; 154fa225cbcSrjs unsigned int mipmap_layout:1; 155fa225cbcSrjs unsigned int lod:4; 156fa225cbcSrjs unsigned int width:13; 157fa225cbcSrjs unsigned int height:13; 158fa225cbcSrjs } bits; 159fa225cbcSrjs unsigned int dword; 160fa225cbcSrjs } dword3; 161fa225cbcSrjs 162fa225cbcSrjs union { 163fa225cbcSrjs struct { 164fa225cbcSrjs unsigned int pad:12; 165fa225cbcSrjs unsigned int min_array_element:9; 166fa225cbcSrjs unsigned int depth:11; 167fa225cbcSrjs } bits; 168fa225cbcSrjs unsigned int dword; 169fa225cbcSrjs } dword4; 170fa225cbcSrjs}; 171fa225cbcSrjs 172fa225cbcSrjsstruct brw_drawrect 173fa225cbcSrjs{ 174fa225cbcSrjs struct header header; 175fa225cbcSrjs unsigned int xmin:16; 176fa225cbcSrjs unsigned int ymin:16; 177fa225cbcSrjs unsigned int xmax:16; 178fa225cbcSrjs unsigned int ymax:16; 179fa225cbcSrjs unsigned int xorg:16; 180fa225cbcSrjs unsigned int yorg:16; 181fa225cbcSrjs}; 182fa225cbcSrjs 183fa225cbcSrjs 184fa225cbcSrjs 185fa225cbcSrjs 186fa225cbcSrjsstruct brw_global_depth_offset_clamp 187fa225cbcSrjs{ 188fa225cbcSrjs struct header header; 189fa225cbcSrjs float depth_offset_clamp; 190fa225cbcSrjs}; 191fa225cbcSrjs 192fa225cbcSrjsstruct brw_indexbuffer 193fa225cbcSrjs{ 194fa225cbcSrjs union { 195fa225cbcSrjs struct 196fa225cbcSrjs { 197fa225cbcSrjs unsigned int length:8; 198fa225cbcSrjs unsigned int index_format:2; 199fa225cbcSrjs unsigned int cut_index_enable:1; 200fa225cbcSrjs unsigned int pad:5; 201fa225cbcSrjs unsigned int opcode:16; 202fa225cbcSrjs } bits; 203fa225cbcSrjs unsigned int dword; 204fa225cbcSrjs 205fa225cbcSrjs } header; 206fa225cbcSrjs 207fa225cbcSrjs unsigned int buffer_start; 208fa225cbcSrjs unsigned int buffer_end; 209fa225cbcSrjs}; 210fa225cbcSrjs 211fa225cbcSrjs 212fa225cbcSrjsstruct brw_line_stipple 213fa225cbcSrjs{ 214fa225cbcSrjs struct header header; 215fa225cbcSrjs 216fa225cbcSrjs struct 217fa225cbcSrjs { 218fa225cbcSrjs unsigned int pattern:16; 219fa225cbcSrjs unsigned int pad:16; 220fa225cbcSrjs } bits0; 221fa225cbcSrjs 222fa225cbcSrjs struct 223fa225cbcSrjs { 224fa225cbcSrjs unsigned int repeat_count:9; 225fa225cbcSrjs unsigned int pad:7; 226fa225cbcSrjs unsigned int inverse_repeat_count:16; 227fa225cbcSrjs } bits1; 228fa225cbcSrjs}; 229fa225cbcSrjs 230fa225cbcSrjs 231fa225cbcSrjsstruct brw_pipelined_state_pointers 232fa225cbcSrjs{ 233fa225cbcSrjs struct header header; 234fa225cbcSrjs 235fa225cbcSrjs struct { 236fa225cbcSrjs unsigned int pad:5; 237fa225cbcSrjs unsigned int offset:27; 238fa225cbcSrjs } vs; 239fa225cbcSrjs 240fa225cbcSrjs struct 241fa225cbcSrjs { 242fa225cbcSrjs unsigned int enable:1; 243fa225cbcSrjs unsigned int pad:4; 244fa225cbcSrjs unsigned int offset:27; 245fa225cbcSrjs } gs; 246fa225cbcSrjs 247fa225cbcSrjs struct 248fa225cbcSrjs { 249fa225cbcSrjs unsigned int enable:1; 250fa225cbcSrjs unsigned int pad:4; 251fa225cbcSrjs unsigned int offset:27; 252fa225cbcSrjs } clp; 253fa225cbcSrjs 254fa225cbcSrjs struct 255fa225cbcSrjs { 256fa225cbcSrjs unsigned int pad:5; 257fa225cbcSrjs unsigned int offset:27; 258fa225cbcSrjs } sf; 259fa225cbcSrjs 260fa225cbcSrjs struct 261fa225cbcSrjs { 262fa225cbcSrjs unsigned int pad:5; 263fa225cbcSrjs unsigned int offset:27; 264fa225cbcSrjs } wm; 265fa225cbcSrjs 266fa225cbcSrjs struct 267fa225cbcSrjs { 268fa225cbcSrjs unsigned int pad:5; 269fa225cbcSrjs unsigned int offset:27; /* KW: check me! */ 270fa225cbcSrjs } cc; 271fa225cbcSrjs}; 272fa225cbcSrjs 273fa225cbcSrjs 274fa225cbcSrjsstruct brw_polygon_stipple_offset 275fa225cbcSrjs{ 276fa225cbcSrjs struct header header; 277fa225cbcSrjs 278fa225cbcSrjs struct { 279fa225cbcSrjs unsigned int y_offset:5; 280fa225cbcSrjs unsigned int pad:3; 281fa225cbcSrjs unsigned int x_offset:5; 282fa225cbcSrjs unsigned int pad0:19; 283fa225cbcSrjs } bits0; 284fa225cbcSrjs}; 285fa225cbcSrjs 286fa225cbcSrjs 287fa225cbcSrjs 288fa225cbcSrjsstruct brw_polygon_stipple 289fa225cbcSrjs{ 290fa225cbcSrjs struct header header; 291fa225cbcSrjs unsigned int stipple[32]; 292fa225cbcSrjs}; 293fa225cbcSrjs 294fa225cbcSrjs 295fa225cbcSrjs 296fa225cbcSrjsstruct brw_pipeline_select 297fa225cbcSrjs{ 298fa225cbcSrjs struct 299fa225cbcSrjs { 300fa225cbcSrjs unsigned int pipeline_select:1; 301fa225cbcSrjs unsigned int pad:15; 302fa225cbcSrjs unsigned int opcode:16; 303fa225cbcSrjs } header; 304fa225cbcSrjs}; 305fa225cbcSrjs 306fa225cbcSrjs 307fa225cbcSrjsstruct brw_pipe_control 308fa225cbcSrjs{ 309fa225cbcSrjs struct 310fa225cbcSrjs { 311fa225cbcSrjs unsigned int length:8; 312fa225cbcSrjs unsigned int notify_enable:1; 313fa225cbcSrjs unsigned int pad:2; 314fa225cbcSrjs unsigned int instruction_state_cache_flush_enable:1; 315fa225cbcSrjs unsigned int write_cache_flush_enable:1; 316fa225cbcSrjs unsigned int depth_stall_enable:1; 317fa225cbcSrjs unsigned int post_sync_operation:2; 318fa225cbcSrjs 319fa225cbcSrjs unsigned int opcode:16; 320fa225cbcSrjs } header; 321fa225cbcSrjs 322fa225cbcSrjs struct 323fa225cbcSrjs { 324fa225cbcSrjs unsigned int pad:2; 325fa225cbcSrjs unsigned int dest_addr_type:1; 326fa225cbcSrjs unsigned int dest_addr:29; 327fa225cbcSrjs } bits1; 328fa225cbcSrjs 329fa225cbcSrjs unsigned int data0; 330fa225cbcSrjs unsigned int data1; 331fa225cbcSrjs}; 332fa225cbcSrjs 333fa225cbcSrjs 334fa225cbcSrjsstruct brw_urb_fence 335fa225cbcSrjs{ 336fa225cbcSrjs struct 337fa225cbcSrjs { 338fa225cbcSrjs unsigned int length:8; 339fa225cbcSrjs unsigned int vs_realloc:1; 340fa225cbcSrjs unsigned int gs_realloc:1; 341fa225cbcSrjs unsigned int clp_realloc:1; 342fa225cbcSrjs unsigned int sf_realloc:1; 343fa225cbcSrjs unsigned int vfe_realloc:1; 344fa225cbcSrjs unsigned int cs_realloc:1; 345fa225cbcSrjs unsigned int pad:2; 346fa225cbcSrjs unsigned int opcode:16; 347fa225cbcSrjs } header; 348fa225cbcSrjs 349fa225cbcSrjs struct 350fa225cbcSrjs { 351fa225cbcSrjs unsigned int vs_fence:10; 352fa225cbcSrjs unsigned int gs_fence:10; 353fa225cbcSrjs unsigned int clp_fence:10; 354fa225cbcSrjs unsigned int pad:2; 355fa225cbcSrjs } bits0; 356fa225cbcSrjs 357fa225cbcSrjs struct 358fa225cbcSrjs { 359fa225cbcSrjs unsigned int sf_fence:10; 360fa225cbcSrjs unsigned int vf_fence:10; 361fa225cbcSrjs unsigned int cs_fence:10; 362fa225cbcSrjs unsigned int pad:2; 363fa225cbcSrjs } bits1; 364fa225cbcSrjs}; 365fa225cbcSrjs 366fa225cbcSrjsstruct brw_constant_buffer_state /* previously brw_command_streamer */ 367fa225cbcSrjs{ 368fa225cbcSrjs struct header header; 369fa225cbcSrjs 370fa225cbcSrjs struct 371fa225cbcSrjs { 372fa225cbcSrjs unsigned int nr_urb_entries:3; 373fa225cbcSrjs unsigned int pad:1; 374fa225cbcSrjs unsigned int urb_entry_size:5; 375fa225cbcSrjs unsigned int pad0:23; 376fa225cbcSrjs } bits0; 377fa225cbcSrjs}; 378fa225cbcSrjs 379fa225cbcSrjsstruct brw_constant_buffer 380fa225cbcSrjs{ 381fa225cbcSrjs struct 382fa225cbcSrjs { 383fa225cbcSrjs unsigned int length:8; 384fa225cbcSrjs unsigned int valid:1; 385fa225cbcSrjs unsigned int pad:7; 386fa225cbcSrjs unsigned int opcode:16; 387fa225cbcSrjs } header; 388fa225cbcSrjs 389fa225cbcSrjs struct 390fa225cbcSrjs { 391fa225cbcSrjs unsigned int buffer_length:6; 392fa225cbcSrjs unsigned int buffer_address:26; 393fa225cbcSrjs } bits0; 394fa225cbcSrjs}; 395fa225cbcSrjs 396fa225cbcSrjsstruct brw_state_base_address 397fa225cbcSrjs{ 398fa225cbcSrjs struct header header; 399fa225cbcSrjs 400fa225cbcSrjs struct 401fa225cbcSrjs { 402fa225cbcSrjs unsigned int modify_enable:1; 403fa225cbcSrjs unsigned int pad:4; 404fa225cbcSrjs unsigned int general_state_address:27; 405fa225cbcSrjs } bits0; 406fa225cbcSrjs 407fa225cbcSrjs struct 408fa225cbcSrjs { 409fa225cbcSrjs unsigned int modify_enable:1; 410fa225cbcSrjs unsigned int pad:4; 411fa225cbcSrjs unsigned int surface_state_address:27; 412fa225cbcSrjs } bits1; 413fa225cbcSrjs 414fa225cbcSrjs struct 415fa225cbcSrjs { 416fa225cbcSrjs unsigned int modify_enable:1; 417fa225cbcSrjs unsigned int pad:4; 418fa225cbcSrjs unsigned int indirect_object_state_address:27; 419fa225cbcSrjs } bits2; 420fa225cbcSrjs 421fa225cbcSrjs struct 422fa225cbcSrjs { 423fa225cbcSrjs unsigned int modify_enable:1; 424fa225cbcSrjs unsigned int pad:11; 425fa225cbcSrjs unsigned int general_state_upper_bound:20; 426fa225cbcSrjs } bits3; 427fa225cbcSrjs 428fa225cbcSrjs struct 429fa225cbcSrjs { 430fa225cbcSrjs unsigned int modify_enable:1; 431fa225cbcSrjs unsigned int pad:11; 432fa225cbcSrjs unsigned int indirect_object_state_upper_bound:20; 433fa225cbcSrjs } bits4; 434fa225cbcSrjs}; 435fa225cbcSrjs 436fa225cbcSrjsstruct brw_state_prefetch 437fa225cbcSrjs{ 438fa225cbcSrjs struct header header; 439fa225cbcSrjs 440fa225cbcSrjs struct 441fa225cbcSrjs { 442fa225cbcSrjs unsigned int prefetch_count:3; 443fa225cbcSrjs unsigned int pad:3; 444fa225cbcSrjs unsigned int prefetch_pointer:26; 445fa225cbcSrjs } bits0; 446fa225cbcSrjs}; 447fa225cbcSrjs 448fa225cbcSrjsstruct brw_system_instruction_pointer 449fa225cbcSrjs{ 450fa225cbcSrjs struct header header; 451fa225cbcSrjs 452fa225cbcSrjs struct 453fa225cbcSrjs { 454fa225cbcSrjs unsigned int pad:4; 455fa225cbcSrjs unsigned int system_instruction_pointer:28; 456fa225cbcSrjs } bits0; 457fa225cbcSrjs}; 458fa225cbcSrjs 459fa225cbcSrjs 460fa225cbcSrjs 461fa225cbcSrjs 462fa225cbcSrjs/* State structs for the various fixed function units: 463fa225cbcSrjs */ 464fa225cbcSrjs 465fa225cbcSrjs 466fa225cbcSrjsstruct thread0 467fa225cbcSrjs{ 468fa225cbcSrjs unsigned int pad0:1; 469fa225cbcSrjs unsigned int grf_reg_count:3; 470fa225cbcSrjs unsigned int pad1:2; 471fa225cbcSrjs unsigned int kernel_start_pointer:26; 472fa225cbcSrjs}; 473fa225cbcSrjs 474fa225cbcSrjsstruct thread1 475fa225cbcSrjs{ 476fa225cbcSrjs unsigned int ext_halt_exception_enable:1; 477fa225cbcSrjs unsigned int sw_exception_enable:1; 478fa225cbcSrjs unsigned int mask_stack_exception_enable:1; 479fa225cbcSrjs unsigned int timeout_exception_enable:1; 480fa225cbcSrjs unsigned int illegal_op_exception_enable:1; 481fa225cbcSrjs unsigned int pad0:3; 482fa225cbcSrjs unsigned int depth_coef_urb_read_offset:6; /* WM only */ 483fa225cbcSrjs unsigned int pad1:2; 484fa225cbcSrjs unsigned int floating_point_mode:1; 485fa225cbcSrjs unsigned int thread_priority:1; 486fa225cbcSrjs unsigned int binding_table_entry_count:8; 487fa225cbcSrjs unsigned int pad3:5; 488fa225cbcSrjs unsigned int single_program_flow:1; 489fa225cbcSrjs}; 490fa225cbcSrjs 491fa225cbcSrjsstruct thread2 492fa225cbcSrjs{ 493fa225cbcSrjs unsigned int per_thread_scratch_space:4; 494fa225cbcSrjs unsigned int pad0:6; 495fa225cbcSrjs unsigned int scratch_space_base_pointer:22; 496fa225cbcSrjs}; 497fa225cbcSrjs 498fa225cbcSrjs 499fa225cbcSrjsstruct thread3 500fa225cbcSrjs{ 501fa225cbcSrjs unsigned int dispatch_grf_start_reg:4; 502fa225cbcSrjs unsigned int urb_entry_read_offset:6; 503fa225cbcSrjs unsigned int pad0:1; 504fa225cbcSrjs unsigned int urb_entry_read_length:6; 505fa225cbcSrjs unsigned int pad1:1; 506fa225cbcSrjs unsigned int const_urb_entry_read_offset:6; 507fa225cbcSrjs unsigned int pad2:1; 508fa225cbcSrjs unsigned int const_urb_entry_read_length:6; 509fa225cbcSrjs unsigned int pad3:1; 510fa225cbcSrjs}; 511fa225cbcSrjs 512fa225cbcSrjs 513fa225cbcSrjs 514fa225cbcSrjsstruct brw_clip_unit_state 515fa225cbcSrjs{ 516fa225cbcSrjs struct thread0 thread0; 517fa225cbcSrjs struct thread1 thread1; 518fa225cbcSrjs struct thread2 thread2; 519fa225cbcSrjs struct thread3 thread3; 520fa225cbcSrjs 521fa225cbcSrjs struct 522fa225cbcSrjs { 523fa225cbcSrjs unsigned int pad0:9; 524fa225cbcSrjs unsigned int gs_output_stats:1; /* not always */ 525fa225cbcSrjs unsigned int stats_enable:1; 526fa225cbcSrjs unsigned int nr_urb_entries:7; 527fa225cbcSrjs unsigned int pad1:1; 528fa225cbcSrjs unsigned int urb_entry_allocation_size:5; 529fa225cbcSrjs unsigned int pad2:1; 530fa225cbcSrjs unsigned int max_threads:6; /* may be less */ 531fa225cbcSrjs unsigned int pad3:1; 532fa225cbcSrjs } thread4; 533fa225cbcSrjs 534fa225cbcSrjs struct 535fa225cbcSrjs { 536fa225cbcSrjs unsigned int pad0:13; 537fa225cbcSrjs unsigned int clip_mode:3; 538fa225cbcSrjs unsigned int userclip_enable_flags:8; 539fa225cbcSrjs unsigned int userclip_must_clip:1; 540fa225cbcSrjs unsigned int pad1:1; 541fa225cbcSrjs unsigned int guard_band_enable:1; 542fa225cbcSrjs unsigned int viewport_z_clip_enable:1; 543fa225cbcSrjs unsigned int viewport_xy_clip_enable:1; 544fa225cbcSrjs unsigned int vertex_position_space:1; 545fa225cbcSrjs unsigned int api_mode:1; 546fa225cbcSrjs unsigned int pad2:1; 547fa225cbcSrjs } clip5; 548fa225cbcSrjs 549fa225cbcSrjs struct 550fa225cbcSrjs { 551fa225cbcSrjs unsigned int pad0:5; 552fa225cbcSrjs unsigned int clipper_viewport_state_ptr:27; 553fa225cbcSrjs } clip6; 554fa225cbcSrjs 555fa225cbcSrjs 556fa225cbcSrjs float viewport_xmin; 557fa225cbcSrjs float viewport_xmax; 558fa225cbcSrjs float viewport_ymin; 559fa225cbcSrjs float viewport_ymax; 560fa225cbcSrjs}; 561fa225cbcSrjs 562fa225cbcSrjs 563fa225cbcSrjs 564fa225cbcSrjsstruct brw_cc_unit_state 565fa225cbcSrjs{ 566fa225cbcSrjs struct 567fa225cbcSrjs { 568fa225cbcSrjs unsigned int pad0:3; 569fa225cbcSrjs unsigned int bf_stencil_pass_depth_pass_op:3; 570fa225cbcSrjs unsigned int bf_stencil_pass_depth_fail_op:3; 571fa225cbcSrjs unsigned int bf_stencil_fail_op:3; 572fa225cbcSrjs unsigned int bf_stencil_func:3; 573fa225cbcSrjs unsigned int bf_stencil_enable:1; 574fa225cbcSrjs unsigned int pad1:2; 575fa225cbcSrjs unsigned int stencil_write_enable:1; 576fa225cbcSrjs unsigned int stencil_pass_depth_pass_op:3; 577fa225cbcSrjs unsigned int stencil_pass_depth_fail_op:3; 578fa225cbcSrjs unsigned int stencil_fail_op:3; 579fa225cbcSrjs unsigned int stencil_func:3; 580fa225cbcSrjs unsigned int stencil_enable:1; 581fa225cbcSrjs } cc0; 582fa225cbcSrjs 583fa225cbcSrjs 584fa225cbcSrjs struct 585fa225cbcSrjs { 586fa225cbcSrjs unsigned int bf_stencil_ref:8; 587fa225cbcSrjs unsigned int stencil_write_mask:8; 588fa225cbcSrjs unsigned int stencil_test_mask:8; 589fa225cbcSrjs unsigned int stencil_ref:8; 590fa225cbcSrjs } cc1; 591fa225cbcSrjs 592fa225cbcSrjs 593fa225cbcSrjs struct 594fa225cbcSrjs { 595fa225cbcSrjs unsigned int logicop_enable:1; 596fa225cbcSrjs unsigned int pad0:10; 597fa225cbcSrjs unsigned int depth_write_enable:1; 598fa225cbcSrjs unsigned int depth_test_function:3; 599fa225cbcSrjs unsigned int depth_test:1; 600fa225cbcSrjs unsigned int bf_stencil_write_mask:8; 601fa225cbcSrjs unsigned int bf_stencil_test_mask:8; 602fa225cbcSrjs } cc2; 603fa225cbcSrjs 604fa225cbcSrjs 605fa225cbcSrjs struct 606fa225cbcSrjs { 607fa225cbcSrjs unsigned int pad0:8; 608fa225cbcSrjs unsigned int alpha_test_func:3; 609fa225cbcSrjs unsigned int alpha_test:1; 610fa225cbcSrjs unsigned int blend_enable:1; 611fa225cbcSrjs unsigned int ia_blend_enable:1; 612fa225cbcSrjs unsigned int pad1:1; 613fa225cbcSrjs unsigned int alpha_test_format:1; 614fa225cbcSrjs unsigned int pad2:16; 615fa225cbcSrjs } cc3; 616fa225cbcSrjs 617fa225cbcSrjs struct 618fa225cbcSrjs { 619fa225cbcSrjs unsigned int pad0:5; 620fa225cbcSrjs unsigned int cc_viewport_state_offset:27; 621fa225cbcSrjs } cc4; 622fa225cbcSrjs 623fa225cbcSrjs struct 624fa225cbcSrjs { 625fa225cbcSrjs unsigned int pad0:2; 626fa225cbcSrjs unsigned int ia_dest_blend_factor:5; 627fa225cbcSrjs unsigned int ia_src_blend_factor:5; 628fa225cbcSrjs unsigned int ia_blend_function:3; 629fa225cbcSrjs unsigned int statistics_enable:1; 630fa225cbcSrjs unsigned int logicop_func:4; 631fa225cbcSrjs unsigned int pad1:11; 632fa225cbcSrjs unsigned int dither_enable:1; 633fa225cbcSrjs } cc5; 634fa225cbcSrjs 635fa225cbcSrjs struct 636fa225cbcSrjs { 637fa225cbcSrjs unsigned int clamp_post_alpha_blend:1; 638fa225cbcSrjs unsigned int clamp_pre_alpha_blend:1; 639fa225cbcSrjs unsigned int clamp_range:2; 640fa225cbcSrjs unsigned int pad0:11; 641fa225cbcSrjs unsigned int y_dither_offset:2; 642fa225cbcSrjs unsigned int x_dither_offset:2; 643fa225cbcSrjs unsigned int dest_blend_factor:5; 644fa225cbcSrjs unsigned int src_blend_factor:5; 645fa225cbcSrjs unsigned int blend_function:3; 646fa225cbcSrjs } cc6; 647fa225cbcSrjs 648fa225cbcSrjs struct { 649fa225cbcSrjs union { 650fa225cbcSrjs float f; 651fa225cbcSrjs unsigned char ub[4]; 652fa225cbcSrjs } alpha_ref; 653fa225cbcSrjs } cc7; 654fa225cbcSrjs}; 655fa225cbcSrjs 656fa225cbcSrjs 657fa225cbcSrjs 658fa225cbcSrjsstruct brw_sf_unit_state 659fa225cbcSrjs{ 660fa225cbcSrjs struct thread0 thread0; 661fa225cbcSrjs struct { 662fa225cbcSrjs unsigned int pad0:7; 663fa225cbcSrjs unsigned int sw_exception_enable:1; 664fa225cbcSrjs unsigned int pad1:3; 665fa225cbcSrjs unsigned int mask_stack_exception_enable:1; 666fa225cbcSrjs unsigned int pad2:1; 667fa225cbcSrjs unsigned int illegal_op_exception_enable:1; 668fa225cbcSrjs unsigned int pad3:2; 669fa225cbcSrjs unsigned int floating_point_mode:1; 670fa225cbcSrjs unsigned int thread_priority:1; 671fa225cbcSrjs unsigned int binding_table_entry_count:8; 672fa225cbcSrjs unsigned int pad4:5; 673fa225cbcSrjs unsigned int single_program_flow:1; 674fa225cbcSrjs } sf1; 675fa225cbcSrjs 676fa225cbcSrjs struct thread2 thread2; 677fa225cbcSrjs struct thread3 thread3; 678fa225cbcSrjs 679fa225cbcSrjs struct 680fa225cbcSrjs { 681fa225cbcSrjs unsigned int pad0:10; 682fa225cbcSrjs unsigned int stats_enable:1; 683fa225cbcSrjs unsigned int nr_urb_entries:7; 684fa225cbcSrjs unsigned int pad1:1; 685fa225cbcSrjs unsigned int urb_entry_allocation_size:5; 686fa225cbcSrjs unsigned int pad2:1; 687fa225cbcSrjs unsigned int max_threads:6; 688fa225cbcSrjs unsigned int pad3:1; 689fa225cbcSrjs } thread4; 690fa225cbcSrjs 691fa225cbcSrjs struct 692fa225cbcSrjs { 693fa225cbcSrjs unsigned int front_winding:1; 694fa225cbcSrjs unsigned int viewport_transform:1; 695fa225cbcSrjs unsigned int pad0:3; 696fa225cbcSrjs unsigned int sf_viewport_state_offset:27; 697fa225cbcSrjs } sf5; 698fa225cbcSrjs 699fa225cbcSrjs struct 700fa225cbcSrjs { 701fa225cbcSrjs unsigned int pad0:9; 702fa225cbcSrjs unsigned int dest_org_vbias:4; 703fa225cbcSrjs unsigned int dest_org_hbias:4; 704fa225cbcSrjs unsigned int scissor:1; 705fa225cbcSrjs unsigned int disable_2x2_trifilter:1; 706fa225cbcSrjs unsigned int disable_zero_pix_trifilter:1; 707fa225cbcSrjs unsigned int point_rast_rule:2; 708fa225cbcSrjs unsigned int line_endcap_aa_region_width:2; 709fa225cbcSrjs unsigned int line_width:4; 710fa225cbcSrjs unsigned int fast_scissor_disable:1; 711fa225cbcSrjs unsigned int cull_mode:2; 712fa225cbcSrjs unsigned int aa_enable:1; 713fa225cbcSrjs } sf6; 714fa225cbcSrjs 715fa225cbcSrjs struct 716fa225cbcSrjs { 717fa225cbcSrjs unsigned int point_size:11; 718fa225cbcSrjs unsigned int use_point_size_state:1; 719fa225cbcSrjs unsigned int subpixel_precision:1; 720fa225cbcSrjs unsigned int sprite_point:1; 721fa225cbcSrjs unsigned int pad0:11; 722fa225cbcSrjs unsigned int trifan_pv:2; 723fa225cbcSrjs unsigned int linestrip_pv:2; 724fa225cbcSrjs unsigned int tristrip_pv:2; 725fa225cbcSrjs unsigned int line_last_pixel_enable:1; 726fa225cbcSrjs } sf7; 727fa225cbcSrjs 728fa225cbcSrjs}; 729fa225cbcSrjs 730fa225cbcSrjs 731fa225cbcSrjsstruct brw_gs_unit_state 732fa225cbcSrjs{ 733fa225cbcSrjs struct thread0 thread0; 734fa225cbcSrjs struct thread1 thread1; 735fa225cbcSrjs struct thread2 thread2; 736fa225cbcSrjs struct thread3 thread3; 737fa225cbcSrjs 738fa225cbcSrjs struct 739fa225cbcSrjs { 740fa225cbcSrjs unsigned int pad0:10; 741fa225cbcSrjs unsigned int stats_enable:1; 742fa225cbcSrjs unsigned int nr_urb_entries:7; 743fa225cbcSrjs unsigned int pad1:1; 744fa225cbcSrjs unsigned int urb_entry_allocation_size:5; 745fa225cbcSrjs unsigned int pad2:1; 746fa225cbcSrjs unsigned int max_threads:1; 747fa225cbcSrjs unsigned int pad3:6; 748fa225cbcSrjs } thread4; 749fa225cbcSrjs 750fa225cbcSrjs struct 751fa225cbcSrjs { 752fa225cbcSrjs unsigned int sampler_count:3; 753fa225cbcSrjs unsigned int pad0:2; 754fa225cbcSrjs unsigned int sampler_state_pointer:27; 755fa225cbcSrjs } gs5; 756fa225cbcSrjs 757fa225cbcSrjs 758fa225cbcSrjs struct 759fa225cbcSrjs { 760fa225cbcSrjs unsigned int max_vp_index:4; 761fa225cbcSrjs unsigned int pad0:26; 762fa225cbcSrjs unsigned int reorder_enable:1; 763fa225cbcSrjs unsigned int pad1:1; 764fa225cbcSrjs } gs6; 765fa225cbcSrjs}; 766fa225cbcSrjs 767fa225cbcSrjs 768fa225cbcSrjsstruct brw_vs_unit_state 769fa225cbcSrjs{ 770fa225cbcSrjs struct thread0 thread0; 771fa225cbcSrjs struct thread1 thread1; 772fa225cbcSrjs struct thread2 thread2; 773fa225cbcSrjs struct thread3 thread3; 774fa225cbcSrjs 775fa225cbcSrjs struct 776fa225cbcSrjs { 777fa225cbcSrjs unsigned int pad0:10; 778fa225cbcSrjs unsigned int stats_enable:1; 779fa225cbcSrjs unsigned int nr_urb_entries:7; 780fa225cbcSrjs unsigned int pad1:1; 781fa225cbcSrjs unsigned int urb_entry_allocation_size:5; 782fa225cbcSrjs unsigned int pad2:1; 783fa225cbcSrjs unsigned int max_threads:4; 784fa225cbcSrjs unsigned int pad3:3; 785fa225cbcSrjs } thread4; 786fa225cbcSrjs 787fa225cbcSrjs struct 788fa225cbcSrjs { 789fa225cbcSrjs unsigned int sampler_count:3; 790fa225cbcSrjs unsigned int pad0:2; 791fa225cbcSrjs unsigned int sampler_state_pointer:27; 792fa225cbcSrjs } vs5; 793fa225cbcSrjs 794fa225cbcSrjs struct 795fa225cbcSrjs { 796fa225cbcSrjs unsigned int vs_enable:1; 797fa225cbcSrjs unsigned int vert_cache_disable:1; 798fa225cbcSrjs unsigned int pad0:30; 799fa225cbcSrjs } vs6; 800fa225cbcSrjs}; 801fa225cbcSrjs 802fa225cbcSrjs 803fa225cbcSrjsstruct brw_wm_unit_state 804fa225cbcSrjs{ 805fa225cbcSrjs struct thread0 thread0; 806fa225cbcSrjs struct thread1 thread1; 807fa225cbcSrjs struct thread2 thread2; 808fa225cbcSrjs struct thread3 thread3; 809fa225cbcSrjs 810fa225cbcSrjs struct { 811fa225cbcSrjs unsigned int stats_enable:1; 812fa225cbcSrjs unsigned int pad0:1; 813fa225cbcSrjs unsigned int sampler_count:3; 814fa225cbcSrjs unsigned int sampler_state_pointer:27; 815fa225cbcSrjs } wm4; 816fa225cbcSrjs 817fa225cbcSrjs struct 818fa225cbcSrjs { 819fa225cbcSrjs unsigned int enable_8_pix:1; 820fa225cbcSrjs unsigned int enable_16_pix:1; 821fa225cbcSrjs unsigned int enable_32_pix:1; 822fa225cbcSrjs unsigned int pad0:7; 823fa225cbcSrjs unsigned int legacy_global_depth_bias:1; 824fa225cbcSrjs unsigned int line_stipple:1; 825fa225cbcSrjs unsigned int depth_offset:1; 826fa225cbcSrjs unsigned int polygon_stipple:1; 827fa225cbcSrjs unsigned int line_aa_region_width:2; 828fa225cbcSrjs unsigned int line_endcap_aa_region_width:2; 829fa225cbcSrjs unsigned int early_depth_test:1; 830fa225cbcSrjs unsigned int thread_dispatch_enable:1; 831fa225cbcSrjs unsigned int program_uses_depth:1; 832fa225cbcSrjs unsigned int program_computes_depth:1; 833fa225cbcSrjs unsigned int program_uses_killpixel:1; 834fa225cbcSrjs unsigned int legacy_line_rast: 1; 835fa225cbcSrjs unsigned int transposed_urb_read:1; 836fa225cbcSrjs unsigned int max_threads:7; 837fa225cbcSrjs } wm5; 838fa225cbcSrjs 839fa225cbcSrjs float global_depth_offset_constant; 840fa225cbcSrjs float global_depth_offset_scale; 841fa225cbcSrjs 842fa225cbcSrjs struct { 843fa225cbcSrjs unsigned int pad0:1; 844fa225cbcSrjs unsigned int grf_reg_count_1:3; 845fa225cbcSrjs unsigned int pad1:2; 846fa225cbcSrjs unsigned int kernel_start_pointer_1:26; 847fa225cbcSrjs } wm8; 848fa225cbcSrjs 849fa225cbcSrjs struct { 850fa225cbcSrjs unsigned int pad0:1; 851fa225cbcSrjs unsigned int grf_reg_count_2:3; 852fa225cbcSrjs unsigned int pad1:2; 853fa225cbcSrjs unsigned int kernel_start_pointer_2:26; 854fa225cbcSrjs } wm9; 855fa225cbcSrjs 856fa225cbcSrjs struct { 857fa225cbcSrjs unsigned int pad0:1; 858fa225cbcSrjs unsigned int grf_reg_count_3:3; 859fa225cbcSrjs unsigned int pad1:2; 860fa225cbcSrjs unsigned int kernel_start_pointer_3:26; 861fa225cbcSrjs } wm10; 862fa225cbcSrjs}; 863fa225cbcSrjs 864fa225cbcSrjs/* The hardware supports two different modes for border color. The 865fa225cbcSrjs * default (OpenGL) mode uses floating-point color channels, while the 866fa225cbcSrjs * legacy mode uses 4 bytes. 867fa225cbcSrjs * 868fa225cbcSrjs * More significantly, the legacy mode respects the components of the 869fa225cbcSrjs * border color for channels not present in the source, (whereas the 870fa225cbcSrjs * default mode will ignore the border color's alpha channel and use 871fa225cbcSrjs * alpha==1 for an RGB source, for example). 872fa225cbcSrjs * 873fa225cbcSrjs * The legacy mode matches the semantics specified by the Render 874fa225cbcSrjs * extension. 875fa225cbcSrjs */ 876fa225cbcSrjsstruct brw_sampler_default_border_color { 877fa225cbcSrjs float color[4]; 878fa225cbcSrjs}; 879fa225cbcSrjs 880fa225cbcSrjsstruct brw_sampler_legacy_border_color { 881fa225cbcSrjs uint8_t color[4]; 882fa225cbcSrjs}; 883fa225cbcSrjs 884fa225cbcSrjsstruct brw_sampler_state 885fa225cbcSrjs{ 886fa225cbcSrjs 887fa225cbcSrjs struct 888fa225cbcSrjs { 889fa225cbcSrjs unsigned int shadow_function:3; 890fa225cbcSrjs unsigned int lod_bias:11; 891fa225cbcSrjs unsigned int min_filter:3; 892fa225cbcSrjs unsigned int mag_filter:3; 893fa225cbcSrjs unsigned int mip_filter:2; 894fa225cbcSrjs unsigned int base_level:5; 895fa225cbcSrjs unsigned int pad:1; 896fa225cbcSrjs unsigned int lod_preclamp:1; 897fa225cbcSrjs unsigned int border_color_mode:1; 898fa225cbcSrjs unsigned int pad0:1; 899fa225cbcSrjs unsigned int disable:1; 900fa225cbcSrjs } ss0; 901fa225cbcSrjs 902fa225cbcSrjs struct 903fa225cbcSrjs { 904fa225cbcSrjs unsigned int r_wrap_mode:3; 905fa225cbcSrjs unsigned int t_wrap_mode:3; 906fa225cbcSrjs unsigned int s_wrap_mode:3; 907fa225cbcSrjs unsigned int pad:3; 908fa225cbcSrjs unsigned int max_lod:10; 909fa225cbcSrjs unsigned int min_lod:10; 910fa225cbcSrjs } ss1; 911fa225cbcSrjs 912fa225cbcSrjs 913fa225cbcSrjs struct 914fa225cbcSrjs { 915fa225cbcSrjs unsigned int pad:5; 916fa225cbcSrjs unsigned int border_color_pointer:27; 917fa225cbcSrjs } ss2; 918fa225cbcSrjs 919fa225cbcSrjs struct 920fa225cbcSrjs { 921fa225cbcSrjs unsigned int pad:19; 922fa225cbcSrjs unsigned int max_aniso:3; 923fa225cbcSrjs unsigned int chroma_key_mode:1; 924fa225cbcSrjs unsigned int chroma_key_index:2; 925fa225cbcSrjs unsigned int chroma_key_enable:1; 926fa225cbcSrjs unsigned int monochrome_filter_width:3; 927fa225cbcSrjs unsigned int monochrome_filter_height:3; 928fa225cbcSrjs } ss3; 929fa225cbcSrjs}; 930fa225cbcSrjs 931fa225cbcSrjs 932fa225cbcSrjsstruct brw_clipper_viewport 933fa225cbcSrjs{ 934fa225cbcSrjs float xmin; 935fa225cbcSrjs float xmax; 936fa225cbcSrjs float ymin; 937fa225cbcSrjs float ymax; 938fa225cbcSrjs}; 939fa225cbcSrjs 940fa225cbcSrjsstruct brw_cc_viewport 941fa225cbcSrjs{ 942fa225cbcSrjs float min_depth; 943fa225cbcSrjs float max_depth; 944fa225cbcSrjs}; 945fa225cbcSrjs 946fa225cbcSrjsstruct brw_sf_viewport 947fa225cbcSrjs{ 948fa225cbcSrjs struct { 949fa225cbcSrjs float m00; 950fa225cbcSrjs float m11; 951fa225cbcSrjs float m22; 952fa225cbcSrjs float m30; 953fa225cbcSrjs float m31; 954fa225cbcSrjs float m32; 955fa225cbcSrjs } viewport; 956fa225cbcSrjs 957fa225cbcSrjs struct { 958fa225cbcSrjs short xmin; 959fa225cbcSrjs short ymin; 960fa225cbcSrjs short xmax; 961fa225cbcSrjs short ymax; 962fa225cbcSrjs } scissor; 963fa225cbcSrjs}; 964fa225cbcSrjs 965fa225cbcSrjs/* Documented in the subsystem/shared-functions/sampler chapter... 966fa225cbcSrjs */ 967fa225cbcSrjsstruct brw_surface_state 968fa225cbcSrjs{ 969fa225cbcSrjs struct { 970fa225cbcSrjs unsigned int cube_pos_z:1; 971fa225cbcSrjs unsigned int cube_neg_z:1; 972fa225cbcSrjs unsigned int cube_pos_y:1; 973fa225cbcSrjs unsigned int cube_neg_y:1; 974fa225cbcSrjs unsigned int cube_pos_x:1; 975fa225cbcSrjs unsigned int cube_neg_x:1; 976fa225cbcSrjs unsigned int pad:3; 977fa225cbcSrjs unsigned int render_cache_read_mode:1; 978fa225cbcSrjs unsigned int mipmap_layout_mode:1; 979fa225cbcSrjs unsigned int vert_line_stride_ofs:1; 980fa225cbcSrjs unsigned int vert_line_stride:1; 981fa225cbcSrjs unsigned int color_blend:1; 982fa225cbcSrjs unsigned int writedisable_blue:1; 983fa225cbcSrjs unsigned int writedisable_green:1; 984fa225cbcSrjs unsigned int writedisable_red:1; 985fa225cbcSrjs unsigned int writedisable_alpha:1; 986fa225cbcSrjs unsigned int surface_format:9; 987fa225cbcSrjs unsigned int data_return_format:1; 988fa225cbcSrjs unsigned int pad0:1; 989fa225cbcSrjs unsigned int surface_type:3; 990fa225cbcSrjs } ss0; 991fa225cbcSrjs 992fa225cbcSrjs struct { 993fa225cbcSrjs unsigned int base_addr; 994fa225cbcSrjs } ss1; 995fa225cbcSrjs 996fa225cbcSrjs struct { 997fa225cbcSrjs unsigned int render_target_rotation:2; 998fa225cbcSrjs unsigned int mip_count:4; 999fa225cbcSrjs unsigned int width:13; 1000fa225cbcSrjs unsigned int height:13; 1001fa225cbcSrjs } ss2; 1002fa225cbcSrjs 1003fa225cbcSrjs struct { 1004fa225cbcSrjs unsigned int tile_walk:1; 1005fa225cbcSrjs unsigned int tiled_surface:1; 1006fa225cbcSrjs unsigned int pad:1; 1007fa225cbcSrjs unsigned int pitch:18; 1008fa225cbcSrjs unsigned int depth:11; 1009fa225cbcSrjs } ss3; 1010fa225cbcSrjs 1011fa225cbcSrjs struct { 1012fa225cbcSrjs unsigned int pad:19; 1013fa225cbcSrjs unsigned int min_array_elt:9; 1014fa225cbcSrjs unsigned int min_lod:4; 1015fa225cbcSrjs } ss4; 1016fa225cbcSrjs 1017fa225cbcSrjs struct { 1018fa225cbcSrjs unsigned int pad:20; 1019fa225cbcSrjs unsigned int y_offset:4; 1020fa225cbcSrjs unsigned int pad2:1; 1021fa225cbcSrjs unsigned int x_offset:7; 1022fa225cbcSrjs } ss5; 1023fa225cbcSrjs}; 1024fa225cbcSrjs 1025fa225cbcSrjs 1026fa225cbcSrjs 1027fa225cbcSrjsstruct brw_vertex_buffer_state 1028fa225cbcSrjs{ 1029fa225cbcSrjs struct { 1030fa225cbcSrjs unsigned int pitch:11; 1031fa225cbcSrjs unsigned int pad:15; 1032fa225cbcSrjs unsigned int access_type:1; 1033fa225cbcSrjs unsigned int vb_index:5; 1034fa225cbcSrjs } vb0; 1035fa225cbcSrjs 1036fa225cbcSrjs unsigned int start_addr; 1037fa225cbcSrjs unsigned int max_index; 1038fa225cbcSrjs#if 1 1039fa225cbcSrjs unsigned int instance_data_step_rate; /* not included for sequential/random vertices? */ 1040fa225cbcSrjs#endif 1041fa225cbcSrjs}; 1042fa225cbcSrjs 1043fa225cbcSrjs#define BRW_VBP_MAX 17 1044fa225cbcSrjs 1045fa225cbcSrjsstruct brw_vb_array_state { 1046fa225cbcSrjs struct header header; 1047fa225cbcSrjs struct brw_vertex_buffer_state vb[BRW_VBP_MAX]; 1048fa225cbcSrjs}; 1049fa225cbcSrjs 1050fa225cbcSrjs 1051fa225cbcSrjsstruct brw_vertex_element_state 1052fa225cbcSrjs{ 1053fa225cbcSrjs struct 1054fa225cbcSrjs { 1055fa225cbcSrjs unsigned int src_offset:11; 1056fa225cbcSrjs unsigned int pad:5; 1057fa225cbcSrjs unsigned int src_format:9; 1058fa225cbcSrjs unsigned int pad0:1; 1059fa225cbcSrjs unsigned int valid:1; 1060fa225cbcSrjs unsigned int vertex_buffer_index:5; 1061fa225cbcSrjs } ve0; 1062fa225cbcSrjs 1063fa225cbcSrjs struct 1064fa225cbcSrjs { 1065fa225cbcSrjs unsigned int dst_offset:8; 1066fa225cbcSrjs unsigned int pad:8; 1067fa225cbcSrjs unsigned int vfcomponent3:4; 1068fa225cbcSrjs unsigned int vfcomponent2:4; 1069fa225cbcSrjs unsigned int vfcomponent1:4; 1070fa225cbcSrjs unsigned int vfcomponent0:4; 1071fa225cbcSrjs } ve1; 1072fa225cbcSrjs}; 1073fa225cbcSrjs 1074fa225cbcSrjs#define BRW_VEP_MAX 18 1075fa225cbcSrjs 1076fa225cbcSrjsstruct brw_vertex_element_packet { 1077fa225cbcSrjs struct header header; 1078fa225cbcSrjs struct brw_vertex_element_state ve[BRW_VEP_MAX]; /* note: less than _TNL_ATTRIB_MAX */ 1079fa225cbcSrjs}; 1080fa225cbcSrjs 1081fa225cbcSrjs 1082fa225cbcSrjsstruct brw_urb_immediate { 1083fa225cbcSrjs unsigned int opcode:4; 1084fa225cbcSrjs unsigned int offset:6; 1085fa225cbcSrjs unsigned int swizzle_control:2; 1086fa225cbcSrjs unsigned int pad:1; 1087fa225cbcSrjs unsigned int allocate:1; 1088fa225cbcSrjs unsigned int used:1; 1089fa225cbcSrjs unsigned int complete:1; 1090fa225cbcSrjs unsigned int response_length:4; 1091fa225cbcSrjs unsigned int msg_length:4; 1092fa225cbcSrjs unsigned int msg_target:4; 1093fa225cbcSrjs unsigned int pad1:3; 1094fa225cbcSrjs unsigned int end_of_thread:1; 1095fa225cbcSrjs}; 1096fa225cbcSrjs 1097fa225cbcSrjs/* Instruction format for the execution units: 1098fa225cbcSrjs */ 1099fa225cbcSrjs 1100fa225cbcSrjsstruct brw_instruction 1101fa225cbcSrjs{ 1102fa225cbcSrjs struct 1103fa225cbcSrjs { 1104fa225cbcSrjs unsigned int opcode:7; 1105fa225cbcSrjs unsigned int pad:1; 1106fa225cbcSrjs unsigned int access_mode:1; 1107fa225cbcSrjs unsigned int mask_control:1; 1108fa225cbcSrjs unsigned int dependency_control:2; 1109fa225cbcSrjs unsigned int compression_control:2; 1110fa225cbcSrjs unsigned int thread_control:2; 1111fa225cbcSrjs unsigned int predicate_control:4; 1112fa225cbcSrjs unsigned int predicate_inverse:1; 1113fa225cbcSrjs unsigned int execution_size:3; 1114fa225cbcSrjs unsigned int destreg__conditonalmod:4; /* destreg - send, conditionalmod - others */ 1115fa225cbcSrjs unsigned int pad0:2; 1116fa225cbcSrjs unsigned int debug_control:1; 1117fa225cbcSrjs unsigned int saturate:1; 1118fa225cbcSrjs } header; 1119fa225cbcSrjs 1120fa225cbcSrjs union { 1121fa225cbcSrjs struct 1122fa225cbcSrjs { 1123fa225cbcSrjs unsigned int dest_reg_file:2; 1124fa225cbcSrjs unsigned int dest_reg_type:3; 1125fa225cbcSrjs unsigned int src0_reg_file:2; 1126fa225cbcSrjs unsigned int src0_reg_type:3; 1127fa225cbcSrjs unsigned int src1_reg_file:2; 1128fa225cbcSrjs unsigned int src1_reg_type:3; 1129fa225cbcSrjs unsigned int pad:1; 1130fa225cbcSrjs unsigned int dest_subreg_nr:5; 1131fa225cbcSrjs unsigned int dest_reg_nr:8; 1132fa225cbcSrjs unsigned int dest_horiz_stride:2; 1133fa225cbcSrjs unsigned int dest_address_mode:1; 1134fa225cbcSrjs } da1; 1135fa225cbcSrjs 1136fa225cbcSrjs struct 1137fa225cbcSrjs { 1138fa225cbcSrjs unsigned int dest_reg_file:2; 1139fa225cbcSrjs unsigned int dest_reg_type:3; 1140fa225cbcSrjs unsigned int src0_reg_file:2; 1141fa225cbcSrjs unsigned int src0_reg_type:3; 1142fa225cbcSrjs unsigned int pad:6; 1143fa225cbcSrjs int dest_indirect_offset:10; /* offset against the deref'd address reg */ 1144fa225cbcSrjs unsigned int dest_subreg_nr:3; /* subnr for the address reg a0.x */ 1145fa225cbcSrjs unsigned int dest_horiz_stride:2; 1146fa225cbcSrjs unsigned int dest_address_mode:1; 1147fa225cbcSrjs } ia1; 1148fa225cbcSrjs 1149fa225cbcSrjs struct 1150fa225cbcSrjs { 1151fa225cbcSrjs unsigned int dest_reg_file:2; 1152fa225cbcSrjs unsigned int dest_reg_type:3; 1153fa225cbcSrjs unsigned int src0_reg_file:2; 1154fa225cbcSrjs unsigned int src0_reg_type:3; 1155fa225cbcSrjs unsigned int src1_reg_file:2; 1156fa225cbcSrjs unsigned int src1_reg_type:3; 1157fa225cbcSrjs unsigned int pad0:1; 1158fa225cbcSrjs unsigned int dest_writemask:4; 1159fa225cbcSrjs unsigned int dest_subreg_nr:1; 1160fa225cbcSrjs unsigned int dest_reg_nr:8; 1161fa225cbcSrjs unsigned int pad1:2; 1162fa225cbcSrjs unsigned int dest_address_mode:1; 1163fa225cbcSrjs } da16; 1164fa225cbcSrjs 1165fa225cbcSrjs struct 1166fa225cbcSrjs { 1167fa225cbcSrjs unsigned int dest_reg_file:2; 1168fa225cbcSrjs unsigned int dest_reg_type:3; 1169fa225cbcSrjs unsigned int src0_reg_file:2; 1170fa225cbcSrjs unsigned int src0_reg_type:3; 1171fa225cbcSrjs unsigned int pad0:6; 1172fa225cbcSrjs unsigned int dest_writemask:4; 1173fa225cbcSrjs int dest_indirect_offset:6; 1174fa225cbcSrjs unsigned int dest_subreg_nr:3; 1175fa225cbcSrjs unsigned int pad1:2; 1176fa225cbcSrjs unsigned int dest_address_mode:1; 1177fa225cbcSrjs } ia16; 1178fa225cbcSrjs } bits1; 1179fa225cbcSrjs 1180fa225cbcSrjs 1181fa225cbcSrjs union { 1182fa225cbcSrjs struct 1183fa225cbcSrjs { 1184fa225cbcSrjs unsigned int src0_subreg_nr:5; 1185fa225cbcSrjs unsigned int src0_reg_nr:8; 1186fa225cbcSrjs unsigned int src0_abs:1; 1187fa225cbcSrjs unsigned int src0_negate:1; 1188fa225cbcSrjs unsigned int src0_address_mode:1; 1189fa225cbcSrjs unsigned int src0_horiz_stride:2; 1190fa225cbcSrjs unsigned int src0_width:3; 1191fa225cbcSrjs unsigned int src0_vert_stride:4; 1192fa225cbcSrjs unsigned int flag_reg_nr:1; 1193fa225cbcSrjs unsigned int pad:6; 1194fa225cbcSrjs } da1; 1195fa225cbcSrjs 1196fa225cbcSrjs struct 1197fa225cbcSrjs { 1198fa225cbcSrjs int src0_indirect_offset:10; 1199fa225cbcSrjs unsigned int src0_subreg_nr:3; 1200fa225cbcSrjs unsigned int src0_abs:1; 1201fa225cbcSrjs unsigned int src0_negate:1; 1202fa225cbcSrjs unsigned int src0_address_mode:1; 1203fa225cbcSrjs unsigned int src0_horiz_stride:2; 1204fa225cbcSrjs unsigned int src0_width:3; 1205fa225cbcSrjs unsigned int src0_vert_stride:4; 1206fa225cbcSrjs unsigned int flag_reg_nr:1; 1207fa225cbcSrjs unsigned int pad:6; 1208fa225cbcSrjs } ia1; 1209fa225cbcSrjs 1210fa225cbcSrjs struct 1211fa225cbcSrjs { 1212fa225cbcSrjs unsigned int src0_swz_x:2; 1213fa225cbcSrjs unsigned int src0_swz_y:2; 1214fa225cbcSrjs unsigned int src0_subreg_nr:1; 1215fa225cbcSrjs unsigned int src0_reg_nr:8; 1216fa225cbcSrjs unsigned int src0_abs:1; 1217fa225cbcSrjs unsigned int src0_negate:1; 1218fa225cbcSrjs unsigned int src0_address_mode:1; 1219fa225cbcSrjs unsigned int src0_swz_z:2; 1220fa225cbcSrjs unsigned int src0_swz_w:2; 1221fa225cbcSrjs unsigned int pad0:1; 1222fa225cbcSrjs unsigned int src0_vert_stride:4; 1223fa225cbcSrjs unsigned int flag_reg_nr:1; 1224fa225cbcSrjs unsigned int pad1:6; 1225fa225cbcSrjs } da16; 1226fa225cbcSrjs 1227fa225cbcSrjs struct 1228fa225cbcSrjs { 1229fa225cbcSrjs unsigned int src0_swz_x:2; 1230fa225cbcSrjs unsigned int src0_swz_y:2; 1231fa225cbcSrjs int src0_indirect_offset:6; 1232fa225cbcSrjs unsigned int src0_subreg_nr:3; 1233fa225cbcSrjs unsigned int src0_abs:1; 1234fa225cbcSrjs unsigned int src0_negate:1; 1235fa225cbcSrjs unsigned int src0_address_mode:1; 1236fa225cbcSrjs unsigned int src0_swz_z:2; 1237fa225cbcSrjs unsigned int src0_swz_w:2; 1238fa225cbcSrjs unsigned int pad0:1; 1239fa225cbcSrjs unsigned int src0_vert_stride:4; 1240fa225cbcSrjs unsigned int flag_reg_nr:1; 1241fa225cbcSrjs unsigned int pad1:6; 1242fa225cbcSrjs } ia16; 1243fa225cbcSrjs 1244fa225cbcSrjs } bits2; 1245fa225cbcSrjs 1246fa225cbcSrjs union 1247fa225cbcSrjs { 1248fa225cbcSrjs struct 1249fa225cbcSrjs { 1250fa225cbcSrjs unsigned int src1_subreg_nr:5; 1251fa225cbcSrjs unsigned int src1_reg_nr:8; 1252fa225cbcSrjs unsigned int src1_abs:1; 1253fa225cbcSrjs unsigned int src1_negate:1; 1254fa225cbcSrjs unsigned int pad:1; 1255fa225cbcSrjs unsigned int src1_horiz_stride:2; 1256fa225cbcSrjs unsigned int src1_width:3; 1257fa225cbcSrjs unsigned int src1_vert_stride:4; 1258fa225cbcSrjs unsigned int pad0:7; 1259fa225cbcSrjs } da1; 1260fa225cbcSrjs 1261fa225cbcSrjs struct 1262fa225cbcSrjs { 1263fa225cbcSrjs unsigned int src1_swz_x:2; 1264fa225cbcSrjs unsigned int src1_swz_y:2; 1265fa225cbcSrjs unsigned int src1_subreg_nr:1; 1266fa225cbcSrjs unsigned int src1_reg_nr:8; 1267fa225cbcSrjs unsigned int src1_abs:1; 1268fa225cbcSrjs unsigned int src1_negate:1; 1269fa225cbcSrjs unsigned int pad0:1; 1270fa225cbcSrjs unsigned int src1_swz_z:2; 1271fa225cbcSrjs unsigned int src1_swz_w:2; 1272fa225cbcSrjs unsigned int pad1:1; 1273fa225cbcSrjs unsigned int src1_vert_stride:4; 1274fa225cbcSrjs unsigned int pad2:7; 1275fa225cbcSrjs } da16; 1276fa225cbcSrjs 1277fa225cbcSrjs struct 1278fa225cbcSrjs { 1279fa225cbcSrjs int src1_indirect_offset:10; 1280fa225cbcSrjs unsigned int src1_subreg_nr:3; 1281fa225cbcSrjs unsigned int src1_abs:1; 1282fa225cbcSrjs unsigned int src1_negate:1; 1283fa225cbcSrjs unsigned int pad0:1; 1284fa225cbcSrjs unsigned int src1_horiz_stride:2; 1285fa225cbcSrjs unsigned int src1_width:3; 1286fa225cbcSrjs unsigned int src1_vert_stride:4; 1287fa225cbcSrjs unsigned int flag_reg_nr:1; 1288fa225cbcSrjs unsigned int pad1:6; 1289fa225cbcSrjs } ia1; 1290fa225cbcSrjs 1291fa225cbcSrjs struct 1292fa225cbcSrjs { 1293fa225cbcSrjs unsigned int src1_swz_x:2; 1294fa225cbcSrjs unsigned int src1_swz_y:2; 1295fa225cbcSrjs int src1_indirect_offset:6; 1296fa225cbcSrjs unsigned int src1_subreg_nr:3; 1297fa225cbcSrjs unsigned int src1_abs:1; 1298fa225cbcSrjs unsigned int src1_negate:1; 1299fa225cbcSrjs unsigned int pad0:1; 1300fa225cbcSrjs unsigned int src1_swz_z:2; 1301fa225cbcSrjs unsigned int src1_swz_w:2; 1302fa225cbcSrjs unsigned int pad1:1; 1303fa225cbcSrjs unsigned int src1_vert_stride:4; 1304fa225cbcSrjs unsigned int flag_reg_nr:1; 1305fa225cbcSrjs unsigned int pad2:6; 1306fa225cbcSrjs } ia16; 1307fa225cbcSrjs 1308fa225cbcSrjs 1309fa225cbcSrjs struct 1310fa225cbcSrjs { 1311fa225cbcSrjs int jump_count:16; /* note: signed */ 1312fa225cbcSrjs unsigned int pop_count:4; 1313fa225cbcSrjs unsigned int pad0:12; 1314fa225cbcSrjs } if_else; 1315fa225cbcSrjs 1316fa225cbcSrjs struct { 1317fa225cbcSrjs unsigned int function:4; 1318fa225cbcSrjs unsigned int int_type:1; 1319fa225cbcSrjs unsigned int precision:1; 1320fa225cbcSrjs unsigned int saturate:1; 1321fa225cbcSrjs unsigned int data_type:1; 1322fa225cbcSrjs unsigned int pad0:8; 1323fa225cbcSrjs unsigned int response_length:4; 1324fa225cbcSrjs unsigned int msg_length:4; 1325fa225cbcSrjs unsigned int msg_target:4; 1326fa225cbcSrjs unsigned int pad1:3; 1327fa225cbcSrjs unsigned int end_of_thread:1; 1328fa225cbcSrjs } math; 1329fa225cbcSrjs 1330fa225cbcSrjs struct { 1331fa225cbcSrjs unsigned int binding_table_index:8; 1332fa225cbcSrjs unsigned int sampler:4; 1333fa225cbcSrjs unsigned int return_format:2; 1334fa225cbcSrjs unsigned int msg_type:2; 1335fa225cbcSrjs unsigned int response_length:4; 1336fa225cbcSrjs unsigned int msg_length:4; 1337fa225cbcSrjs unsigned int msg_target:4; 1338fa225cbcSrjs unsigned int pad1:3; 1339fa225cbcSrjs unsigned int end_of_thread:1; 1340fa225cbcSrjs } sampler; 1341fa225cbcSrjs 1342fa225cbcSrjs struct brw_urb_immediate urb; 1343fa225cbcSrjs 1344fa225cbcSrjs struct { 1345fa225cbcSrjs unsigned int binding_table_index:8; 1346fa225cbcSrjs unsigned int msg_control:4; 1347fa225cbcSrjs unsigned int msg_type:2; 1348fa225cbcSrjs unsigned int target_cache:2; 1349fa225cbcSrjs unsigned int response_length:4; 1350fa225cbcSrjs unsigned int msg_length:4; 1351fa225cbcSrjs unsigned int msg_target:4; 1352fa225cbcSrjs unsigned int pad1:3; 1353fa225cbcSrjs unsigned int end_of_thread:1; 1354fa225cbcSrjs } dp_read; 1355fa225cbcSrjs 1356fa225cbcSrjs struct { 1357fa225cbcSrjs unsigned int binding_table_index:8; 1358fa225cbcSrjs unsigned int msg_control:3; 1359fa225cbcSrjs unsigned int pixel_scoreboard_clear:1; 1360fa225cbcSrjs unsigned int msg_type:3; 1361fa225cbcSrjs unsigned int send_commit_msg:1; 1362fa225cbcSrjs unsigned int response_length:4; 1363fa225cbcSrjs unsigned int msg_length:4; 1364fa225cbcSrjs unsigned int msg_target:4; 1365fa225cbcSrjs unsigned int pad1:3; 1366fa225cbcSrjs unsigned int end_of_thread:1; 1367fa225cbcSrjs } dp_write; 1368fa225cbcSrjs 1369fa225cbcSrjs struct { 1370fa225cbcSrjs unsigned int pad:16; 1371fa225cbcSrjs unsigned int response_length:4; 1372fa225cbcSrjs unsigned int msg_length:4; 1373fa225cbcSrjs unsigned int msg_target:4; 1374fa225cbcSrjs unsigned int pad1:3; 1375fa225cbcSrjs unsigned int end_of_thread:1; 1376fa225cbcSrjs } generic; 1377fa225cbcSrjs 1378fa225cbcSrjs unsigned int ud; 1379fa225cbcSrjs } bits3; 1380fa225cbcSrjs}; 1381fa225cbcSrjs 1382fa225cbcSrjs/* media pipeline */ 1383fa225cbcSrjs 1384fa225cbcSrjsstruct brw_vfe_state { 1385fa225cbcSrjs struct { 1386fa225cbcSrjs unsigned int per_thread_scratch_space:4; 1387fa225cbcSrjs unsigned int pad3:3; 1388fa225cbcSrjs unsigned int extend_vfe_state_present:1; 1389fa225cbcSrjs unsigned int pad2:2; 1390fa225cbcSrjs unsigned int scratch_base:22; 1391fa225cbcSrjs } vfe0; 1392fa225cbcSrjs 1393fa225cbcSrjs struct { 1394fa225cbcSrjs unsigned int debug_counter_control:2; 1395fa225cbcSrjs unsigned int children_present:1; 1396fa225cbcSrjs unsigned int vfe_mode:4; 1397fa225cbcSrjs unsigned int pad2:2; 1398fa225cbcSrjs unsigned int num_urb_entries:7; 1399fa225cbcSrjs unsigned int urb_entry_alloc_size:9; 1400fa225cbcSrjs unsigned int max_threads:7; 1401fa225cbcSrjs } vfe1; 1402fa225cbcSrjs 1403fa225cbcSrjs struct { 1404fa225cbcSrjs unsigned int pad4:4; 1405fa225cbcSrjs unsigned int interface_descriptor_base:28; 1406fa225cbcSrjs } vfe2; 1407fa225cbcSrjs}; 1408fa225cbcSrjs 1409fa225cbcSrjsstruct brw_vld_state { 1410fa225cbcSrjs struct { 1411fa225cbcSrjs unsigned int pad6:6; 1412fa225cbcSrjs unsigned int scan_order:1; 1413fa225cbcSrjs unsigned int intra_vlc_format:1; 1414fa225cbcSrjs unsigned int quantizer_scale_type:1; 1415fa225cbcSrjs unsigned int concealment_motion_vector:1; 1416fa225cbcSrjs unsigned int frame_predict_frame_dct:1; 1417fa225cbcSrjs unsigned int top_field_first:1; 1418fa225cbcSrjs unsigned int picture_structure:2; 1419fa225cbcSrjs unsigned int intra_dc_precision:2; 1420fa225cbcSrjs unsigned int f_code_0_0:4; 1421fa225cbcSrjs unsigned int f_code_0_1:4; 1422fa225cbcSrjs unsigned int f_code_1_0:4; 1423fa225cbcSrjs unsigned int f_code_1_1:4; 1424fa225cbcSrjs } vld0; 1425fa225cbcSrjs 1426fa225cbcSrjs struct { 1427fa225cbcSrjs unsigned int pad2:9; 1428fa225cbcSrjs unsigned int picture_coding_type:2; 1429fa225cbcSrjs unsigned int pad:21; 1430fa225cbcSrjs } vld1; 1431fa225cbcSrjs 1432fa225cbcSrjs struct { 1433fa225cbcSrjs unsigned int index_0:4; 1434fa225cbcSrjs unsigned int index_1:4; 1435fa225cbcSrjs unsigned int index_2:4; 1436fa225cbcSrjs unsigned int index_3:4; 1437fa225cbcSrjs unsigned int index_4:4; 1438fa225cbcSrjs unsigned int index_5:4; 1439fa225cbcSrjs unsigned int index_6:4; 1440fa225cbcSrjs unsigned int index_7:4; 1441fa225cbcSrjs } desc_remap_table0; 1442fa225cbcSrjs 1443fa225cbcSrjs struct { 1444fa225cbcSrjs unsigned int index_8:4; 1445fa225cbcSrjs unsigned int index_9:4; 1446fa225cbcSrjs unsigned int index_10:4; 1447fa225cbcSrjs unsigned int index_11:4; 1448fa225cbcSrjs unsigned int index_12:4; 1449fa225cbcSrjs unsigned int index_13:4; 1450fa225cbcSrjs unsigned int index_14:4; 1451fa225cbcSrjs unsigned int index_15:4; 1452fa225cbcSrjs } desc_remap_table1; 1453fa225cbcSrjs}; 1454fa225cbcSrjs 1455fa225cbcSrjsstruct brw_interface_descriptor { 1456fa225cbcSrjs struct { 1457fa225cbcSrjs unsigned int grf_reg_blocks:4; 1458fa225cbcSrjs unsigned int pad:2; 1459fa225cbcSrjs unsigned int kernel_start_pointer:26; 1460fa225cbcSrjs } desc0; 1461fa225cbcSrjs 1462fa225cbcSrjs struct { 1463fa225cbcSrjs unsigned int pad:7; 1464fa225cbcSrjs unsigned int software_exception:1; 1465fa225cbcSrjs unsigned int pad2:3; 1466fa225cbcSrjs unsigned int maskstack_exception:1; 1467fa225cbcSrjs unsigned int pad3:1; 1468fa225cbcSrjs unsigned int illegal_opcode_exception:1; 1469fa225cbcSrjs unsigned int pad4:2; 1470fa225cbcSrjs unsigned int floating_point_mode:1; 1471fa225cbcSrjs unsigned int thread_priority:1; 1472fa225cbcSrjs unsigned int single_program_flow:1; 1473fa225cbcSrjs unsigned int pad5:1; 1474fa225cbcSrjs unsigned int const_urb_entry_read_offset:6; 1475fa225cbcSrjs unsigned int const_urb_entry_read_len:6; 1476fa225cbcSrjs } desc1; 1477fa225cbcSrjs 1478fa225cbcSrjs struct { 1479fa225cbcSrjs unsigned int pad:2; 1480fa225cbcSrjs unsigned int sampler_count:3; 1481fa225cbcSrjs unsigned int sampler_state_pointer:27; 1482fa225cbcSrjs } desc2; 1483fa225cbcSrjs 1484fa225cbcSrjs struct { 1485fa225cbcSrjs unsigned int binding_table_entry_count:5; 1486fa225cbcSrjs unsigned int binding_table_pointer:27; 1487fa225cbcSrjs } desc3; 1488fa225cbcSrjs}; 1489fa225cbcSrjs 1490fa225cbcSrjs#endif 1491