diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gallium/drivers/r300/r300_chipset.h | 2 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_context.h | 1 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_emit.c | 2 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_flush.c | 2 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_render.c | 11 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_screen.c | 4 | 
6 files changed, 10 insertions, 12 deletions
| diff --git a/src/gallium/drivers/r300/r300_chipset.h b/src/gallium/drivers/r300/r300_chipset.h index 7ea4175dbe..f2035d2009 100644 --- a/src/gallium/drivers/r300/r300_chipset.h +++ b/src/gallium/drivers/r300/r300_chipset.h @@ -81,6 +81,8 @@ struct r300_capabilities {      boolean high_second_pipe;      /* DXTC texture swizzling. */      boolean dxtc_swizzle; +    /* Index bias (AKA index offset). */ +    boolean index_bias_supported;  };  /* Enumerations for legibility and telling which card we're running on. */ diff --git a/src/gallium/drivers/r300/r300_context.h b/src/gallium/drivers/r300/r300_context.h index 93c20a0a6a..b543ad667e 100644 --- a/src/gallium/drivers/r300/r300_context.h +++ b/src/gallium/drivers/r300/r300_context.h @@ -673,7 +673,6 @@ void r300_plug_in_stencil_ref_fallback(struct r300_context *r300);  /* r300_render.c */  void r300_draw_flush_vbuf(struct r300_context *r300); -boolean r500_index_bias_supported(struct r300_context *r300);  void r500_emit_index_bias(struct r300_context *r300, int index_bias);  /* r300_state.c */ diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c index 31c7b38adf..2b13727174 100644 --- a/src/gallium/drivers/r300/r300_emit.c +++ b/src/gallium/drivers/r300/r300_emit.c @@ -1260,7 +1260,7 @@ unsigned r300_get_num_cs_end_dwords(struct r300_context *r300)      /* Emitted in flush. */      dwords += 26; /* emit_query_end */      dwords += r300->hyperz_state.size + 2; /* emit_hyperz_end + zcache flush */ -    if (r500_index_bias_supported(r300)) +    if (r300->screen->caps.index_bias_supported)          dwords += 2;      return dwords; diff --git a/src/gallium/drivers/r300/r300_flush.c b/src/gallium/drivers/r300/r300_flush.c index 1afd27f093..16de7fd413 100644 --- a/src/gallium/drivers/r300/r300_flush.c +++ b/src/gallium/drivers/r300/r300_flush.c @@ -49,7 +49,7 @@ static void r300_flush(struct pipe_context* pipe,      if (r300->dirty_hw) {          r300_emit_hyperz_end(r300);          r300_emit_query_end(r300); -        if (r500_index_bias_supported(r300)) +        if (r300->screen->caps.index_bias_supported)              r500_emit_index_bias(r300, 0);          r300->flush_counter++; diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c index 2f8b6b8337..07581408ab 100644 --- a/src/gallium/drivers/r300/r300_render.c +++ b/src/gallium/drivers/r300/r300_render.c @@ -118,12 +118,6 @@ static uint32_t r300_provoking_vertex_fixes(struct r300_context *r300,      return color_control;  } -boolean r500_index_bias_supported(struct r300_context *r300) -{ -    return r300->screen->caps.is_r500 && -           r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0); -} -  void r500_emit_index_bias(struct r300_context *r300, int index_bias)  {      CS_LOCALS(r300); @@ -193,13 +187,12 @@ static boolean r300_reserve_cs_dwords(struct r300_context *r300,      boolean first_draw     = flags & PREP_FIRST_DRAW;      boolean emit_aos       = flags & PREP_EMIT_AOS;      boolean emit_aos_swtcl = flags & PREP_EMIT_AOS_SWTCL; -    boolean hw_index_bias  = r500_index_bias_supported(r300);      /* Add dirty state, index offset, and AOS. */      if (first_draw) {          cs_dwords += r300_get_num_dirty_dwords(r300); -        if (hw_index_bias) +        if (r300->screen->caps.index_bias_supported)              cs_dwords += 2; /* emit_index_offset */          if (emit_aos) @@ -537,7 +530,7 @@ static void r300_draw_range_elements(struct pipe_context* pipe,      int buffer_offset = 0, index_offset = 0; /* for index bias emulation */      unsigned new_offset; -    if (indexBias && !r500_index_bias_supported(r300)) { +    if (indexBias && !r300->screen->caps.index_bias_supported) {          r300_split_index_bias(r300, indexBias, &buffer_offset, &index_offset);      } diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c index 09981cb26b..921d6f1e67 100644 --- a/src/gallium/drivers/r300/r300_screen.c +++ b/src/gallium/drivers/r300/r300_screen.c @@ -457,6 +457,10 @@ struct pipe_screen* r300_screen_create(struct r300_winsys_screen *rws)      r300_init_debug(r300screen);      r300_parse_chipset(&r300screen->caps); +    r300screen->caps.index_bias_supported = +            r300screen->caps.is_r500 && +            rws->get_value(rws, R300_VID_DRM_2_3_0); +      util_slab_create(&r300screen->pool_buffers,                       sizeof(struct r300_buffer), 64,                       UTIL_SLAB_SINGLETHREADED); | 
