19f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt/* 29f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt Copyright (C) Intel Corp. 2006. All Rights Reserved. 39f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt Intel funded Tungsten Graphics (http://www.tungstengraphics.com) to 49f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt develop this 3D driver. 59f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 69f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt Permission is hereby granted, free of charge, to any person obtaining 79f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt a copy of this software and associated documentation files (the 89f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt "Software"), to deal in the Software without restriction, including 99f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt without limitation the rights to use, copy, modify, merge, publish, 109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt distribute, sublicense, and/or sell copies of the Software, and to 119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt permit persons to whom the Software is furnished to do so, subject to 129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt the following conditions: 139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt The above copyright notice and this permission notice (including the 159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt next paragraph) shall be included in all copies or substantial 169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt portions of the Software. 179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE 229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt **********************************************************************/ 279f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt /* 289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt * Authors: 299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt * Keith Whitwell <keith@tungstengraphics.com> 309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt */ 319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#ifndef BRW_STRUCTS_H 349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_STRUCTS_H 359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 360fe19bc91d89dd83b9a7bab28a6009a30e1bc856Brian Paul 370fe19bc91d89dd83b9a7bab28a6009a30e1bc856Brian Paul/** Number of general purpose registers (VS, WM, etc) */ 380fe19bc91d89dd83b9a7bab28a6009a30e1bc856Brian Paul#define BRW_MAX_GRF 128 390fe19bc91d89dd83b9a7bab28a6009a30e1bc856Brian Paul 40e910241e9754b6e673ed0fc3133c8b1de56e76c7Eric Anholt/** 41e910241e9754b6e673ed0fc3133c8b1de56e76c7Eric Anholt * First GRF used for the MRF hack. 42e910241e9754b6e673ed0fc3133c8b1de56e76c7Eric Anholt * 43e910241e9754b6e673ed0fc3133c8b1de56e76c7Eric Anholt * On gen7, MRFs are no longer used, and contiguous GRFs are used instead. We 44e910241e9754b6e673ed0fc3133c8b1de56e76c7Eric Anholt * haven't converted our compiler to be aware of this, so it asks for MRFs and 45e910241e9754b6e673ed0fc3133c8b1de56e76c7Eric Anholt * brw_eu_emit.c quietly converts them to be accesses of the top GRFs. The 46e910241e9754b6e673ed0fc3133c8b1de56e76c7Eric Anholt * register allocators have to be careful of this to avoid corrupting the "MRF"s 47e910241e9754b6e673ed0fc3133c8b1de56e76c7Eric Anholt * with actual GRF allocations. 48e910241e9754b6e673ed0fc3133c8b1de56e76c7Eric Anholt */ 49e910241e9754b6e673ed0fc3133c8b1de56e76c7Eric Anholt#define GEN7_MRF_HACK_START 112. 50e910241e9754b6e673ed0fc3133c8b1de56e76c7Eric Anholt 510fe19bc91d89dd83b9a7bab28a6009a30e1bc856Brian Paul/** Number of message register file registers */ 520fe19bc91d89dd83b9a7bab28a6009a30e1bc856Brian Paul#define BRW_MAX_MRF 16 530fe19bc91d89dd83b9a7bab28a6009a30e1bc856Brian Paul 549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt/* These seem to be passed around as function args, so it works out 559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt * better to keep them as #defines: 569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt */ 579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_FLUSH_READ_CACHE 0x1 589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_FLUSH_STATE_CACHE 0x2 599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_INHIBIT_FLUSH_RENDER_CACHE 0x4 609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#define BRW_FLUSH_SNAPSHOT_COUNTERS 0x8 619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct brw_urb_fence 639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint length:8; 679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint vs_realloc:1; 689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint gs_realloc:1; 699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint clp_realloc:1; 709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint sf_realloc:1; 719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint vfe_realloc:1; 729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint cs_realloc:1; 739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad:2; 749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint opcode:16; 759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } header; 769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint vs_fence:10; 809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint gs_fence:10; 819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint clp_fence:10; 829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad:2; 839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } bits0; 849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint sf_fence:10; 889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint vf_fence:10; 8998a8744e02c5c1aa0c97c0265680f09f92a68818Xiang, Haihao GLuint cs_fence:11; 9098a8744e02c5c1aa0c97c0265680f09f92a68818Xiang, Haihao GLuint pad:1; 919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } bits1; 929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt/* State structs for the various fixed function units: 959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt */ 969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct thread0 999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 1009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:1; 1019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint grf_reg_count:3; 1029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:2; 10338bad7677e57d629eeffd4ef39a7fc254db12735Eric Anholt GLuint kernel_start_pointer:26; /* Offset from GENERAL_STATE_BASE */ 1049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 1059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 1069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct thread1 1079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 1089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint ext_halt_exception_enable:1; 1099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint sw_exception_enable:1; 1109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint mask_stack_exception_enable:1; 1119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint timeout_exception_enable:1; 1129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint illegal_op_exception_enable:1; 1139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:3; 1149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint depth_coef_urb_read_offset:6; /* WM only */ 1159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:2; 1169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint floating_point_mode:1; 1179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint thread_priority:1; 1189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint binding_table_entry_count:8; 1199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad3:5; 1209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint single_program_flow:1; 1219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 1229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 1239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct thread2 1249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 1259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint per_thread_scratch_space:4; 1269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:6; 1279f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint scratch_space_base_pointer:22; 1289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 1299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 1309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 1319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct thread3 1329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 1339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dispatch_grf_start_reg:4; 1349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint urb_entry_read_offset:6; 1359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:1; 1369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint urb_entry_read_length:6; 1379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:1; 1389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint const_urb_entry_read_offset:6; 1399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad2:1; 1409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint const_urb_entry_read_length:6; 1419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad3:1; 1429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 1439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 1449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 1459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 1469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct brw_clip_unit_state 1479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 1489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread0 thread0; 1491b9f78195f62959601d440475a6cbba5e8046813Eric Anholt struct 1501b9f78195f62959601d440475a6cbba5e8046813Eric Anholt { 1511b9f78195f62959601d440475a6cbba5e8046813Eric Anholt GLuint pad0:7; 1521b9f78195f62959601d440475a6cbba5e8046813Eric Anholt GLuint sw_exception_enable:1; 1531b9f78195f62959601d440475a6cbba5e8046813Eric Anholt GLuint pad1:3; 1541b9f78195f62959601d440475a6cbba5e8046813Eric Anholt GLuint mask_stack_exception_enable:1; 1551b9f78195f62959601d440475a6cbba5e8046813Eric Anholt GLuint pad2:1; 1561b9f78195f62959601d440475a6cbba5e8046813Eric Anholt GLuint illegal_op_exception_enable:1; 1571b9f78195f62959601d440475a6cbba5e8046813Eric Anholt GLuint pad3:2; 1581b9f78195f62959601d440475a6cbba5e8046813Eric Anholt GLuint floating_point_mode:1; 1591b9f78195f62959601d440475a6cbba5e8046813Eric Anholt GLuint thread_priority:1; 1601b9f78195f62959601d440475a6cbba5e8046813Eric Anholt GLuint binding_table_entry_count:8; 1611b9f78195f62959601d440475a6cbba5e8046813Eric Anholt GLuint pad4:5; 1621b9f78195f62959601d440475a6cbba5e8046813Eric Anholt GLuint single_program_flow:1; 1631b9f78195f62959601d440475a6cbba5e8046813Eric Anholt } thread1; 1641b9f78195f62959601d440475a6cbba5e8046813Eric Anholt 1659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread2 thread2; 1669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread3 thread3; 1679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 1689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 1699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 1709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:9; 1719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint gs_output_stats:1; /* not always */ 1729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint stats_enable:1; 1739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint nr_urb_entries:7; 1749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:1; 1759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint urb_entry_allocation_size:5; 1769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad2:1; 1778e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint max_threads:5; /* may be less */ 1788e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint pad3:2; 1799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } thread4; 1809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 1819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 1829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 1839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:13; 1849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint clip_mode:3; 1859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint userclip_enable_flags:8; 1869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint userclip_must_clip:1; 1878e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint negative_w_clip_test:1; 1889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint guard_band_enable:1; 1899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint viewport_z_clip_enable:1; 1909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint viewport_xy_clip_enable:1; 1919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint vertex_position_space:1; 1929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint api_mode:1; 1939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad2:1; 1949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } clip5; 1959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 1969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 1979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 1989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:5; 1999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint clipper_viewport_state_ptr:27; 2009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } clip6; 2019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 2029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 2039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat viewport_xmin; 2049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat viewport_xmax; 2059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat viewport_ymin; 2069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat viewport_ymax; 2079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 2089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 2097ee590424c974cb10882e9c4664a6024595fc9deEric Anholtstruct gen6_blend_state 2107ee590424c974cb10882e9c4664a6024595fc9deEric Anholt{ 2117ee590424c974cb10882e9c4664a6024595fc9deEric Anholt struct { 2127ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint dest_blend_factor:5; 2137ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint source_blend_factor:5; 2147ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint pad3:1; 2157ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint blend_func:3; 2167ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint pad2:1; 2177ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint ia_dest_blend_factor:5; 2187ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint ia_source_blend_factor:5; 2197ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint pad1:1; 2207ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint ia_blend_func:3; 2217ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint pad0:1; 2227ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint ia_blend_enable:1; 2237ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint blend_enable:1; 2247ee590424c974cb10882e9c4664a6024595fc9deEric Anholt } blend0; 2257ee590424c974cb10882e9c4664a6024595fc9deEric Anholt 2267ee590424c974cb10882e9c4664a6024595fc9deEric Anholt struct { 2277ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint post_blend_clamp_enable:1; 2287ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint pre_blend_clamp_enable:1; 2297ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint clamp_range:2; 2307ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint pad0:4; 2317ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint x_dither_offset:2; 2327ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint y_dither_offset:2; 2337ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint dither_enable:1; 2347ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint alpha_test_func:3; 2357ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint alpha_test_enable:1; 2367ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint pad1:1; 2377ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint logic_op_func:4; 2387ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint logic_op_enable:1; 2397ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint pad2:1; 2407ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint write_disable_b:1; 2417ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint write_disable_g:1; 2427ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint write_disable_r:1; 2437ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint write_disable_a:1; 2447ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint pad3:1; 2457ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint alpha_to_coverage_dither:1; 2467ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint alpha_to_one:1; 2477ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint alpha_to_coverage:1; 2487ee590424c974cb10882e9c4664a6024595fc9deEric Anholt } blend1; 2497ee590424c974cb10882e9c4664a6024595fc9deEric Anholt}; 2507ee590424c974cb10882e9c4664a6024595fc9deEric Anholt 2517ee590424c974cb10882e9c4664a6024595fc9deEric Anholtstruct gen6_color_calc_state 2527ee590424c974cb10882e9c4664a6024595fc9deEric Anholt{ 2537ee590424c974cb10882e9c4664a6024595fc9deEric Anholt struct { 2547ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint alpha_test_format:1; 2557ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint pad0:14; 2567ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint round_disable:1; 2577ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint bf_stencil_ref:8; 2587ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint stencil_ref:8; 2597ee590424c974cb10882e9c4664a6024595fc9deEric Anholt } cc0; 2607ee590424c974cb10882e9c4664a6024595fc9deEric Anholt 2617ee590424c974cb10882e9c4664a6024595fc9deEric Anholt union { 2627ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLfloat alpha_ref_f; 2637ee590424c974cb10882e9c4664a6024595fc9deEric Anholt struct { 2647ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint ui:8; 2657ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint pad0:24; 2667ee590424c974cb10882e9c4664a6024595fc9deEric Anholt } alpha_ref_fi; 2677ee590424c974cb10882e9c4664a6024595fc9deEric Anholt } cc1; 2687ee590424c974cb10882e9c4664a6024595fc9deEric Anholt 2697ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLfloat constant_r; 2707ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLfloat constant_g; 2717ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLfloat constant_b; 2727ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLfloat constant_a; 2737ee590424c974cb10882e9c4664a6024595fc9deEric Anholt}; 2749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 2757ee590424c974cb10882e9c4664a6024595fc9deEric Anholtstruct gen6_depth_stencil_state 2767ee590424c974cb10882e9c4664a6024595fc9deEric Anholt{ 2777ee590424c974cb10882e9c4664a6024595fc9deEric Anholt struct { 2787ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint pad0:3; 2797ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint bf_stencil_pass_depth_pass_op:3; 2807ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint bf_stencil_pass_depth_fail_op:3; 2817ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint bf_stencil_fail_op:3; 2827ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint bf_stencil_func:3; 2837ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint bf_stencil_enable:1; 2847ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint pad1:2; 2857ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint stencil_write_enable:1; 2867ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint stencil_pass_depth_pass_op:3; 2877ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint stencil_pass_depth_fail_op:3; 2887ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint stencil_fail_op:3; 2897ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint stencil_func:3; 2907ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint stencil_enable:1; 2917ee590424c974cb10882e9c4664a6024595fc9deEric Anholt } ds0; 2927ee590424c974cb10882e9c4664a6024595fc9deEric Anholt 2937ee590424c974cb10882e9c4664a6024595fc9deEric Anholt struct { 2947ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint bf_stencil_write_mask:8; 2957ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint bf_stencil_test_mask:8; 2967ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint stencil_write_mask:8; 2977ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint stencil_test_mask:8; 2987ee590424c974cb10882e9c4664a6024595fc9deEric Anholt } ds1; 2997ee590424c974cb10882e9c4664a6024595fc9deEric Anholt 3007ee590424c974cb10882e9c4664a6024595fc9deEric Anholt struct { 30124ff42e7d56ac489caeca6b5ffcc3091cc8194b5Zhenyu Wang GLuint pad0:26; 3027ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint depth_write_enable:1; 3037ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint depth_test_func:3; 3047ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint pad1:1; 3057ee590424c974cb10882e9c4664a6024595fc9deEric Anholt GLuint depth_test_enable:1; 3067ee590424c974cb10882e9c4664a6024595fc9deEric Anholt } ds2; 3077ee590424c974cb10882e9c4664a6024595fc9deEric Anholt}; 3089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 3099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct brw_cc_unit_state 3109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 3119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 3129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 3139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:3; 3149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint bf_stencil_pass_depth_pass_op:3; 3159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint bf_stencil_pass_depth_fail_op:3; 3169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint bf_stencil_fail_op:3; 3179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint bf_stencil_func:3; 3189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint bf_stencil_enable:1; 3199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:2; 3209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint stencil_write_enable:1; 3219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint stencil_pass_depth_pass_op:3; 3229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint stencil_pass_depth_fail_op:3; 3239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint stencil_fail_op:3; 3249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint stencil_func:3; 3259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint stencil_enable:1; 3269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } cc0; 3279f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 3289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 3299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 3309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 3319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint bf_stencil_ref:8; 3329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint stencil_write_mask:8; 3339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint stencil_test_mask:8; 3349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint stencil_ref:8; 3359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } cc1; 3369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 3379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 3389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 3399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 3409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint logicop_enable:1; 3419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:10; 3429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint depth_write_enable:1; 3439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint depth_test_function:3; 3449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint depth_test:1; 3459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint bf_stencil_write_mask:8; 3469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint bf_stencil_test_mask:8; 3479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } cc2; 3489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 3499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 3509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 3519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 3529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:8; 3539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint alpha_test_func:3; 3549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint alpha_test:1; 3559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint blend_enable:1; 3569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint ia_blend_enable:1; 3579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:1; 3589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint alpha_test_format:1; 3599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad2:16; 3609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } cc3; 3619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 3629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 3639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 3649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:5; 36538bad7677e57d629eeffd4ef39a7fc254db12735Eric Anholt GLuint cc_viewport_state_offset:27; /* Offset from GENERAL_STATE_BASE */ 3669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } cc4; 3679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 3689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 3699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 3709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:2; 3719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint ia_dest_blend_factor:5; 3729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint ia_src_blend_factor:5; 3739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint ia_blend_function:3; 3749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint statistics_enable:1; 3759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint logicop_func:4; 3769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:11; 3779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dither_enable:1; 3789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } cc5; 3799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 3809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 3819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 3829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint clamp_post_alpha_blend:1; 3839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint clamp_pre_alpha_blend:1; 3849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint clamp_range:2; 3859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:11; 3869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint y_dither_offset:2; 3879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint x_dither_offset:2; 3889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_blend_factor:5; 3899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src_blend_factor:5; 3909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint blend_function:3; 3919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } cc6; 3929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 3939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct { 3949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt union { 3959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat f; 3969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLubyte ub[4]; 3979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } alpha_ref; 3989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } cc7; 3999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 4009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 4019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct brw_sf_unit_state 4029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 4039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread0 thread0; 4049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread1 thread1; 4059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread2 thread2; 4069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread3 thread3; 4079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 4089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 4099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 4109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:10; 4119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint stats_enable:1; 4129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint nr_urb_entries:7; 4139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:1; 4149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint urb_entry_allocation_size:5; 4159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad2:1; 4169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint max_threads:6; 4179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad3:1; 4189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } thread4; 4199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 4209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 4219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 4229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint front_winding:1; 4239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint viewport_transform:1; 4249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:3; 42538bad7677e57d629eeffd4ef39a7fc254db12735Eric Anholt GLuint sf_viewport_state_offset:27; /* Offset from GENERAL_STATE_BASE */ 4269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } sf5; 4279f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 4289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 4299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 4309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:9; 4319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_org_vbias:4; 4329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_org_hbias:4; 4339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint scissor:1; 4349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint disable_2x2_trifilter:1; 4359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint disable_zero_pix_trifilter:1; 4369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint point_rast_rule:2; 4379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint line_endcap_aa_region_width:2; 4389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint line_width:4; 4399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint fast_scissor_disable:1; 4409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint cull_mode:2; 4419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint aa_enable:1; 4429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } sf6; 4439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 4449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 4459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 4469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint point_size:11; 4479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint use_point_size_state:1; 4489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint subpixel_precision:1; 4499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint sprite_point:1; 4508e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint pad0:10; 4518e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint aa_line_distance_mode:1; 4529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint trifan_pv:2; 4539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint linestrip_pv:2; 4549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint tristrip_pv:2; 4559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint line_last_pixel_enable:1; 4569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } sf7; 4579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 4589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 4599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 4604b6b0bf24a043035d7ada0c966e01df6327dc529Zhenyu Wangstruct gen6_scissor_rect 46164e0c586a74553b2941f18feb199d8cddb192102Eric Anholt{ 4624b6b0bf24a043035d7ada0c966e01df6327dc529Zhenyu Wang GLuint xmin:16; 4634b6b0bf24a043035d7ada0c966e01df6327dc529Zhenyu Wang GLuint ymin:16; 4644b6b0bf24a043035d7ada0c966e01df6327dc529Zhenyu Wang GLuint xmax:16; 4654b6b0bf24a043035d7ada0c966e01df6327dc529Zhenyu Wang GLuint ymax:16; 46664e0c586a74553b2941f18feb199d8cddb192102Eric Anholt}; 4679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 4689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct brw_gs_unit_state 4699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 4709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread0 thread0; 4719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread1 thread1; 4729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread2 thread2; 4739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread3 thread3; 4749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 4759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 4769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 4772995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad0:8; 478cdcef6cbf4dd80047819e9098e34a3b98bd502a4Zhenyu Wang GLuint rendering_enable:1; /* for Ironlake */ 4792995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad4:1; 4809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint stats_enable:1; 4819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint nr_urb_entries:7; 4829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:1; 4839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint urb_entry_allocation_size:5; 4849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad2:1; 4858e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint max_threads:5; 4868e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint pad3:2; 4879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } thread4; 4889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 4899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 4909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 4919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint sampler_count:3; 4929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:2; 4939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint sampler_state_pointer:27; 4949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } gs5; 4959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 4969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 4979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 4989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 4999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint max_vp_index:4; 5008e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint pad0:12; 5018e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint svbi_post_inc_value:10; 5029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:1; 5038e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint svbi_post_inc_enable:1; 5048e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint svbi_payload:1; 5058e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint discard_adjaceny:1; 5068e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint reorder_enable:1; 5078e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint pad2:1; 5089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } gs6; 5099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 5109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 5119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 5129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct brw_vs_unit_state 5139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 5149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread0 thread0; 5159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread1 thread1; 5169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread2 thread2; 5179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread3 thread3; 5189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 5199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 5209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 5219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:10; 5229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint stats_enable:1; 5239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint nr_urb_entries:7; 5249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:1; 5259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint urb_entry_allocation_size:5; 5269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad2:1; 5278e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint max_threads:6; 5288e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint pad3:1; 5299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } thread4; 5309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 5319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 5329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 5339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint sampler_count:3; 5349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:2; 5359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint sampler_state_pointer:27; 5369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } vs5; 5379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 5389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 5399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 5409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint vs_enable:1; 5419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint vert_cache_disable:1; 5429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:30; 5439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } vs6; 5449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 5459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 5469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 5479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct brw_wm_unit_state 5489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 5499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread0 thread0; 5509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread1 thread1; 5519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread2 thread2; 5529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct thread3 thread3; 5539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 5549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct { 5559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint stats_enable:1; 5568e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint depth_buffer_clear:1; 5579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint sampler_count:3; 5589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint sampler_state_pointer:27; 5599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } wm4; 5609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 5619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 5629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 5639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint enable_8_pix:1; 5649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint enable_16_pix:1; 5659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint enable_32_pix:1; 5668e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint enable_con_32_pix:1; 5678e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint enable_con_64_pix:1; 5684b929c75e2d868cbfb21b5dbeb1f6c689a903be6Kenneth Graunke GLuint pad0:1; 5694b929c75e2d868cbfb21b5dbeb1f6c689a903be6Kenneth Graunke 5704b929c75e2d868cbfb21b5dbeb1f6c689a903be6Kenneth Graunke /* These next four bits are for Ironlake+ */ 5714b929c75e2d868cbfb21b5dbeb1f6c689a903be6Kenneth Graunke GLuint fast_span_coverage_enable:1; 5724b929c75e2d868cbfb21b5dbeb1f6c689a903be6Kenneth Graunke GLuint depth_buffer_clear:1; 5734b929c75e2d868cbfb21b5dbeb1f6c689a903be6Kenneth Graunke GLuint depth_buffer_resolve_enable:1; 5744b929c75e2d868cbfb21b5dbeb1f6c689a903be6Kenneth Graunke GLuint hierarchical_depth_buffer_resolve_enable:1; 5754b929c75e2d868cbfb21b5dbeb1f6c689a903be6Kenneth Graunke 5769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint legacy_global_depth_bias:1; 5779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint line_stipple:1; 5789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint depth_offset:1; 5799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint polygon_stipple:1; 5809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint line_aa_region_width:2; 5819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint line_endcap_aa_region_width:2; 5829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint early_depth_test:1; 5839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint thread_dispatch_enable:1; 5849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint program_uses_depth:1; 5859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint program_computes_depth:1; 5869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint program_uses_killpixel:1; 5879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint legacy_line_rast: 1; 5888e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint transposed_urb_read_enable:1; 5898e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint max_threads:7; 5909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } wm5; 5919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 5929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat global_depth_offset_constant; 5939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat global_depth_offset_scale; 5942995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao 595cdcef6cbf4dd80047819e9098e34a3b98bd502a4Zhenyu Wang /* for Ironlake only */ 5962995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao struct { 5972995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad0:1; 5982995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint grf_reg_count_1:3; 5992995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad1:2; 6002995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint kernel_start_pointer_1:26; 6012995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao } wm8; 6022995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao 6032995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao struct { 6042995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad0:1; 6052995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint grf_reg_count_2:3; 6062995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad1:2; 6072995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint kernel_start_pointer_2:26; 6082995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao } wm9; 6092995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao 6102995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao struct { 6112995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad0:1; 6122995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint grf_reg_count_3:3; 6132995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad1:2; 6142995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint kernel_start_pointer_3:26; 6152995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao } wm10; 6169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 6179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 6189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct brw_sampler_default_color { 6199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat color[4]; 6209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 6219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 62230f25a10190632a971e2b214c443e54afa463eadEric Anholtstruct gen5_sampler_default_color { 62330f25a10190632a971e2b214c443e54afa463eadEric Anholt uint8_t ub[4]; 62430f25a10190632a971e2b214c443e54afa463eadEric Anholt float f[4]; 62530f25a10190632a971e2b214c443e54afa463eadEric Anholt uint16_t hf[4]; 62630f25a10190632a971e2b214c443e54afa463eadEric Anholt uint16_t us[4]; 62730f25a10190632a971e2b214c443e54afa463eadEric Anholt int16_t s[4]; 62830f25a10190632a971e2b214c443e54afa463eadEric Anholt uint8_t b[4]; 62930f25a10190632a971e2b214c443e54afa463eadEric Anholt}; 63030f25a10190632a971e2b214c443e54afa463eadEric Anholt 6319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct brw_sampler_state 6329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 6339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 6349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 6359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 6369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint shadow_function:3; 6379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint lod_bias:11; 6389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint min_filter:3; 6399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint mag_filter:3; 6409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint mip_filter:2; 6419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint base_level:5; 642956f866030f7bea5fc4a2de28c72e60bdc3a5b3dZhenyu Wang GLuint min_mag_neq:1; 6439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint lod_preclamp:1; 6449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint default_color_mode:1; 6459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:1; 6469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint disable:1; 6479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } ss0; 6489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 6499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 6509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 6519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint r_wrap_mode:3; 6529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint t_wrap_mode:3; 6539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint s_wrap_mode:3; 654956f866030f7bea5fc4a2de28c72e60bdc3a5b3dZhenyu Wang GLuint cube_control_mode:1; 655956f866030f7bea5fc4a2de28c72e60bdc3a5b3dZhenyu Wang GLuint pad:2; 6569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint max_lod:10; 6579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint min_lod:10; 6589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } ss1; 6599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 6609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 6619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 6629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 6639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad:5; 6649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint default_color_pointer:27; 6659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } ss2; 6669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 6679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 6689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 669956f866030f7bea5fc4a2de28c72e60bdc3a5b3dZhenyu Wang GLuint non_normalized_coord:1; 670956f866030f7bea5fc4a2de28c72e60bdc3a5b3dZhenyu Wang GLuint pad:12; 671956f866030f7bea5fc4a2de28c72e60bdc3a5b3dZhenyu Wang GLuint address_round:6; 6729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint max_aniso:3; 6739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint chroma_key_mode:1; 6749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint chroma_key_index:2; 6759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint chroma_key_enable:1; 6769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint monochrome_filter_width:3; 6779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint monochrome_filter_height:3; 6789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } ss3; 6799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 6809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 6813f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunkestruct gen7_sampler_state 6823f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke{ 6833f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke struct 6843f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke { 6853f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint aniso_algorithm:1; 6863f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint lod_bias:13; 6873f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint min_filter:3; 6883f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint mag_filter:3; 6893f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint mip_filter:2; 6903f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint base_level:5; 6913f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint pad1:1; 6923f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint lod_preclamp:1; 6933f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint default_color_mode:1; 6943f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint pad0:1; 6953f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint disable:1; 6963f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke } ss0; 6973f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke 6983f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke struct 6993f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke { 7003f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint cube_control_mode:1; 7013f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint shadow_function:3; 7023f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint pad:4; 7033f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint max_lod:12; 7043f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint min_lod:12; 7053f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke } ss1; 7063f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke 7073f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke struct 7083f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke { 7093f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint pad:5; 7103f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint default_color_pointer:27; 7113f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke } ss2; 7123f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke 7133f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke struct 7143f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke { 7153f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint r_wrap_mode:3; 7163f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint t_wrap_mode:3; 7173f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint s_wrap_mode:3; 7183f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint pad:1; 7193f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint non_normalized_coord:1; 7203f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint trilinear_quality:2; 7213f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint address_round:6; 7223f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint max_aniso:3; 7233f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint chroma_key_mode:1; 7243f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint chroma_key_index:2; 7253f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint chroma_key_enable:1; 7263f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke GLuint pad0:6; 7273f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke } ss3; 7283f44043da37bcd0c481ceddf4f878ddb3419b763Kenneth Graunke}; 7299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 7309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct brw_clipper_viewport 7319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 7329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat xmin; 7339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat xmax; 7349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat ymin; 7359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat ymax; 7369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 7379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 7389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct brw_cc_viewport 7399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 7409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat min_depth; 7419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat max_depth; 7429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 7439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 7449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct brw_sf_viewport 7459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 7469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct { 7479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat m00; 7489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat m11; 7499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat m22; 7509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat m30; 7519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat m31; 7529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLfloat m32; 7539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } viewport; 7549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 755447facfcd6d807128ebf6ba3efc894180b447494Eric Anholt /* scissor coordinates are inclusive */ 7569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct { 7579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLshort xmin; 7589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLshort ymin; 7599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLshort xmax; 7609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLshort ymax; 7619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } scissor; 7629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 7639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 7641ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholtstruct gen6_sf_viewport { 7651ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt GLfloat m00; 7661ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt GLfloat m11; 7671ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt GLfloat m22; 7681ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt GLfloat m30; 7691ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt GLfloat m31; 7701ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt GLfloat m32; 7711ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt}; 7721ae0cb5f286bbba10e99c8e3bc1c55d2aeb38b59Eric Anholt 77318402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunkestruct gen7_sf_clip_viewport { 77418402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke struct { 77518402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke GLfloat m00; 77618402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke GLfloat m11; 77718402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke GLfloat m22; 77818402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke GLfloat m30; 77918402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke GLfloat m31; 78018402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke GLfloat m32; 78118402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke } viewport; 78218402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke 78318402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke GLuint pad0[2]; 78418402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke 78518402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke struct { 78618402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke GLfloat xmin; 78718402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke GLfloat xmax; 78818402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke GLfloat ymin; 78918402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke GLfloat ymax; 79018402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke } guardband; 79118402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke 79218402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke GLfloat pad1[4]; 79318402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke}; 79418402fbf79e96d7afb6b690906a7656f01a92b9dKenneth Graunke 795b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke/* volume 5c Shared Functions - 1.13.4.1.2 */ 796b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunkestruct gen7_surface_state 797b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke{ 798b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke struct { 799b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint cube_pos_z:1; 800b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint cube_neg_z:1; 801b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint cube_pos_y:1; 802b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint cube_neg_y:1; 803b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint cube_pos_x:1; 804b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint cube_neg_x:1; 805b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint pad2:2; 806b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint render_cache_read_write:1; 807b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint pad1:1; 808b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint surface_array_spacing:1; 809b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint vert_line_stride_ofs:1; 810b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint vert_line_stride:1; 811b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint tile_walk:1; 812b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint tiled_surface:1; 813b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint horizontal_alignment:1; 814b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint vertical_alignment:2; 815b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint surface_format:9; /**< BRW_SURFACEFORMAT_x */ 816b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint pad0:1; 817b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint is_array:1; 818b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint surface_type:3; /**< BRW_SURFACE_1D/2D/3D/CUBE */ 819b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke } ss0; 820b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke 821b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke struct { 822b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint base_addr; 823b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke } ss1; 824b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke 825b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke struct { 826b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint width:14; 827b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint pad1:2; 828b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint height:14; 829b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint pad0:2; 830b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke } ss2; 831b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke 832b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke struct { 833b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint pitch:18; 834b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint pad:3; 835b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint depth:11; 836b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke } ss3; 837b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke 838b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke struct { 839b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint multisample_position_palette_index:3; 840b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint num_multisamples:3; 841b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint multisampled_surface_storage_format:1; 842b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint render_target_view_extent:11; 843b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint min_array_elt:11; 844b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint rotation:2; 845b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint pad0:1; 846b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke } ss4; 847b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke 848b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke struct { 849b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint mip_count:4; 850b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint min_lod:4; 851b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint pad1:12; 852b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint y_offset:4; 853b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint pad0:1; 854b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint x_offset:7; 855b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke } ss5; 856b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke 8570ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry union { 8580ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry GLuint raw_data; 8590ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry struct { 8600ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry GLuint y_offset_for_uv_plane:14; 8610ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry GLuint pad1:2; 8620ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry GLuint x_offset_for_uv_plane:14; 8630ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry GLuint pad0:2; 8640ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry } planar; /** Interpretation when Surface Format == PLANAR */ 8650ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry struct { 8660ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry GLuint mcs_enable:1; 8670ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry GLuint append_counter_enable:1; 8680ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry GLuint pad:4; 8690ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry GLuint append_counter_address:26; 8700ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry } mcs_disabled; /** Interpretation when mcs_enable == 0 */ 8710ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry struct { 8720ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry GLuint mcs_enable:1; 8730ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry GLuint pad:2; 8740ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry GLuint mcs_surface_pitch:9; 8750ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry GLuint mcs_base_address:20; 8760ba813506d770ead7eb181fb2bf48d5a408fe0eaPaul Berry } mcs_enabled; /** Interpretation when mcs_enable == 1 */ 877b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke } ss6; 878b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke 879b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke struct { 880b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint resource_min_lod:12; 8814848122a96a46d6725cbfe92041459d11aea70fcKenneth Graunke 8824848122a96a46d6725cbfe92041459d11aea70fcKenneth Graunke /* Only on Haswell */ 8834848122a96a46d6725cbfe92041459d11aea70fcKenneth Graunke GLuint pad0:4; 884cbcf750d5f2c4695c39766938b4cd9d8942d850bKenneth Graunke GLuint shader_channel_select_a:3; 885cbcf750d5f2c4695c39766938b4cd9d8942d850bKenneth Graunke GLuint shader_channel_select_b:3; 886cbcf750d5f2c4695c39766938b4cd9d8942d850bKenneth Graunke GLuint shader_channel_select_g:3; 887cbcf750d5f2c4695c39766938b4cd9d8942d850bKenneth Graunke GLuint shader_channel_select_r:3; 8884848122a96a46d6725cbfe92041459d11aea70fcKenneth Graunke 889b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint alpha_clear_color:1; 890b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint blue_clear_color:1; 891b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint green_clear_color:1; 892b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke GLuint red_clear_color:1; 893b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke } ss7; 894b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke}; 895b2b6cc662271d611462532222ef2fcc30042bd0fKenneth Graunke 8969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 8979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct brw_vertex_element_state 8989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 8999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 9009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 9019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src_offset:11; 9029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad:5; 9039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src_format:9; 9049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:1; 9059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint valid:1; 9069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint vertex_buffer_index:5; 9079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } ve0; 9089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 9099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 9109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 9119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dst_offset:8; 9129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad:8; 9139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint vfcomponent3:4; 9149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint vfcomponent2:4; 9159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint vfcomponent1:4; 9169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint vfcomponent0:4; 9179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } ve1; 9189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 9199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 9209f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct brw_urb_immediate { 9219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint opcode:4; 9229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint offset:6; 9239f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint swizzle_control:2; 9249f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad:1; 9259f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint allocate:1; 9269f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint used:1; 9279f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint complete:1; 9289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint response_length:4; 9299f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint msg_length:4; 9309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint msg_target:4; 9319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:3; 9329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint end_of_thread:1; 9339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 9349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 9359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt/* Instruction format for the execution units: 9369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt */ 9379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 9389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholtstruct brw_instruction 9399f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt{ 9409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 9419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 9429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint opcode:7; 9439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad:1; 9449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint access_mode:1; 9459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint mask_control:1; 9469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dependency_control:2; 94793ba0055c325007656c14ba38302e21be3dc599fZhenyu Wang GLuint compression_control:2; /* gen6: quater control */ 9489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint thread_control:2; 9499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint predicate_control:4; 9509f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint predicate_inverse:1; 9519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint execution_size:3; 9520ec04c5a33731991f80eead39c6ee46535e3d4b2Kenneth Graunke /** 9530ec04c5a33731991f80eead39c6ee46535e3d4b2Kenneth Graunke * Conditional Modifier for most instructions. On Gen6+, this is also 9540ec04c5a33731991f80eead39c6ee46535e3d4b2Kenneth Graunke * used for the SEND instruction's Message Target/SFID. 9550ec04c5a33731991f80eead39c6ee46535e3d4b2Kenneth Graunke */ 9560ec04c5a33731991f80eead39c6ee46535e3d4b2Kenneth Graunke GLuint destreg__conditionalmod:4; 95793ba0055c325007656c14ba38302e21be3dc599fZhenyu Wang GLuint acc_wr_control:1; 95893ba0055c325007656c14ba38302e21be3dc599fZhenyu Wang GLuint cmpt_control:1; 9599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint debug_control:1; 9609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint saturate:1; 9619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } header; 9629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 9639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt union { 9649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 9659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 9669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_reg_file:2; 9679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_reg_type:3; 9689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_reg_file:2; 9699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_reg_type:3; 9709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_reg_file:2; 9719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_reg_type:3; 9729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad:1; 9739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_subreg_nr:5; 9749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_reg_nr:8; 9759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_horiz_stride:2; 9769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_address_mode:1; 9779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } da1; 9789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 9799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 9809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 9819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_reg_file:2; 9829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_reg_type:3; 9839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_reg_file:2; 9849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_reg_type:3; 9851d4bace9fca64c61ccd9f4205262417fa0ae3883Eric Anholt GLuint src1_reg_file:2; /* 0x00000c00 */ 9861d4bace9fca64c61ccd9f4205262417fa0ae3883Eric Anholt GLuint src1_reg_type:3; /* 0x00007000 */ 9871d4bace9fca64c61ccd9f4205262417fa0ae3883Eric Anholt GLuint pad:1; 9889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLint dest_indirect_offset:10; /* offset against the deref'd address reg */ 9899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_subreg_nr:3; /* subnr for the address reg a0.x */ 9909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_horiz_stride:2; 9919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_address_mode:1; 9929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } ia1; 9939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 9949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 9959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 9969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_reg_file:2; 9979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_reg_type:3; 9989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_reg_file:2; 9999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_reg_type:3; 10009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_reg_file:2; 10019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_reg_type:3; 10021d4bace9fca64c61ccd9f4205262417fa0ae3883Eric Anholt GLuint pad:1; 10039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_writemask:4; 10049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_subreg_nr:1; 10059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_reg_nr:8; 10063ce2eccbfb925a3af0b91a89a9f7a3603fa45d2dZhenyu Wang GLuint dest_horiz_stride:2; 10079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_address_mode:1; 10089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } da16; 10099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 10109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 10119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 10129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_reg_file:2; 10139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_reg_type:3; 10149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_reg_file:2; 10159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_reg_type:3; 10169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:6; 10179f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_writemask:4; 10189f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLint dest_indirect_offset:6; 10199f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_subreg_nr:3; 10203ce2eccbfb925a3af0b91a89a9f7a3603fa45d2dZhenyu Wang GLuint dest_horiz_stride:2; 10219f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint dest_address_mode:1; 10229f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } ia16; 1023feca6609390d4642418cf7aab878e654964510c4Eric Anholt 1024feca6609390d4642418cf7aab878e654964510c4Eric Anholt struct { 1025feca6609390d4642418cf7aab878e654964510c4Eric Anholt GLuint dest_reg_file:2; 1026feca6609390d4642418cf7aab878e654964510c4Eric Anholt GLuint dest_reg_type:3; 1027feca6609390d4642418cf7aab878e654964510c4Eric Anholt GLuint src0_reg_file:2; 1028feca6609390d4642418cf7aab878e654964510c4Eric Anholt GLuint src0_reg_type:3; 1029feca6609390d4642418cf7aab878e654964510c4Eric Anholt GLuint src1_reg_file:2; 1030feca6609390d4642418cf7aab878e654964510c4Eric Anholt GLuint src1_reg_type:3; 1031feca6609390d4642418cf7aab878e654964510c4Eric Anholt GLuint pad:1; 1032feca6609390d4642418cf7aab878e654964510c4Eric Anholt 1033feca6609390d4642418cf7aab878e654964510c4Eric Anholt GLint jump_count:16; 1034feca6609390d4642418cf7aab878e654964510c4Eric Anholt } branch_gen6; 10352b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt 10362b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt struct { 10372b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint dest_reg_file:1; 10382b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint flag_subreg_num:1; 10392b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint pad0:2; 10402b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src0_abs:1; 10412b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src0_negate:1; 10422b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src1_abs:1; 10432b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src1_negate:1; 10442b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src2_abs:1; 10452b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src2_negate:1; 10462b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint pad1:7; 10472b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint dest_writemask:4; 10482b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint dest_subreg_nr:3; 10492b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint dest_reg_nr:8; 10502b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt } da3src; 10519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } bits1; 10529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 10539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 10549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt union { 10559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 10569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 10579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_subreg_nr:5; 10589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_reg_nr:8; 10599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_abs:1; 10609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_negate:1; 10619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_address_mode:1; 10629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_horiz_stride:2; 10639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_width:3; 10649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_vert_stride:4; 10659f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint flag_reg_nr:1; 10669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad:6; 10679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } da1; 10689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 10699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 10709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 10719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLint src0_indirect_offset:10; 10729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_subreg_nr:3; 10739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_abs:1; 10749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_negate:1; 10759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_address_mode:1; 10769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_horiz_stride:2; 10779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_width:3; 10789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_vert_stride:4; 10799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint flag_reg_nr:1; 10809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad:6; 10819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } ia1; 10829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 10839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 10849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 10859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_swz_x:2; 10869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_swz_y:2; 10879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_subreg_nr:1; 10889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_reg_nr:8; 10899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_abs:1; 10909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_negate:1; 10919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_address_mode:1; 10929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_swz_z:2; 10939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_swz_w:2; 10949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:1; 10959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_vert_stride:4; 10969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint flag_reg_nr:1; 10979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:6; 10989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } da16; 10999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 11009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 11019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 11029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_swz_x:2; 11039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_swz_y:2; 11049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLint src0_indirect_offset:6; 11059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_subreg_nr:3; 11069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_abs:1; 11079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_negate:1; 11089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_address_mode:1; 11099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_swz_z:2; 11109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_swz_w:2; 11119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:1; 11129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src0_vert_stride:4; 11139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint flag_reg_nr:1; 11149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:6; 11159f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } ia16; 11169f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 11170ec04c5a33731991f80eead39c6ee46535e3d4b2Kenneth Graunke /* Extended Message Descriptor for Ironlake (Gen5) SEND instruction. 11180ec04c5a33731991f80eead39c6ee46535e3d4b2Kenneth Graunke * 11190ec04c5a33731991f80eead39c6ee46535e3d4b2Kenneth Graunke * Does not apply to Gen6+. The SFID/message target moved to bits 11200ec04c5a33731991f80eead39c6ee46535e3d4b2Kenneth Graunke * 27:24 of the header (destreg__conditionalmod); EOT is in bits3. 11210ec04c5a33731991f80eead39c6ee46535e3d4b2Kenneth Graunke */ 11222995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao struct 11232995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao { 11242995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad:26; 11252995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint end_of_thread:1; 11262995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad1:1; 11272995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint sfid:4; 1128cdcef6cbf4dd80047819e9098e34a3b98bd502a4Zhenyu Wang } send_gen5; /* for Ironlake only */ 11292995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao 11302b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt struct { 11312b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src0_rep_ctrl:1; 11322b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src0_swizzle:8; 11332b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src0_subreg_nr:3; 11342b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src0_reg_nr:8; 11352b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint pad0:1; 11362b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src1_rep_ctrl:1; 11372b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src1_swizzle:8; 11382b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src1_subreg_nr_low:2; 11392b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt } da3src; 11409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } bits2; 11419f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 11429f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt union 11439f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 11449f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 11459f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 11469f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_subreg_nr:5; 11479f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_reg_nr:8; 11489f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_abs:1; 11499f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_negate:1; 11501d4bace9fca64c61ccd9f4205262417fa0ae3883Eric Anholt GLuint src1_address_mode:1; 11519f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_horiz_stride:2; 11529f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_width:3; 11539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_vert_stride:4; 11549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:7; 11559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } da1; 11569f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 11579f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 11589f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 11599f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_swz_x:2; 11609f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_swz_y:2; 11619f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_subreg_nr:1; 11629f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_reg_nr:8; 11639f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_abs:1; 11649f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_negate:1; 11651d4bace9fca64c61ccd9f4205262417fa0ae3883Eric Anholt GLuint src1_address_mode:1; 11669f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_swz_z:2; 11679f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_swz_w:2; 11689f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:1; 11699f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_vert_stride:4; 11709f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad2:7; 11719f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } da16; 11729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 11739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 11749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 11759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLint src1_indirect_offset:10; 11769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_subreg_nr:3; 11779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_abs:1; 11789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_negate:1; 11791d4bace9fca64c61ccd9f4205262417fa0ae3883Eric Anholt GLuint src1_address_mode:1; 11809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_horiz_stride:2; 11819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_width:3; 11829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_vert_stride:4; 11839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint flag_reg_nr:1; 11849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:6; 11859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } ia1; 11869f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 11879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 11889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 11899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_swz_x:2; 11909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_swz_y:2; 11919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLint src1_indirect_offset:6; 11929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_subreg_nr:3; 11939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_abs:1; 11949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_negate:1; 11959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:1; 11969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_swz_z:2; 11979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_swz_w:2; 11989f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:1; 11999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint src1_vert_stride:4; 12009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint flag_reg_nr:1; 12019f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad2:6; 12029f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } ia16; 12039f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 12049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 12059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct 12069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt { 12079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLint jump_count:16; /* note: signed */ 12089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pop_count:4; 12099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:12; 12109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } if_else; 12119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 121264ce592679a5b08d66e3cbbf964f9e695e14aee1Kenneth Graunke /* This is also used for gen7 IF/ELSE instructions */ 121300e5a743e2ee3981a34b95067a97fa73c0f5d779Eric Anholt struct 121400e5a743e2ee3981a34b95067a97fa73c0f5d779Eric Anholt { 121500e5a743e2ee3981a34b95067a97fa73c0f5d779Eric Anholt /* Signed jump distance to the ip to jump to if all channels 121600e5a743e2ee3981a34b95067a97fa73c0f5d779Eric Anholt * are disabled after the break or continue. It should point 121700e5a743e2ee3981a34b95067a97fa73c0f5d779Eric Anholt * to the end of the innermost control flow block, as that's 121800e5a743e2ee3981a34b95067a97fa73c0f5d779Eric Anholt * where some channel could get re-enabled. 121900e5a743e2ee3981a34b95067a97fa73c0f5d779Eric Anholt */ 122000e5a743e2ee3981a34b95067a97fa73c0f5d779Eric Anholt int jip:16; 122100e5a743e2ee3981a34b95067a97fa73c0f5d779Eric Anholt 122200e5a743e2ee3981a34b95067a97fa73c0f5d779Eric Anholt /* Signed jump distance to the location to resume execution 122300e5a743e2ee3981a34b95067a97fa73c0f5d779Eric Anholt * of this channel if it's enabled for the break or continue. 122400e5a743e2ee3981a34b95067a97fa73c0f5d779Eric Anholt */ 122500e5a743e2ee3981a34b95067a97fa73c0f5d779Eric Anholt int uip:16; 122600e5a743e2ee3981a34b95067a97fa73c0f5d779Eric Anholt } break_cont; 122700e5a743e2ee3981a34b95067a97fa73c0f5d779Eric Anholt 1228dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** 1229dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * \defgroup SEND instructions / Message Descriptors 1230dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * 1231dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * @{ 1232dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke */ 1233dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke 1234dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** 1235dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * Generic Message Descriptor for Gen4 SEND instructions. The structs 1236dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * below expand function_control to something specific for their 1237dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * message. Due to struct packing issues, they duplicate these bits. 1238dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * 1239dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * See the G45 PRM, Volume 4, Table 14-15. 1240dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke */ 1241dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke struct { 1242dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke GLuint function_control:16; 1243dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke GLuint response_length:4; 1244dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke GLuint msg_length:4; 1245dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke GLuint msg_target:4; 1246dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke GLuint pad1:3; 1247dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke GLuint end_of_thread:1; 1248dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke } generic; 1249dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke 1250dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** 1251dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * Generic Message Descriptor for Gen5-7 SEND instructions. 1252dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * 1253dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * See the Sandybridge PRM, Volume 2 Part 2, Table 8-15. (Sadly, most 1254dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * of the information on the SEND instruction is missing from the public 1255dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * Ironlake PRM.) 1256dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * 1257dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * The table claims that bit 31 is reserved/MBZ on Gen6+, but it lies. 1258dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * According to the SEND instruction description: 1259dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * "The MSb of the message description, the EOT field, always comes from 1260dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * bit 127 of the instruction word"...which is bit 31 of this field. 1261dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke */ 1262dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke struct { 1263dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke GLuint function_control:19; 1264dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke GLuint header_present:1; 1265dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke GLuint response_length:5; 1266dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke GLuint msg_length:4; 1267dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke GLuint pad1:2; 1268dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke GLuint end_of_thread:1; 1269dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke } generic_gen5; 1270dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke 1271dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** G45 PRM, Volume 4, Section 6.1.1.1 */ 12729f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct { 12739f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint function:4; 12749f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint int_type:1; 12759f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint precision:1; 12769f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint saturate:1; 12779f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint data_type:1; 12789f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad0:8; 12799f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint response_length:4; 12809f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint msg_length:4; 12819f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint msg_target:4; 12829f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:3; 12839f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint end_of_thread:1; 12849f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } math; 12859f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 1286dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** Ironlake PRM, Volume 4 Part 1, Section 6.1.1.1 */ 12879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct { 12882995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint function:4; 12892995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint int_type:1; 12902995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint precision:1; 12912995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint saturate:1; 12922995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint data_type:1; 12932995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint snapshot:1; 12942995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad0:10; 12952995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint header_present:1; 12962995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint response_length:5; 12972995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint msg_length:4; 12982995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad1:2; 12992995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint end_of_thread:1; 1300cdcef6cbf4dd80047819e9098e34a3b98bd502a4Zhenyu Wang } math_gen5; 13012995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao 1302dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** G45 PRM, Volume 4, Section 4.8.1.1.1 [DevBW] and [DevCL] */ 13032995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao struct { 13049f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint binding_table_index:8; 13059f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint sampler:4; 13069f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint return_format:2; 13079f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint msg_type:2; 13089f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint response_length:4; 13099f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint msg_length:4; 13109f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint msg_target:4; 13119f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:3; 13129f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint end_of_thread:1; 13139f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } sampler; 13149f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 1315dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** G45 PRM, Volume 4, Section 4.8.1.1.2 [DevCTG] */ 13168e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao struct { 13178e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint binding_table_index:8; 13188e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint sampler:4; 13198e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint msg_type:4; 13208e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint response_length:4; 13218e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint msg_length:4; 13228e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint msg_target:4; 13238e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint pad1:3; 13248e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao GLuint end_of_thread:1; 132534b1776e8d965605d12807884c9c447214d57281Eric Anholt } sampler_g4x; 13268e444fb9e2685e3eac42beb848b08e91dc20c88aXiang, Haihao 1327dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** Ironlake PRM, Volume 4 Part 1, Section 4.11.1.1.3 */ 13282995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao struct { 13292995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint binding_table_index:8; 13302995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint sampler:4; 13312995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint msg_type:4; 13322995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint simd_mode:2; 13332995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad0:1; 13342995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint header_present:1; 13352995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint response_length:5; 13362995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint msg_length:4; 13372995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad1:2; 13382995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint end_of_thread:1; 1339cdcef6cbf4dd80047819e9098e34a3b98bd502a4Zhenyu Wang } sampler_gen5; 13402995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao 134136f8de02e71ee5c2ca55d86c486eb00d043ae1f5Kenneth Graunke struct { 134236f8de02e71ee5c2ca55d86c486eb00d043ae1f5Kenneth Graunke GLuint binding_table_index:8; 134336f8de02e71ee5c2ca55d86c486eb00d043ae1f5Kenneth Graunke GLuint sampler:4; 134436f8de02e71ee5c2ca55d86c486eb00d043ae1f5Kenneth Graunke GLuint msg_type:5; 134536f8de02e71ee5c2ca55d86c486eb00d043ae1f5Kenneth Graunke GLuint simd_mode:2; 134636f8de02e71ee5c2ca55d86c486eb00d043ae1f5Kenneth Graunke GLuint header_present:1; 134736f8de02e71ee5c2ca55d86c486eb00d043ae1f5Kenneth Graunke GLuint response_length:5; 134836f8de02e71ee5c2ca55d86c486eb00d043ae1f5Kenneth Graunke GLuint msg_length:4; 134936f8de02e71ee5c2ca55d86c486eb00d043ae1f5Kenneth Graunke GLuint pad1:2; 135036f8de02e71ee5c2ca55d86c486eb00d043ae1f5Kenneth Graunke GLuint end_of_thread:1; 135136f8de02e71ee5c2ca55d86c486eb00d043ae1f5Kenneth Graunke } sampler_gen7; 135236f8de02e71ee5c2ca55d86c486eb00d043ae1f5Kenneth Graunke 13539f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct brw_urb_immediate urb; 13549f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 13559f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct { 13562995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint opcode:4; 13572995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint offset:6; 13582995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint swizzle_control:2; 13592995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad:1; 13602995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint allocate:1; 13612995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint used:1; 13622995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint complete:1; 13632995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad0:3; 13642995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint header_present:1; 13652995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint response_length:5; 13662995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint msg_length:4; 13672995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad1:2; 13682995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint end_of_thread:1; 1369cdcef6cbf4dd80047819e9098e34a3b98bd502a4Zhenyu Wang } urb_gen5; 13702995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao 13712995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao struct { 137297d4d6f77e885d2c343697f26a5ecf821caaf13bKenneth Graunke GLuint opcode:3; 137397d4d6f77e885d2c343697f26a5ecf821caaf13bKenneth Graunke GLuint offset:11; 137497d4d6f77e885d2c343697f26a5ecf821caaf13bKenneth Graunke GLuint swizzle_control:1; 137597d4d6f77e885d2c343697f26a5ecf821caaf13bKenneth Graunke GLuint complete:1; 137697d4d6f77e885d2c343697f26a5ecf821caaf13bKenneth Graunke GLuint per_slot_offset:1; 137797d4d6f77e885d2c343697f26a5ecf821caaf13bKenneth Graunke GLuint pad0:2; 137897d4d6f77e885d2c343697f26a5ecf821caaf13bKenneth Graunke GLuint header_present:1; 137997d4d6f77e885d2c343697f26a5ecf821caaf13bKenneth Graunke GLuint response_length:5; 138097d4d6f77e885d2c343697f26a5ecf821caaf13bKenneth Graunke GLuint msg_length:4; 138197d4d6f77e885d2c343697f26a5ecf821caaf13bKenneth Graunke GLuint pad1:2; 138297d4d6f77e885d2c343697f26a5ecf821caaf13bKenneth Graunke GLuint end_of_thread:1; 138397d4d6f77e885d2c343697f26a5ecf821caaf13bKenneth Graunke } urb_gen7; 138497d4d6f77e885d2c343697f26a5ecf821caaf13bKenneth Graunke 1385dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** 965 PRM, Volume 4, Section 5.10.1.1: Message Descriptor */ 138697d4d6f77e885d2c343697f26a5ecf821caaf13bKenneth Graunke struct { 13879f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint binding_table_index:8; 13889f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint msg_control:4; 13899f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint msg_type:2; 13909f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint target_cache:2; 13919f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint response_length:4; 13929f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint msg_length:4; 13939f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint msg_target:4; 13949f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:3; 13959f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint end_of_thread:1; 13969f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } dp_read; 13979f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 1398dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** G45 PRM, Volume 4, Section 5.10.1.1.2 */ 13999f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct { 14009f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint binding_table_index:8; 14015dc53444c8323c1787dddbe6b67048828df9c684Eric Anholt GLuint msg_control:3; 14025dc53444c8323c1787dddbe6b67048828df9c684Eric Anholt GLuint msg_type:3; 14035dc53444c8323c1787dddbe6b67048828df9c684Eric Anholt GLuint target_cache:2; 14045dc53444c8323c1787dddbe6b67048828df9c684Eric Anholt GLuint response_length:4; 14055dc53444c8323c1787dddbe6b67048828df9c684Eric Anholt GLuint msg_length:4; 14065dc53444c8323c1787dddbe6b67048828df9c684Eric Anholt GLuint msg_target:4; 14075dc53444c8323c1787dddbe6b67048828df9c684Eric Anholt GLuint pad1:3; 14085dc53444c8323c1787dddbe6b67048828df9c684Eric Anholt GLuint end_of_thread:1; 14095dc53444c8323c1787dddbe6b67048828df9c684Eric Anholt } dp_read_g4x; 14105dc53444c8323c1787dddbe6b67048828df9c684Eric Anholt 1411dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** Ironlake PRM, Volume 4 Part 1, Section 5.10.2.1.2. */ 14125dc53444c8323c1787dddbe6b67048828df9c684Eric Anholt struct { 14135dc53444c8323c1787dddbe6b67048828df9c684Eric Anholt GLuint binding_table_index:8; 14142995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint msg_control:3; 14152995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint msg_type:3; 14162995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint target_cache:2; 14172995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad0:3; 14182995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint header_present:1; 14192995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint response_length:5; 14202995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint msg_length:4; 14212995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad1:2; 14222995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint end_of_thread:1; 1423cdcef6cbf4dd80047819e9098e34a3b98bd502a4Zhenyu Wang } dp_read_gen5; 14242995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao 1425dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** G45 PRM, Volume 4, Section 5.10.1.1.2. For both Gen4 and G45. */ 14262995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao struct { 14272995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint binding_table_index:8; 14289f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint msg_control:3; 142953798f90e818e9bf213c3ae4298751362a5ecd50Kenneth Graunke GLuint last_render_target:1; 14309f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint msg_type:3; 14319f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint send_commit_msg:1; 14329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint response_length:4; 14339f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint msg_length:4; 14349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint msg_target:4; 14359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint pad1:3; 14369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint end_of_thread:1; 14379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } dp_write; 14389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 1439dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** Ironlake PRM, Volume 4 Part 1, Section 5.10.2.1.2. */ 14409f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt struct { 14412995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint binding_table_index:8; 14422995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint msg_control:3; 144353798f90e818e9bf213c3ae4298751362a5ecd50Kenneth Graunke GLuint last_render_target:1; 14442995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint msg_type:3; 14452995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint send_commit_msg:1; 14462995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad0:3; 14472995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint header_present:1; 14482995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint response_length:5; 14492995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint msg_length:4; 14502995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint pad1:2; 14512995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao GLuint end_of_thread:1; 1452cdcef6cbf4dd80047819e9098e34a3b98bd502a4Zhenyu Wang } dp_write_gen5; 14532995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao 1454dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** 1455dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * Message for the Sandybridge Sampler Cache or Constant Cache Data Port. 1456dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * 1457dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * See the Sandybridge PRM, Volume 4 Part 1, Section 3.9.2.1.1. 1458dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke **/ 145904466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang struct { 146004466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint binding_table_index:8; 146104466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint msg_control:5; 146204466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint msg_type:3; 146304466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint pad0:3; 146404466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint header_present:1; 146504466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint response_length:5; 146604466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint msg_length:4; 146704466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint pad1:2; 146804466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint end_of_thread:1; 1469dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke } gen6_dp_sampler_const_cache; 147004466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang 1471dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** 1472dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * Message for the Sandybridge Render Cache Data Port. 1473dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * 1474dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * Most fields are defined in the Sandybridge PRM, Volume 4 Part 1, 1475dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * Section 3.9.2.1.1: Message Descriptor. 1476dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * 1477dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * "Slot Group Select" and "Last Render Target" are part of the 1478dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * 5-bit message control for Render Target Write messages. See 1479dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * Section 3.9.9.2.1 of the same volume. 1480dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke */ 148104466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang struct { 148204466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint binding_table_index:8; 148304466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint msg_control:3; 148404466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint slot_group_select:1; 148553798f90e818e9bf213c3ae4298751362a5ecd50Kenneth Graunke GLuint last_render_target:1; 148604466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint msg_type:4; 148704466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint send_commit_msg:1; 148804466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint pad0:1; 148904466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint header_present:1; 149004466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint response_length:5; 149104466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint msg_length:4; 149204466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint pad1:2; 149304466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang GLuint end_of_thread:1; 1494c77855d64eae45786d2d637bd065c8a700b788e5Kenneth Graunke } gen6_dp; 149504466795511bc93e4301e71b9e0c7a9154ecf042Zhenyu Wang 1496dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** 1497dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * Message for any of the Gen7 Data Port caches. 1498dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * 1499dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * Most fields are defined in BSpec volume 5c.2 Data Port / Messages / 1500dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * Data Port Messages / Message Descriptor. Once again, "Slot Group 1501dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * Select" and "Last Render Target" are part of the 6-bit message 1502dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke * control for Render Target Writes. 1503dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke */ 1504ce526a7452abf552af38b86bd3546d6ff9a83194Kenneth Graunke struct { 1505ce526a7452abf552af38b86bd3546d6ff9a83194Kenneth Graunke GLuint binding_table_index:8; 1506ce526a7452abf552af38b86bd3546d6ff9a83194Kenneth Graunke GLuint msg_control:3; 1507ce526a7452abf552af38b86bd3546d6ff9a83194Kenneth Graunke GLuint slot_group_select:1; 150853798f90e818e9bf213c3ae4298751362a5ecd50Kenneth Graunke GLuint last_render_target:1; 1509dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke GLuint msg_control_pad:1; 1510ce526a7452abf552af38b86bd3546d6ff9a83194Kenneth Graunke GLuint msg_type:4; 1511ce526a7452abf552af38b86bd3546d6ff9a83194Kenneth Graunke GLuint pad1:1; 1512ce526a7452abf552af38b86bd3546d6ff9a83194Kenneth Graunke GLuint header_present:1; 1513ce526a7452abf552af38b86bd3546d6ff9a83194Kenneth Graunke GLuint response_length:5; 1514ce526a7452abf552af38b86bd3546d6ff9a83194Kenneth Graunke GLuint msg_length:4; 1515ce526a7452abf552af38b86bd3546d6ff9a83194Kenneth Graunke GLuint pad2:2; 1516ce526a7452abf552af38b86bd3546d6ff9a83194Kenneth Graunke GLuint end_of_thread:1; 1517ce526a7452abf552af38b86bd3546d6ff9a83194Kenneth Graunke } gen7_dp; 1518dcf03e7c09378dfcc744e28f198eaf713d3a21fbKenneth Graunke /** @} */ 15192995bf0d68f1b28ba68b81e9dc79e3ab52bc2795Xiang, Haihao 15202b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt struct { 15212b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src1_subreg_nr_high:1; 15222b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src1_reg_nr:8; 15232b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint pad0:1; 15242b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src2_rep_ctrl:1; 15252b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src2_swizzle:8; 15262b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src2_subreg_nr:3; 15272b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint src2_reg_nr:8; 15282b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt GLuint pad1:2; 15292b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt } da3src; 15302b28fd6ca603df40a5d02aac4035eced3a1d079aEric Anholt 15311b9f78195f62959601d440475a6cbba5e8046813Eric Anholt GLint d; 15329f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt GLuint ud; 15331d4bace9fca64c61ccd9f4205262417fa0ae3883Eric Anholt float f; 15349f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt } bits3; 15359f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt}; 15369f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 15379f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt 15389f344b3e7d6e23674dd4747faec253f103563b36Eric Anholt#endif 1539