brw_gs_state.c File Reference

Include dependency graph for brw_gs_state.c:

Go to the source code of this file.

Functions

static void upload_gs_unit (struct brw_context *brw)

Variables

struct brw_tracked_state brw_gs_unit


Function Documentation

static void upload_gs_unit ( struct brw_context brw  )  [static]

Definition at line 42 of file brw_gs_state.c.

References align(), brw_cache_data(), BRW_DEBUG, BRW_FLOATING_POINT_NON_IEEE_754, BRW_GS_UNIT, brw_context::cache, thread3::const_urb_entry_read_length, thread3::const_urb_entry_read_offset, DEBUG_STATS, thread3::dispatch_grf_start_reg, thread1::floating_point_mode, thread0::grf_reg_count, brw_context::gs, thread0::kernel_start_pointer, brw_gs_unit_state::max_threads, brw_context::nr_gs_entries, brw_gs_unit_state::nr_urb_entries, brw_context::prog_active, brw_context::prog_data, brw_context::prog_gs_offset, thread1::single_program_flow, brw_context::state_gs_offset, brw_gs_unit_state::stats_enable, brw_gs_unit_state::thread0, brw_gs_unit_state::thread1, brw_gs_unit_state::thread3, brw_gs_unit_state::thread4, brw_vs_prog_data::total_grf, brw_context::urb, brw_gs_unit_state::urb_entry_allocation_size, thread3::urb_entry_read_length, thread3::urb_entry_read_offset, brw_vs_prog_data::urb_read_length, and brw_context::vsize.

00043 {
00044    struct brw_gs_unit_state gs;
00045 
00046    memset(&gs, 0, sizeof(gs));
00047 
00048    /* CACHE_NEW_GS_PROG */
00049    if (brw->gs.prog_active) {
00050       gs.thread0.grf_reg_count =
00051          align(brw->gs.prog_data->total_grf, 16) / 16 - 1;
00052       gs.thread0.kernel_start_pointer = brw->gs.prog_gs_offset >> 6;
00053       gs.thread3.urb_entry_read_length = brw->gs.prog_data->urb_read_length;
00054    }
00055    else {
00056       gs.thread0.grf_reg_count = 0;
00057       gs.thread0.kernel_start_pointer = 0;
00058       gs.thread3.urb_entry_read_length = 1;
00059    }
00060 
00061    /* BRW_NEW_URB_FENCE */
00062    gs.thread4.nr_urb_entries = brw->urb.nr_gs_entries;
00063    gs.thread4.urb_entry_allocation_size = brw->urb.vsize - 1;
00064 
00065    gs.thread4.max_threads = 0; /* Hardware requirement */
00066 
00067    if (BRW_DEBUG & DEBUG_STATS)
00068       gs.thread4.stats_enable = 1;
00069 
00070    /* CONSTANT */
00071    gs.thread1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754;
00072    gs.thread1.single_program_flow = 1;
00073    gs.thread3.dispatch_grf_start_reg = 1;
00074    gs.thread3.const_urb_entry_read_offset = 0;
00075    gs.thread3.const_urb_entry_read_length = 0;
00076    gs.thread3.urb_entry_read_offset = 0;
00077 
00078 
00079    brw->gs.state_gs_offset = brw_cache_data( &brw->cache[BRW_GS_UNIT], &gs );
00080 }


Variable Documentation

struct brw_tracked_state brw_gs_unit

Initial value:

 {
   .dirty = {
      .brw   = ( 0x40000  |
                 0x10000 ),
      .cache =  (1<<BRW_GS_PROG) 
   },
   .update = upload_gs_unit
}

Definition at line 83 of file brw_gs_state.c.


Generated on Tue Sep 29 06:25:37 2009 for Gallium3D by  doxygen 1.5.4