1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Copyright (C) Intel Corp. 2006. All Rights Reserved. 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Intel funded Tungsten Graphics (http://www.tungstengraphics.com) to 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org develop this 3D driver. 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Permission is hereby granted, free of charge, to any person obtaining 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a copy of this software and associated documentation files (the 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "Software"), to deal in the Software without restriction, including 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org without limitation the rights to use, copy, modify, merge, publish, 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org distribute, sublicense, and/or sell copies of the Software, and to 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org permit persons to whom the Software is furnished to do so, subject to 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org the following conditions: 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org The above copyright notice and this permission notice (including the 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org next paragraph) shall be included in all copies or substantial 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org portions of the Software. 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org **********************************************************************/ 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Authors: 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Keith Whitwell <keith@tungstengraphics.com> 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef BRW_STRUCTS_H 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define BRW_STRUCTS_H 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** Number of general purpose registers (VS, WM, etc) */ 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define BRW_MAX_GRF 128 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * First GRF used for the MRF hack. 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * On gen7, MRFs are no longer used, and contiguous GRFs are used instead. We 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * haven't converted our compiler to be aware of this, so it asks for MRFs and 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * brw_eu_emit.c quietly converts them to be accesses of the top GRFs. The 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * register allocators have to be careful of this to avoid corrupting the "MRF"s 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * with actual GRF allocations. 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GEN7_MRF_HACK_START 112. 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** Number of message register file registers */ 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define BRW_MAX_MRF 16 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* These seem to be passed around as function args, so it works out 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * better to keep them as #defines: 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define BRW_FLUSH_READ_CACHE 0x1 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define BRW_FLUSH_STATE_CACHE 0x2 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define BRW_INHIBIT_FLUSH_RENDER_CACHE 0x4 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define BRW_FLUSH_SNAPSHOT_COUNTERS 0x8 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct brw_urb_fence 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint length:8; 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vs_realloc:1; 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint gs_realloc:1; 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint clp_realloc:1; 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sf_realloc:1; 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vfe_realloc:1; 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint cs_realloc:1; 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:2; 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint opcode:16; 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } header; 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vs_fence:10; 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint gs_fence:10; 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint clp_fence:10; 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:2; 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } bits0; 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sf_fence:10; 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vf_fence:10; 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint cs_fence:11; 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:1; 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } bits1; 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* State structs for the various fixed function units: 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct thread0 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint grf_reg_count:3; 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint kernel_start_pointer:26; /* Offset from GENERAL_STATE_BASE */ 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct thread1 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint ext_halt_exception_enable:1; 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sw_exception_enable:1; 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint mask_stack_exception_enable:1; 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint timeout_exception_enable:1; 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint illegal_op_exception_enable:1; 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:3; 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint depth_coef_urb_read_offset:6; /* WM only */ 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint floating_point_mode:1; 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint thread_priority:1; 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint binding_table_entry_count:8; 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad3:5; 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint single_program_flow:1; 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct thread2 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint per_thread_scratch_space:4; 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:6; 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint scratch_space_base_pointer:22; 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct thread3 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dispatch_grf_start_reg:4; 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint urb_entry_read_offset:6; 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint urb_entry_read_length:6; 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint const_urb_entry_read_offset:6; 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad2:1; 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint const_urb_entry_read_length:6; 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad3:1; 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct brw_clip_unit_state 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread0 thread0; 149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:7; 152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sw_exception_enable:1; 153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:3; 154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint mask_stack_exception_enable:1; 155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad2:1; 156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint illegal_op_exception_enable:1; 157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad3:2; 158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint floating_point_mode:1; 159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint thread_priority:1; 160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint binding_table_entry_count:8; 161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad4:5; 162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint single_program_flow:1; 163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } thread1; 164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread2 thread2; 166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread3 thread3; 167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:9; 171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint gs_output_stats:1; /* not always */ 172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stats_enable:1; 173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint nr_urb_entries:7; 174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint urb_entry_allocation_size:5; 176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad2:1; 177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint max_threads:5; /* may be less */ 178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad3:2; 179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } thread4; 180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:13; 184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint clip_mode:3; 185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint userclip_enable_flags:8; 186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint userclip_must_clip:1; 187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint negative_w_clip_test:1; 188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint guard_band_enable:1; 189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint viewport_z_clip_enable:1; 190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint viewport_xy_clip_enable:1; 191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vertex_position_space:1; 192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint api_mode:1; 193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad2:1; 194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } clip5; 195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:5; 199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint clipper_viewport_state_ptr:27; 200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } clip6; 201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat viewport_xmin; 204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat viewport_xmax; 205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat viewport_ymin; 206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat viewport_ymax; 207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct gen6_blend_state 210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_blend_factor:5; 213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint source_blend_factor:5; 214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad3:1; 215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint blend_func:3; 216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad2:1; 217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint ia_dest_blend_factor:5; 218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint ia_source_blend_factor:5; 219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint ia_blend_func:3; 221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint ia_blend_enable:1; 223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint blend_enable:1; 224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } blend0; 225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint post_blend_clamp_enable:1; 228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pre_blend_clamp_enable:1; 229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint clamp_range:2; 230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:4; 231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint x_dither_offset:2; 232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint y_dither_offset:2; 233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dither_enable:1; 234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint alpha_test_func:3; 235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint alpha_test_enable:1; 236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint logic_op_func:4; 238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint logic_op_enable:1; 239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad2:1; 240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint write_disable_b:1; 241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint write_disable_g:1; 242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint write_disable_r:1; 243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint write_disable_a:1; 244f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad3:1; 245f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint alpha_to_coverage_dither:1; 246f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint alpha_to_one:1; 247f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint alpha_to_coverage:1; 248f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } blend1; 249f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 250f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 251f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct gen6_color_calc_state 252f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 253f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 254f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint alpha_test_format:1; 255f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:14; 256f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint round_disable:1; 257f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_ref:8; 258f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_ref:8; 259f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } cc0; 260f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 261f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org union { 262f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat alpha_ref_f; 263f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 264f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint ui:8; 265f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:24; 266f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } alpha_ref_fi; 267f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } cc1; 268f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 269f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat constant_r; 270f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat constant_g; 271f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat constant_b; 272f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat constant_a; 273f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 274f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 275f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct gen6_depth_stencil_state 276f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 277f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 278f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:3; 279f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_pass_depth_pass_op:3; 280f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_pass_depth_fail_op:3; 281f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_fail_op:3; 282f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_func:3; 283f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_enable:1; 284f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 285f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_write_enable:1; 286f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_pass_depth_pass_op:3; 287f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_pass_depth_fail_op:3; 288f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_fail_op:3; 289f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_func:3; 290f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_enable:1; 291f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ds0; 292f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 293f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 294f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_write_mask:8; 295f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_test_mask:8; 296f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_write_mask:8; 297f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_test_mask:8; 298f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ds1; 299f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 300f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 301f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:26; 302f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint depth_write_enable:1; 303f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint depth_test_func:3; 304f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 305f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint depth_test_enable:1; 306f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ds2; 307f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 308f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 309f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct brw_cc_unit_state 310f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 311f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 312f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 313f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:3; 314f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_pass_depth_pass_op:3; 315f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_pass_depth_fail_op:3; 316f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_fail_op:3; 317f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_func:3; 318f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_enable:1; 319f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 320f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_write_enable:1; 321f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_pass_depth_pass_op:3; 322f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_pass_depth_fail_op:3; 323f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_fail_op:3; 324f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_func:3; 325f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_enable:1; 326f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } cc0; 327f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 328f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 329f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 330f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 331f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_ref:8; 332f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_write_mask:8; 333f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_test_mask:8; 334f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stencil_ref:8; 335f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } cc1; 336f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 337f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 338f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 339f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 340f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint logicop_enable:1; 341f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:10; 342f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint depth_write_enable:1; 343f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint depth_test_function:3; 344f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint depth_test:1; 345f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_write_mask:8; 346f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint bf_stencil_test_mask:8; 347f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } cc2; 348f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 349f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 350f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 351f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 352f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:8; 353f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint alpha_test_func:3; 354f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint alpha_test:1; 355f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint blend_enable:1; 356f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint ia_blend_enable:1; 357f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 358f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint alpha_test_format:1; 359f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad2:16; 360f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } cc3; 361f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 362f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 363f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 364f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:5; 365f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint cc_viewport_state_offset:27; /* Offset from GENERAL_STATE_BASE */ 366f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } cc4; 367f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 368f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 369f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 370f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:2; 371f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint ia_dest_blend_factor:5; 372f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint ia_src_blend_factor:5; 373f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint ia_blend_function:3; 374f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint statistics_enable:1; 375f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint logicop_func:4; 376f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:11; 377f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dither_enable:1; 378f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } cc5; 379f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 380f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 381f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 382f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint clamp_post_alpha_blend:1; 383f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint clamp_pre_alpha_blend:1; 384f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint clamp_range:2; 385f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:11; 386f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint y_dither_offset:2; 387f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint x_dither_offset:2; 388f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_blend_factor:5; 389f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src_blend_factor:5; 390f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint blend_function:3; 391f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } cc6; 392f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 393f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 394f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org union { 395f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat f; 396f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLubyte ub[4]; 397f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } alpha_ref; 398f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } cc7; 399f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 400f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 401f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct brw_sf_unit_state 402f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 403f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread0 thread0; 404f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread1 thread1; 405f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread2 thread2; 406f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread3 thread3; 407f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 408f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 409f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 410f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:10; 411f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stats_enable:1; 412f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint nr_urb_entries:7; 413f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 414f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint urb_entry_allocation_size:5; 415f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad2:1; 416f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint max_threads:6; 417f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad3:1; 418f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } thread4; 419f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 420f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 421f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 422f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint front_winding:1; 423f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint viewport_transform:1; 424f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:3; 425f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sf_viewport_state_offset:27; /* Offset from GENERAL_STATE_BASE */ 426f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } sf5; 427f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 428f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 429f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 430f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:9; 431f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_org_vbias:4; 432f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_org_hbias:4; 433f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint scissor:1; 434f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint disable_2x2_trifilter:1; 435f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint disable_zero_pix_trifilter:1; 436f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint point_rast_rule:2; 437f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint line_endcap_aa_region_width:2; 438f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint line_width:4; 439f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint fast_scissor_disable:1; 440f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint cull_mode:2; 441f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint aa_enable:1; 442f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } sf6; 443f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 444f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 445f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 446f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint point_size:11; 447f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint use_point_size_state:1; 448f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint subpixel_precision:1; 449f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sprite_point:1; 450f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:10; 451f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint aa_line_distance_mode:1; 452f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint trifan_pv:2; 453f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint linestrip_pv:2; 454f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint tristrip_pv:2; 455f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint line_last_pixel_enable:1; 456f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } sf7; 457f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 458f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 459f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 460f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct gen6_scissor_rect 461f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 462f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint xmin:16; 463f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint ymin:16; 464f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint xmax:16; 465f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint ymax:16; 466f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 467f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 468f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct brw_gs_unit_state 469f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 470f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread0 thread0; 471f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread1 thread1; 472f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread2 thread2; 473f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread3 thread3; 474f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 475f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 476f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 477f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:8; 478f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint rendering_enable:1; /* for Ironlake */ 479f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad4:1; 480f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stats_enable:1; 481f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint nr_urb_entries:7; 482f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 483f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint urb_entry_allocation_size:5; 484f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad2:1; 485f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint max_threads:5; 486f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad3:2; 487f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } thread4; 488f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 489f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 490f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 491f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sampler_count:3; 492f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:2; 493f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sampler_state_pointer:27; 494f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } gs5; 495f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 496f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 497f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 498f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 499f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint max_vp_index:4; 500f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:12; 501f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint svbi_post_inc_value:10; 502f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 503f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint svbi_post_inc_enable:1; 504f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint svbi_payload:1; 505f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint discard_adjaceny:1; 506f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint reorder_enable:1; 507f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad2:1; 508f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } gs6; 509f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 510f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 511f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 512f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct brw_vs_unit_state 513f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 514f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread0 thread0; 515f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread1 thread1; 516f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread2 thread2; 517f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread3 thread3; 518f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 519f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 520f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 521f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:10; 522f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stats_enable:1; 523f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint nr_urb_entries:7; 524f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 525f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint urb_entry_allocation_size:5; 526f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad2:1; 527f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint max_threads:6; 528f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad3:1; 529f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } thread4; 530f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 531f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 532f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 533f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sampler_count:3; 534f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:2; 535f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sampler_state_pointer:27; 536f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } vs5; 537f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 538f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 539f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 540f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vs_enable:1; 541f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vert_cache_disable:1; 542f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:30; 543f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } vs6; 544f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 545f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 546f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 547f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct brw_wm_unit_state 548f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 549f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread0 thread0; 550f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread1 thread1; 551f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread2 thread2; 552f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct thread3 thread3; 553f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 554f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 555f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint stats_enable:1; 556f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint depth_buffer_clear:1; 557f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sampler_count:3; 558f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sampler_state_pointer:27; 559f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } wm4; 560f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 561f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 562f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 563f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint enable_8_pix:1; 564f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint enable_16_pix:1; 565f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint enable_32_pix:1; 566f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint enable_con_32_pix:1; 567f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint enable_con_64_pix:1; 568f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 569f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 570f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* These next four bits are for Ironlake+ */ 571f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint fast_span_coverage_enable:1; 572f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint depth_buffer_clear:1; 573f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint depth_buffer_resolve_enable:1; 574f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint hierarchical_depth_buffer_resolve_enable:1; 575f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 576f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint legacy_global_depth_bias:1; 577f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint line_stipple:1; 578f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint depth_offset:1; 579f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint polygon_stipple:1; 580f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint line_aa_region_width:2; 581f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint line_endcap_aa_region_width:2; 582f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint early_depth_test:1; 583f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint thread_dispatch_enable:1; 584f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint program_uses_depth:1; 585f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint program_computes_depth:1; 586f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint program_uses_killpixel:1; 587f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint legacy_line_rast: 1; 588f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint transposed_urb_read_enable:1; 589f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint max_threads:7; 590f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } wm5; 591f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 592f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat global_depth_offset_constant; 593f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat global_depth_offset_scale; 594f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 595f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* for Ironlake only */ 596f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 597f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 598f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint grf_reg_count_1:3; 599f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 600f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint kernel_start_pointer_1:26; 601f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } wm8; 602f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 603f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 604f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 605f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint grf_reg_count_2:3; 606f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 607f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint kernel_start_pointer_2:26; 608f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } wm9; 609f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 610f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 611f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 612f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint grf_reg_count_3:3; 613f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 614f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint kernel_start_pointer_3:26; 615f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } wm10; 616f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 617f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 618f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct brw_sampler_default_color { 619f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat color[4]; 620f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 621f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 622f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct gen5_sampler_default_color { 623f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint8_t ub[4]; 624f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org float f[4]; 625f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint16_t hf[4]; 626f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint16_t us[4]; 627f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int16_t s[4]; 628f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint8_t b[4]; 629f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 630f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 631f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct brw_sampler_state 632f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 633f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 634f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 635f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 636f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint shadow_function:3; 637f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint lod_bias:11; 638f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint min_filter:3; 639f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint mag_filter:3; 640f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint mip_filter:2; 641f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint base_level:5; 642f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint min_mag_neq:1; 643f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint lod_preclamp:1; 644f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint default_color_mode:1; 645f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 646f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint disable:1; 647f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss0; 648f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 649f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 650f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 651f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint r_wrap_mode:3; 652f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint t_wrap_mode:3; 653f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint s_wrap_mode:3; 654f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint cube_control_mode:1; 655f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:2; 656f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint max_lod:10; 657f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint min_lod:10; 658f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss1; 659f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 660f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 661f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 662f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 663f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:5; 664f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint default_color_pointer:27; 665f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss2; 666f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 667f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 668f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 669f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint non_normalized_coord:1; 670f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:12; 671f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint address_round:6; 672f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint max_aniso:3; 673f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint chroma_key_mode:1; 674f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint chroma_key_index:2; 675f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint chroma_key_enable:1; 676f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint monochrome_filter_width:3; 677f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint monochrome_filter_height:3; 678f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss3; 679f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 680f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 681f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct gen7_sampler_state 682f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 683f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 684f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 685f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint aniso_algorithm:1; 686f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint lod_bias:13; 687f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint min_filter:3; 688f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint mag_filter:3; 689f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint mip_filter:2; 690f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint base_level:5; 691f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 692f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint lod_preclamp:1; 693f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint default_color_mode:1; 694f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 695f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint disable:1; 696f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss0; 697f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 698f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 699f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 700f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint cube_control_mode:1; 701f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint shadow_function:3; 702f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:4; 703f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint max_lod:12; 704f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint min_lod:12; 705f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss1; 706f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 707f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 708f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 709f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:5; 710f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint default_color_pointer:27; 711f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss2; 712f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 713f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 714f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 715f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint r_wrap_mode:3; 716f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint t_wrap_mode:3; 717f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint s_wrap_mode:3; 718f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:1; 719f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint non_normalized_coord:1; 720f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint trilinear_quality:2; 721f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint address_round:6; 722f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint max_aniso:3; 723f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint chroma_key_mode:1; 724f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint chroma_key_index:2; 725f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint chroma_key_enable:1; 726f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:6; 727f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss3; 728f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 729f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 730f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct brw_clipper_viewport 731f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 732f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat xmin; 733f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat xmax; 734f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat ymin; 735f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat ymax; 736f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 737f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 738f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct brw_cc_viewport 739f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 740f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat min_depth; 741f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat max_depth; 742f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 743f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 744f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct brw_sf_viewport 745f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 746f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 747f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m00; 748f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m11; 749f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m22; 750f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m30; 751f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m31; 752f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m32; 753f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } viewport; 754f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 755f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* scissor coordinates are inclusive */ 756f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 757f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLshort xmin; 758f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLshort ymin; 759f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLshort xmax; 760f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLshort ymax; 761f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } scissor; 762f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 763f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 764f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct gen6_sf_viewport { 765f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m00; 766f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m11; 767f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m22; 768f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m30; 769f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m31; 770f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m32; 771f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 772f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 773f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct gen7_sf_clip_viewport { 774f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 775f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m00; 776f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m11; 777f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m22; 778f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m30; 779f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m31; 780f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat m32; 781f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } viewport; 782f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 783f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0[2]; 784f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 785f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 786f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat xmin; 787f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat xmax; 788f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat ymin; 789f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat ymax; 790f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } guardband; 791f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 792f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat pad1[4]; 793f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 794f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 795f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* volume 5c Shared Functions - 1.13.4.1.2 */ 796f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct gen7_surface_state 797f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 798f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 799f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint cube_pos_z:1; 800f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint cube_neg_z:1; 801f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint cube_pos_y:1; 802f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint cube_neg_y:1; 803f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint cube_pos_x:1; 804f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint cube_neg_x:1; 805f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad2:2; 806f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint render_cache_read_write:1; 807f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 808f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint surface_array_spacing:1; 809f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vert_line_stride_ofs:1; 810f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vert_line_stride:1; 811f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint tile_walk:1; 812f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint tiled_surface:1; 813f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint horizontal_alignment:1; 814f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vertical_alignment:2; 815f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint surface_format:9; /**< BRW_SURFACEFORMAT_x */ 816f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 817f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint is_array:1; 818f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint surface_type:3; /**< BRW_SURFACE_1D/2D/3D/CUBE */ 819f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss0; 820f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 821f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 822f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint base_addr; 823f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss1; 824f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 825f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 826f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint width:14; 827f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 828f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint height:14; 829f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:2; 830f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss2; 831f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 832f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 833f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pitch:18; 834f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:3; 835f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint depth:11; 836f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss3; 837f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 838f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 839f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint multisample_position_palette_index:3; 840f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint num_multisamples:3; 841f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint multisampled_surface_storage_format:1; 842f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint render_target_view_extent:11; 843f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint min_array_elt:11; 844f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint rotation:2; 845f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 846f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss4; 847f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 848f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 849f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint mip_count:4; 850f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint min_lod:4; 851f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:12; 852f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint y_offset:4; 853f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 854f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint x_offset:7; 855f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss5; 856f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 857f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org union { 858f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint raw_data; 859f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 860f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint y_offset_for_uv_plane:14; 861f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 862f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint x_offset_for_uv_plane:14; 863f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:2; 864f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } planar; /** Interpretation when Surface Format == PLANAR */ 865f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 866f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint mcs_enable:1; 867f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint append_counter_enable:1; 868f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:4; 869f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint append_counter_address:26; 870f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } mcs_disabled; /** Interpretation when mcs_enable == 0 */ 871f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 872f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint mcs_enable:1; 873f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:2; 874f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint mcs_surface_pitch:9; 875f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint mcs_base_address:20; 876f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } mcs_enabled; /** Interpretation when mcs_enable == 1 */ 877f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss6; 878f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 879f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 880f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint resource_min_lod:12; 881f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 882f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Only on Haswell */ 883f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:4; 884f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint shader_channel_select_a:3; 885f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint shader_channel_select_b:3; 886f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint shader_channel_select_g:3; 887f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint shader_channel_select_r:3; 888f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 889f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint alpha_clear_color:1; 890f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint blue_clear_color:1; 891f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint green_clear_color:1; 892f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint red_clear_color:1; 893f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ss7; 894f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 895f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 896f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 897f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct brw_vertex_element_state 898f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 899f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 900f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 901f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src_offset:11; 902f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:5; 903f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src_format:9; 904f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 905f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint valid:1; 906f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vertex_buffer_index:5; 907f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ve0; 908f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 909f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 910f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 911f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dst_offset:8; 912f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:8; 913f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vfcomponent3:4; 914f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vfcomponent2:4; 915f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vfcomponent1:4; 916f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint vfcomponent0:4; 917f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ve1; 918f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 919f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 920f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct brw_urb_immediate { 921f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint opcode:4; 922f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint offset:6; 923f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint swizzle_control:2; 924f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:1; 925f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint allocate:1; 926f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint used:1; 927f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint complete:1; 928f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:4; 929f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 930f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_target:4; 931f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:3; 932f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 933f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 934f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 935f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* Instruction format for the execution units: 936f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 937f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 938f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct brw_instruction 939f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 940f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 941f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 942f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint opcode:7; 943f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:1; 944f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint access_mode:1; 945f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint mask_control:1; 946f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dependency_control:2; 947f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint compression_control:2; /* gen6: quater control */ 948f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint thread_control:2; 949f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint predicate_control:4; 950f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint predicate_inverse:1; 951f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint execution_size:3; 952f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 953f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Conditional Modifier for most instructions. On Gen6+, this is also 954f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * used for the SEND instruction's Message Target/SFID. 955f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 956f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint destreg__conditionalmod:4; 957f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint acc_wr_control:1; 958f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint cmpt_control:1; 959f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint debug_control:1; 960f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint saturate:1; 961f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } header; 962f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 963f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org union { 964f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 965f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 966f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_reg_file:2; 967f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_reg_type:3; 968f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_reg_file:2; 969f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_reg_type:3; 970f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_reg_file:2; 971f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_reg_type:3; 972f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:1; 973f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_subreg_nr:5; 974f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_reg_nr:8; 975f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_horiz_stride:2; 976f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_address_mode:1; 977f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } da1; 978f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 979f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 980f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 981f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_reg_file:2; 982f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_reg_type:3; 983f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_reg_file:2; 984f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_reg_type:3; 985f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_reg_file:2; /* 0x00000c00 */ 986f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_reg_type:3; /* 0x00007000 */ 987f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:1; 988f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint dest_indirect_offset:10; /* offset against the deref'd address reg */ 989f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_subreg_nr:3; /* subnr for the address reg a0.x */ 990f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_horiz_stride:2; 991f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_address_mode:1; 992f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ia1; 993f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 994f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 995f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 996f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_reg_file:2; 997f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_reg_type:3; 998f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_reg_file:2; 999f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_reg_type:3; 1000f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_reg_file:2; 1001f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_reg_type:3; 1002f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:1; 1003f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_writemask:4; 1004f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_subreg_nr:1; 1005f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_reg_nr:8; 1006f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_horiz_stride:2; 1007f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_address_mode:1; 1008f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } da16; 1009f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1010f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 1011f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1012f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_reg_file:2; 1013f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_reg_type:3; 1014f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_reg_file:2; 1015f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_reg_type:3; 1016f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:6; 1017f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_writemask:4; 1018f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint dest_indirect_offset:6; 1019f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_subreg_nr:3; 1020f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_horiz_stride:2; 1021f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_address_mode:1; 1022f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ia16; 1023f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1024f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1025f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_reg_file:2; 1026f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_reg_type:3; 1027f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_reg_file:2; 1028f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_reg_type:3; 1029f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_reg_file:2; 1030f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_reg_type:3; 1031f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:1; 1032f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1033f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint jump_count:16; 1034f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } branch_gen6; 1035f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1036f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1037f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_reg_file:1; 1038f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint flag_subreg_num:1; 1039f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:2; 1040f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_abs:1; 1041f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_negate:1; 1042f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_abs:1; 1043f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_negate:1; 1044f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src2_abs:1; 1045f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src2_negate:1; 1046f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:7; 1047f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_writemask:4; 1048f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_subreg_nr:3; 1049f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint dest_reg_nr:8; 1050f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } da3src; 1051f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } bits1; 1052f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1053f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1054f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org union { 1055f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 1056f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1057f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_subreg_nr:5; 1058f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_reg_nr:8; 1059f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_abs:1; 1060f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_negate:1; 1061f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_address_mode:1; 1062f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_horiz_stride:2; 1063f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_width:3; 1064f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_vert_stride:4; 1065f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint flag_reg_nr:1; 1066f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:6; 1067f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } da1; 1068f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1069f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 1070f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1071f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint src0_indirect_offset:10; 1072f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_subreg_nr:3; 1073f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_abs:1; 1074f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_negate:1; 1075f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_address_mode:1; 1076f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_horiz_stride:2; 1077f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_width:3; 1078f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_vert_stride:4; 1079f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint flag_reg_nr:1; 1080f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:6; 1081f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ia1; 1082f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1083f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 1084f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1085f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_swz_x:2; 1086f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_swz_y:2; 1087f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_subreg_nr:1; 1088f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_reg_nr:8; 1089f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_abs:1; 1090f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_negate:1; 1091f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_address_mode:1; 1092f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_swz_z:2; 1093f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_swz_w:2; 1094f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 1095f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_vert_stride:4; 1096f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint flag_reg_nr:1; 1097f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:6; 1098f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } da16; 1099f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 1101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_swz_x:2; 1103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_swz_y:2; 1104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint src0_indirect_offset:6; 1105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_subreg_nr:3; 1106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_abs:1; 1107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_negate:1; 1108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_address_mode:1; 1109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_swz_z:2; 1110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_swz_w:2; 1111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 1112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_vert_stride:4; 1113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint flag_reg_nr:1; 1114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:6; 1115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ia16; 1116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Extended Message Descriptor for Ironlake (Gen5) SEND instruction. 1118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 1119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Does not apply to Gen6+. The SFID/message target moved to bits 1120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 27:24 of the header (destreg__conditionalmod); EOT is in bits3. 1121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 1123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:26; 1125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 1127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sfid:4; 1128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } send_gen5; /* for Ironlake only */ 1129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_rep_ctrl:1; 1132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_swizzle:8; 1133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_subreg_nr:3; 1134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src0_reg_nr:8; 1135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 1136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_rep_ctrl:1; 1137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_swizzle:8; 1138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_subreg_nr_low:2; 1139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } da3src; 1140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } bits2; 1141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org union 1143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 1145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_subreg_nr:5; 1147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_reg_nr:8; 1148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_abs:1; 1149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_negate:1; 1150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_address_mode:1; 1151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_horiz_stride:2; 1152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_width:3; 1153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_vert_stride:4; 1154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:7; 1155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } da1; 1156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 1158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_swz_x:2; 1160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_swz_y:2; 1161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_subreg_nr:1; 1162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_reg_nr:8; 1163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_abs:1; 1164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_negate:1; 1165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_address_mode:1; 1166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_swz_z:2; 1167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_swz_w:2; 1168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 1169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_vert_stride:4; 1170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad2:7; 1171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } da16; 1172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 1174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint src1_indirect_offset:10; 1176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_subreg_nr:3; 1177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_abs:1; 1178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_negate:1; 1179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_address_mode:1; 1180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_horiz_stride:2; 1181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_width:3; 1182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_vert_stride:4; 1183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint flag_reg_nr:1; 1184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:6; 1185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ia1; 1186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 1188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_swz_x:2; 1190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_swz_y:2; 1191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint src1_indirect_offset:6; 1192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_subreg_nr:3; 1193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_abs:1; 1194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_negate:1; 1195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 1196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_swz_z:2; 1197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_swz_w:2; 1198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 1199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_vert_stride:4; 1200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint flag_reg_nr:1; 1201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad2:6; 1202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } ia16; 1203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 1206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint jump_count:16; /* note: signed */ 1208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pop_count:4; 1209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:12; 1210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } if_else; 1211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* This is also used for gen7 IF/ELSE instructions */ 1213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct 1214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Signed jump distance to the ip to jump to if all channels 1216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * are disabled after the break or continue. It should point 1217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * to the end of the innermost control flow block, as that's 1218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * where some channel could get re-enabled. 1219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int jip:16; 1221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Signed jump distance to the location to resume execution 1223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * of this channel if it's enabled for the break or continue. 1224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int uip:16; 1226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } break_cont; 1227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 1229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * \defgroup SEND instructions / Message Descriptors 1230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 1231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * @{ 1232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 1235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Generic Message Descriptor for Gen4 SEND instructions. The structs 1236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * below expand function_control to something specific for their 1237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * message. Due to struct packing issues, they duplicate these bits. 1238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 1239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * See the G45 PRM, Volume 4, Table 14-15. 1240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint function_control:16; 1243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:4; 1244f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1245f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_target:4; 1246f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:3; 1247f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1248f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } generic; 1249f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1250f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 1251f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Generic Message Descriptor for Gen5-7 SEND instructions. 1252f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 1253f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * See the Sandybridge PRM, Volume 2 Part 2, Table 8-15. (Sadly, most 1254f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * of the information on the SEND instruction is missing from the public 1255f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Ironlake PRM.) 1256f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 1257f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The table claims that bit 31 is reserved/MBZ on Gen6+, but it lies. 1258f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * According to the SEND instruction description: 1259f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * "The MSb of the message description, the EOT field, always comes from 1260f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * bit 127 of the instruction word"...which is bit 31 of this field. 1261f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1262f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1263f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint function_control:19; 1264f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint header_present:1; 1265f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:5; 1266f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1267f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 1268f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1269f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } generic_gen5; 1270f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1271f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** G45 PRM, Volume 4, Section 6.1.1.1 */ 1272f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1273f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint function:4; 1274f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint int_type:1; 1275f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint precision:1; 1276f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint saturate:1; 1277f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint data_type:1; 1278f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:8; 1279f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:4; 1280f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1281f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_target:4; 1282f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:3; 1283f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1284f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } math; 1285f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1286f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** Ironlake PRM, Volume 4 Part 1, Section 6.1.1.1 */ 1287f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1288f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint function:4; 1289f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint int_type:1; 1290f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint precision:1; 1291f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint saturate:1; 1292f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint data_type:1; 1293f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint snapshot:1; 1294f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:10; 1295f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint header_present:1; 1296f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:5; 1297f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1298f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 1299f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1300f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } math_gen5; 1301f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1302f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** G45 PRM, Volume 4, Section 4.8.1.1.1 [DevBW] and [DevCL] */ 1303f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1304f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint binding_table_index:8; 1305f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sampler:4; 1306f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint return_format:2; 1307f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_type:2; 1308f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:4; 1309f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1310f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_target:4; 1311f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:3; 1312f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1313f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } sampler; 1314f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1315f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** G45 PRM, Volume 4, Section 4.8.1.1.2 [DevCTG] */ 1316f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1317f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint binding_table_index:8; 1318f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sampler:4; 1319f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_type:4; 1320f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:4; 1321f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1322f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_target:4; 1323f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:3; 1324f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1325f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } sampler_g4x; 1326f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1327f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** Ironlake PRM, Volume 4 Part 1, Section 4.11.1.1.3 */ 1328f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1329f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint binding_table_index:8; 1330f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sampler:4; 1331f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_type:4; 1332f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint simd_mode:2; 1333f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 1334f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint header_present:1; 1335f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:5; 1336f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1337f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 1338f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1339f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } sampler_gen5; 1340f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1341f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1342f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint binding_table_index:8; 1343f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint sampler:4; 1344f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_type:5; 1345f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint simd_mode:2; 1346f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint header_present:1; 1347f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:5; 1348f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1349f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 1350f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1351f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } sampler_gen7; 1352f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1353f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct brw_urb_immediate urb; 1354f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1355f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1356f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint opcode:4; 1357f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint offset:6; 1358f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint swizzle_control:2; 1359f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad:1; 1360f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint allocate:1; 1361f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint used:1; 1362f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint complete:1; 1363f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:3; 1364f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint header_present:1; 1365f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:5; 1366f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1367f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 1368f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1369f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } urb_gen5; 1370f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1371f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1372f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint opcode:3; 1373f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint offset:11; 1374f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint swizzle_control:1; 1375f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint complete:1; 1376f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint per_slot_offset:1; 1377f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:2; 1378f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint header_present:1; 1379f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:5; 1380f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1381f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 1382f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1383f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } urb_gen7; 1384f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1385f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 965 PRM, Volume 4, Section 5.10.1.1: Message Descriptor */ 1386f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1387f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint binding_table_index:8; 1388f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_control:4; 1389f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_type:2; 1390f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint target_cache:2; 1391f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:4; 1392f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1393f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_target:4; 1394f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:3; 1395f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1396f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } dp_read; 1397f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1398f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** G45 PRM, Volume 4, Section 5.10.1.1.2 */ 1399f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1400f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint binding_table_index:8; 1401f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_control:3; 1402f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_type:3; 1403f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint target_cache:2; 1404f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:4; 1405f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1406f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_target:4; 1407f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:3; 1408f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1409f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } dp_read_g4x; 1410f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1411f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** Ironlake PRM, Volume 4 Part 1, Section 5.10.2.1.2. */ 1412f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1413f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint binding_table_index:8; 1414f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_control:3; 1415f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_type:3; 1416f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint target_cache:2; 1417f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:3; 1418f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint header_present:1; 1419f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:5; 1420f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1421f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 1422f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1423f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } dp_read_gen5; 1424f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1425f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** G45 PRM, Volume 4, Section 5.10.1.1.2. For both Gen4 and G45. */ 1426f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1427f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint binding_table_index:8; 1428f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_control:3; 1429f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint last_render_target:1; 1430f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_type:3; 1431f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint send_commit_msg:1; 1432f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:4; 1433f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1434f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_target:4; 1435f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:3; 1436f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1437f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } dp_write; 1438f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1439f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** Ironlake PRM, Volume 4 Part 1, Section 5.10.2.1.2. */ 1440f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1441f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint binding_table_index:8; 1442f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_control:3; 1443f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint last_render_target:1; 1444f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_type:3; 1445f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint send_commit_msg:1; 1446f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:3; 1447f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint header_present:1; 1448f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:5; 1449f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1450f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 1451f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1452f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } dp_write_gen5; 1453f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1454f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 1455f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Message for the Sandybridge Sampler Cache or Constant Cache Data Port. 1456f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 1457f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * See the Sandybridge PRM, Volume 4 Part 1, Section 3.9.2.1.1. 1458f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org **/ 1459f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1460f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint binding_table_index:8; 1461f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_control:5; 1462f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_type:3; 1463f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:3; 1464f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint header_present:1; 1465f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:5; 1466f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1467f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 1468f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1469f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } gen6_dp_sampler_const_cache; 1470f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1471f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 1472f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Message for the Sandybridge Render Cache Data Port. 1473f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 1474f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Most fields are defined in the Sandybridge PRM, Volume 4 Part 1, 1475f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Section 3.9.2.1.1: Message Descriptor. 1476f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 1477f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * "Slot Group Select" and "Last Render Target" are part of the 1478f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 5-bit message control for Render Target Write messages. See 1479f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Section 3.9.9.2.1 of the same volume. 1480f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1481f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1482f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint binding_table_index:8; 1483f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_control:3; 1484f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint slot_group_select:1; 1485f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint last_render_target:1; 1486f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_type:4; 1487f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint send_commit_msg:1; 1488f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 1489f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint header_present:1; 1490f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:5; 1491f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1492f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 1493f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1494f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } gen6_dp; 1495f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1496f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 1497f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Message for any of the Gen7 Data Port caches. 1498f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 1499f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Most fields are defined in BSpec volume 5c.2 Data Port / Messages / 1500f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Data Port Messages / Message Descriptor. Once again, "Slot Group 1501f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Select" and "Last Render Target" are part of the 6-bit message 1502f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * control for Render Target Writes. 1503f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1504f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1505f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint binding_table_index:8; 1506f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_control:3; 1507f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint slot_group_select:1; 1508f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint last_render_target:1; 1509f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_control_pad:1; 1510f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_type:4; 1511f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:1; 1512f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint header_present:1; 1513f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint response_length:5; 1514f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint msg_length:4; 1515f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad2:2; 1516f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint end_of_thread:1; 1517f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } gen7_dp; 1518f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** @} */ 1519f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1520f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct { 1521f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_subreg_nr_high:1; 1522f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src1_reg_nr:8; 1523f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad0:1; 1524f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src2_rep_ctrl:1; 1525f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src2_swizzle:8; 1526f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src2_subreg_nr:3; 1527f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint src2_reg_nr:8; 1528f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint pad1:2; 1529f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } da3src; 1530f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1531f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint d; 1532f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint ud; 1533f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org float f; 1534f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } bits3; 1535f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 1536f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1537f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1538f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 1539