diff options
| author | Marek Olšák <maraeo@gmail.com> | 2011-02-10 06:10:55 +0100 | 
|---|---|---|
| committer | Marek Olšák <maraeo@gmail.com> | 2011-02-10 11:27:35 +0100 | 
| commit | ce9c0d280104c8001a3ee360b07218ad3d260e46 (patch) | |
| tree | d6fb1fdb2d46ffd6f9128f9f41fd4b76f92db18d /src/gallium/drivers | |
| parent | ac366af9fdb6853ccb172a3dd52a88063e5136e7 (diff) | |
r300g: simplify WRITE_RELOC API and cleanup
Diffstat (limited to 'src/gallium/drivers')
| -rw-r--r-- | src/gallium/drivers/r300/r300_cb.h | 54 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_context.c | 4 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_context.h | 12 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_cs.h | 51 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_emit.c | 84 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_query.c | 10 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_render.c | 9 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_state.c | 4 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_texture.c | 22 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_transfer.c | 12 | 
10 files changed, 126 insertions, 136 deletions
| diff --git a/src/gallium/drivers/r300/r300_cb.h b/src/gallium/drivers/r300/r300_cb.h index 9d3d4fc1b1..b373937a1f 100644 --- a/src/gallium/drivers/r300/r300_cb.h +++ b/src/gallium/drivers/r300/r300_cb.h @@ -61,40 +61,52 @@   * that they neatly hide away, and don't have the cost of function setup, so   * we're going to use them. */ -#ifdef DEBUG -#define CB_DEBUG(x) x -#else -#define CB_DEBUG(x) -#endif - -  /**   * Command buffer setup.   */ +#ifdef DEBUG +  #define CB_LOCALS \ -    CB_DEBUG(int cs_count = 0;) \ +    int cs_count = 0; \      uint32_t *cs_ptr = NULL; \ -    CB_DEBUG((void) cs_count;) (void) cs_ptr; +    (void) cs_count; (void) cs_ptr -#define NEW_CB(ptr, size) do { \ -    assert(sizeof(*ptr) == sizeof(uint32_t)); \ -    cs_ptr = (ptr) = (uint32_t*)malloc((size) * sizeof(uint32_t)); \ -    CB_DEBUG(cs_count = size;) \ +#define BEGIN_CB(ptr, size) do { \ +    assert(sizeof(*(ptr)) == sizeof(uint32_t)); \ +    cs_count = (size); \ +    cs_ptr = (ptr); \  } while (0) -#define BEGIN_CB(ptr, size) do { \ -    assert(sizeof(*ptr) == sizeof(uint32_t)); \ -    cs_ptr = ptr; \ -    CB_DEBUG(cs_count = size;) \ +#define NEW_CB(ptr, size) \ +    do { \ +    assert(sizeof(*(ptr)) == sizeof(uint32_t)); \ +    cs_count = (size); \ +    cs_ptr = (ptr) = (uint32_t*)malloc((size) * sizeof(uint32_t)); \  } while (0)  #define END_CB do { \ -    CB_DEBUG(if (cs_count != 0) \ +    if (cs_count != 0) \          debug_printf("r300: Warning: cs_count off by %d at (%s, %s:%i)\n", \ -                     cs_count, __FUNCTION__, __FILE__, __LINE__);) \ +                     cs_count, __FUNCTION__, __FILE__, __LINE__); \  } while (0) +#define CB_USED_DW(x) cs_count -= x + +#else + +#define CB_LOCALS \ +    uint32_t *cs_ptr = NULL; (void) cs_ptr + +#define NEW_CB(ptr, size) \ +    cs_ptr = (ptr) = (uint32_t*)malloc((size) * sizeof(uint32_t)) + +#define BEGIN_CB(ptr, size) cs_ptr = (ptr) +#define END_CB +#define CB_USED_DW(x) + +#endif +  /**   * Storing pure DWORDs. @@ -103,13 +115,13 @@  #define OUT_CB(value) do { \      *cs_ptr = (value); \      cs_ptr++; \ -    CB_DEBUG(cs_count--;) \ +    CB_USED_DW(1); \  } while (0)  #define OUT_CB_TABLE(values, count) do { \      memcpy(cs_ptr, values, count * sizeof(uint32_t)); \      cs_ptr += count; \ -    CB_DEBUG(cs_count -= count;) \ +    CB_USED_DW(count); \  } while (0)  #define OUT_CB_32F(value) \ diff --git a/src/gallium/drivers/r300/r300_context.c b/src/gallium/drivers/r300/r300_context.c index c6e03050fc..675877733c 100644 --- a/src/gallium/drivers/r300/r300_context.c +++ b/src/gallium/drivers/r300/r300_context.c @@ -549,13 +549,13 @@ void r300_finish(struct r300_context *r300)          for (i = 0; i < fb->nr_cbufs; i++) {              if (fb->cbufs[i]->texture) {                  r300->rws->buffer_wait(r300->rws, -                    r300_texture(fb->cbufs[i]->texture)->buffer); +                    r300_texture(fb->cbufs[i]->texture)->buf);                  return;              }          }          if (fb->zsbuf && fb->zsbuf->texture) {              r300->rws->buffer_wait(r300->rws, -                r300_texture(fb->zsbuf->texture)->buffer); +                r300_texture(fb->zsbuf->texture)->buf);          }      }  } diff --git a/src/gallium/drivers/r300/r300_context.h b/src/gallium/drivers/r300/r300_context.h index 316af64e6d..a9ce7cca58 100644 --- a/src/gallium/drivers/r300/r300_context.h +++ b/src/gallium/drivers/r300/r300_context.h @@ -273,8 +273,8 @@ struct r300_query {      boolean begin_emitted;      /* The buffer where query results are stored. */ -    struct r300_winsys_buffer *buffer; -    struct r300_winsys_cs_buffer *cs_buffer; +    struct r300_winsys_buffer *buf; +    struct r300_winsys_cs_buffer *cs_buf;      /* The size of the buffer. */      unsigned buffer_size;      /* The domain of the buffer. */ @@ -305,8 +305,8 @@ struct r300_surface {      struct pipe_surface base;      /* Winsys buffer backing the texture. */ -    struct r300_winsys_buffer *buffer; -    struct r300_winsys_cs_buffer *cs_buffer; +    struct r300_winsys_buffer *buf; +    struct r300_winsys_cs_buffer *cs_buf;      enum r300_buffer_domain domain; @@ -394,8 +394,8 @@ struct r300_texture {      enum r300_buffer_domain domain;      /* Pipe buffer backing this texture. */ -    struct r300_winsys_buffer *buffer; -    struct r300_winsys_cs_buffer *cs_buffer; +    struct r300_winsys_buffer *buf; +    struct r300_winsys_cs_buffer *cs_buf;      /* Registers carrying texture format data. */      /* Only format-independent bits should be filled in. */ diff --git a/src/gallium/drivers/r300/r300_cs.h b/src/gallium/drivers/r300/r300_cs.h index 6726f100e1..2e52dfa43c 100644 --- a/src/gallium/drivers/r300/r300_cs.h +++ b/src/gallium/drivers/r300/r300_cs.h @@ -35,12 +35,6 @@   * that they neatly hide away, and don't have the cost of function setup,so   * we're going to use them. */ -#ifdef DEBUG -#define CS_DEBUG(x) x -#else -#define CS_DEBUG(x) -#endif -  /**   * Command submission setup.   */ @@ -50,22 +44,29 @@      struct r300_winsys_screen *cs_winsys = (context)->rws; \      int cs_count = 0; (void) cs_count; (void) cs_winsys; +#ifdef DEBUG +  #define BEGIN_CS(size) do { \      assert(size <= (R300_MAX_CMDBUF_DWORDS - cs_copy->cdw)); \ -    CS_DEBUG(cs_count = size;) \ +    cs_count = size; \  } while (0) -#ifdef DEBUG  #define END_CS do { \      if (cs_count != 0) \          debug_printf("r300: Warning: cs_count off by %d at (%s, %s:%i)\n", \                       cs_count, __FUNCTION__, __FILE__, __LINE__); \      cs_count = 0; \  } while (0) + +#define CS_USED_DW(x) cs_count -= (x) +  #else + +#define BEGIN_CS(size)  #define END_CS -#endif +#define CS_USED_DW(x) +#endif  /**   * Writing pure DWORDs. @@ -73,7 +74,7 @@  #define OUT_CS(value) do { \      cs_copy->buf[cs_copy->cdw++] = (value); \ -    CS_DEBUG(cs_count--;) \ +    CS_USED_DW(1); \  } while (0)  #define OUT_CS_32F(value) \ @@ -98,7 +99,7 @@  #define OUT_CS_TABLE(values, count) do { \      memcpy(cs_copy->buf + cs_copy->cdw, values, count * 4); \      cs_copy->cdw += count; \ -    CS_DEBUG(cs_count -= count;) \ +    CS_USED_DW(count); \  } while (0) @@ -106,27 +107,11 @@   * Writing relocations.   */ -#define OUT_CS_RELOC(bo, offset) do { \ -    assert(bo); \ -    OUT_CS(offset); \ -    cs_winsys->cs_write_reloc(cs_copy, bo); \ -    CS_DEBUG(cs_count -= 2;) \ -} while (0) - -#define OUT_CS_BUF_RELOC(bo, offset) do { \ -    assert(bo); \ -    OUT_CS_RELOC(r300_buffer(bo)->cs_buf, offset); \ -} while (0) - -#define OUT_CS_TEX_RELOC(tex, offset) do { \ -    assert(tex); \ -    OUT_CS_RELOC(tex->cs_buffer, offset); \ -} while (0) - -#define OUT_CS_BUF_RELOC_NO_OFFSET(bo) do { \ -    assert(bo); \ -    cs_winsys->cs_write_reloc(cs_copy, r300_buffer(bo)->cs_buf); \ -    CS_DEBUG(cs_count -= 2;) \ +#define OUT_CS_RELOC(r) do { \ +    assert((r)); \ +    assert((r)->cs_buf); \ +    cs_winsys->cs_write_reloc(cs_copy, (r)->cs_buf); \ +    CS_USED_DW(2); \  } while (0) @@ -135,7 +120,7 @@   */  #define WRITE_CS_TABLE(values, count) do { \ -    CS_DEBUG(assert(cs_count == 0);) \ +    assert(cs_count == 0); \      memcpy(cs_copy->buf + cs_copy->cdw, (values), (count) * 4); \      cs_copy->cdw += (count); \  } while (0) diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c index 60234497c9..a32c171460 100644 --- a/src/gallium/drivers/r300/r300_emit.c +++ b/src/gallium/drivers/r300/r300_emit.c @@ -352,11 +352,11 @@ void r300_emit_aa_state(struct r300_context *r300, unsigned size, void *state)      OUT_CS_REG(R300_GB_AA_CONFIG, aa->aa_config);      if (aa->dest) { -        OUT_CS_REG_SEQ(R300_RB3D_AARESOLVE_OFFSET, 1); -        OUT_CS_RELOC(aa->dest->cs_buffer, aa->dest->offset); +        OUT_CS_REG(R300_RB3D_AARESOLVE_OFFSET, aa->dest->offset); +        OUT_CS_RELOC(aa->dest); -        OUT_CS_REG_SEQ(R300_RB3D_AARESOLVE_PITCH, 1); -        OUT_CS_RELOC(aa->dest->cs_buffer, aa->dest->pitch); +        OUT_CS_REG(R300_RB3D_AARESOLVE_PITCH, aa->dest->pitch); +        OUT_CS_RELOC(aa->dest);      }      OUT_CS_REG(R300_RB3D_AARESOLVE_CTL, aa->aaresolve_ctl); @@ -391,11 +391,11 @@ void r300_emit_fb_state(struct r300_context* r300, unsigned size, void* state)      for (i = 0; i < fb->nr_cbufs; i++) {          surf = r300_surface(fb->cbufs[i]); -        OUT_CS_REG_SEQ(R300_RB3D_COLOROFFSET0 + (4 * i), 1); -        OUT_CS_RELOC(surf->cs_buffer, surf->offset); +        OUT_CS_REG(R300_RB3D_COLOROFFSET0 + (4 * i), surf->offset); +        OUT_CS_RELOC(surf); -        OUT_CS_REG_SEQ(R300_RB3D_COLORPITCH0 + (4 * i), 1); -        OUT_CS_RELOC(surf->cs_buffer, surf->pitch); +        OUT_CS_REG(R300_RB3D_COLORPITCH0 + (4 * i), surf->pitch); +        OUT_CS_RELOC(surf);      }      /* Set up the ZB part of the CBZB clear. */ @@ -404,11 +404,11 @@ void r300_emit_fb_state(struct r300_context* r300, unsigned size, void* state)          OUT_CS_REG(R300_ZB_FORMAT, surf->cbzb_format); -        OUT_CS_REG_SEQ(R300_ZB_DEPTHOFFSET, 1); -        OUT_CS_RELOC(surf->cs_buffer, surf->cbzb_midpoint_offset); +        OUT_CS_REG(R300_ZB_DEPTHOFFSET, surf->cbzb_midpoint_offset); +        OUT_CS_RELOC(surf); -        OUT_CS_REG_SEQ(R300_ZB_DEPTHPITCH, 1); -        OUT_CS_RELOC(surf->cs_buffer, surf->cbzb_pitch); +        OUT_CS_REG(R300_ZB_DEPTHPITCH, surf->cbzb_pitch); +        OUT_CS_RELOC(surf);          DBG(r300, DBG_CBZB,              "CBZB clearing cbuf %08x %08x\n", surf->cbzb_format, @@ -420,11 +420,11 @@ void r300_emit_fb_state(struct r300_context* r300, unsigned size, void* state)          OUT_CS_REG(R300_ZB_FORMAT, surf->format); -        OUT_CS_REG_SEQ(R300_ZB_DEPTHOFFSET, 1); -        OUT_CS_RELOC(surf->cs_buffer, surf->offset); +        OUT_CS_REG(R300_ZB_DEPTHOFFSET, surf->offset); +        OUT_CS_RELOC(surf); -        OUT_CS_REG_SEQ(R300_ZB_DEPTHPITCH, 1); -        OUT_CS_RELOC(surf->cs_buffer, surf->pitch); +        OUT_CS_REG(R300_ZB_DEPTHPITCH, surf->pitch); +        OUT_CS_RELOC(surf);          if (can_hyperz) {              uint32_t surf_pitch; @@ -568,7 +568,6 @@ static void r300_emit_query_end_frag_pipes(struct r300_context *r300,                                             struct r300_query *query)  {      struct r300_capabilities* caps = &r300->screen->caps; -    struct r300_winsys_cs_buffer *buf = r300->query_current->cs_buffer;      CS_LOCALS(r300);      assert(caps->num_frag_pipes); @@ -586,25 +585,25 @@ static void r300_emit_query_end_frag_pipes(struct r300_context *r300,          case 4:              /* pipe 3 only */              OUT_CS_REG(R300_SU_REG_DEST, 1 << 3); -            OUT_CS_REG_SEQ(R300_ZB_ZPASS_ADDR, 1); -            OUT_CS_RELOC(buf, (query->num_results + 3) * 4); +            OUT_CS_REG(R300_ZB_ZPASS_ADDR, (query->num_results + 3) * 4); +            OUT_CS_RELOC(r300->query_current);          case 3:              /* pipe 2 only */              OUT_CS_REG(R300_SU_REG_DEST, 1 << 2); -            OUT_CS_REG_SEQ(R300_ZB_ZPASS_ADDR, 1); -            OUT_CS_RELOC(buf, (query->num_results + 2) * 4); +            OUT_CS_REG(R300_ZB_ZPASS_ADDR, (query->num_results + 2) * 4); +            OUT_CS_RELOC(r300->query_current);          case 2:              /* pipe 1 only */              /* As mentioned above, accomodate RV380 and older. */              OUT_CS_REG(R300_SU_REG_DEST,                      1 << (caps->high_second_pipe ? 3 : 1)); -            OUT_CS_REG_SEQ(R300_ZB_ZPASS_ADDR, 1); -            OUT_CS_RELOC(buf, (query->num_results + 1) * 4); +            OUT_CS_REG(R300_ZB_ZPASS_ADDR, (query->num_results + 1) * 4); +            OUT_CS_RELOC(r300->query_current);          case 1:              /* pipe 0 only */              OUT_CS_REG(R300_SU_REG_DEST, 1 << 0); -            OUT_CS_REG_SEQ(R300_ZB_ZPASS_ADDR, 1); -            OUT_CS_RELOC(buf, (query->num_results + 0) * 4); +            OUT_CS_REG(R300_ZB_ZPASS_ADDR, (query->num_results + 0) * 4); +            OUT_CS_RELOC(r300->query_current);              break;          default:              fprintf(stderr, "r300: Implementation error: Chipset reports %d" @@ -620,13 +619,12 @@ static void r300_emit_query_end_frag_pipes(struct r300_context *r300,  static void rv530_emit_query_end_single_z(struct r300_context *r300,                                            struct r300_query *query)  { -    struct r300_winsys_cs_buffer *buf = r300->query_current->cs_buffer;      CS_LOCALS(r300);      BEGIN_CS(8);      OUT_CS_REG(RV530_FG_ZBREG_DEST, RV530_FG_ZBREG_DEST_PIPE_SELECT_0); -    OUT_CS_REG_SEQ(R300_ZB_ZPASS_ADDR, 1); -    OUT_CS_RELOC(buf, query->num_results * 4); +    OUT_CS_REG(R300_ZB_ZPASS_ADDR, query->num_results * 4); +    OUT_CS_RELOC(r300->query_current);      OUT_CS_REG(RV530_FG_ZBREG_DEST, RV530_FG_ZBREG_DEST_PIPE_SELECT_ALL);      END_CS;  } @@ -634,16 +632,15 @@ static void rv530_emit_query_end_single_z(struct r300_context *r300,  static void rv530_emit_query_end_double_z(struct r300_context *r300,                                            struct r300_query *query)  { -    struct r300_winsys_cs_buffer *buf = r300->query_current->cs_buffer;      CS_LOCALS(r300);      BEGIN_CS(14);      OUT_CS_REG(RV530_FG_ZBREG_DEST, RV530_FG_ZBREG_DEST_PIPE_SELECT_0); -    OUT_CS_REG_SEQ(R300_ZB_ZPASS_ADDR, 1); -    OUT_CS_RELOC(buf, (query->num_results + 0) * 4); +    OUT_CS_REG(R300_ZB_ZPASS_ADDR, (query->num_results + 0) * 4); +    OUT_CS_RELOC(r300->query_current);      OUT_CS_REG(RV530_FG_ZBREG_DEST, RV530_FG_ZBREG_DEST_PIPE_SELECT_1); -    OUT_CS_REG_SEQ(R300_ZB_ZPASS_ADDR, 1); -    OUT_CS_RELOC(buf, (query->num_results + 1) * 4); +    OUT_CS_REG(R300_ZB_ZPASS_ADDR, (query->num_results + 1) * 4); +    OUT_CS_RELOC(r300->query_current);      OUT_CS_REG(RV530_FG_ZBREG_DEST, RV530_FG_ZBREG_DEST_PIPE_SELECT_ALL);      END_CS;  } @@ -803,8 +800,8 @@ void r300_emit_textures_state(struct r300_context *r300,              OUT_CS_REG(R300_TX_FORMAT1_0 + (i * 4), texstate->format.format1);              OUT_CS_REG(R300_TX_FORMAT2_0 + (i * 4), texstate->format.format2); -            OUT_CS_REG_SEQ(R300_TX_OFFSET_0 + (i * 4), 1); -            OUT_CS_TEX_RELOC(tex, texstate->format.tile_config); +            OUT_CS_REG(R300_TX_OFFSET_0 + (i * 4), texstate->format.tile_config); +            OUT_CS_RELOC(tex);          }      }      END_CS; @@ -892,7 +889,7 @@ void r300_emit_vertex_arrays(struct r300_context* r300, int offset, boolean inde      for (i = 0; i < vertex_array_count; i++) {          buf = r300_buffer(valid_vbuf[velem[i].vertex_buffer_index]); -        OUT_CS_BUF_RELOC_NO_OFFSET(&buf->b.b.b); +        OUT_CS_RELOC(buf);      }      END_CS;  } @@ -917,7 +914,8 @@ void r300_emit_vertex_arrays_swtcl(struct r300_context *r300, boolean indexed)      OUT_CS(r300->vertex_info.size |              (r300->vertex_info.size << 8));      OUT_CS(r300->draw_vbo_offset); -    OUT_CS_BUF_RELOC(r300->vbo, 0); +    OUT_CS(0); +    OUT_CS_RELOC(r300_buffer(r300->vbo));      END_CS;  } @@ -1194,15 +1192,15 @@ validate:          /* Color buffers... */          for (i = 0; i < fb->nr_cbufs; i++) {              tex = r300_texture(fb->cbufs[i]->texture); -            assert(tex && tex->buffer && "cbuf is marked, but NULL!"); -            r300->rws->cs_add_reloc(r300->cs, tex->cs_buffer, 0, +            assert(tex && tex->buf && "cbuf is marked, but NULL!"); +            r300->rws->cs_add_reloc(r300->cs, tex->cs_buf, 0,                                      r300_surface(fb->cbufs[i])->domain);          }          /* ...depth buffer... */          if (fb->zsbuf) {              tex = r300_texture(fb->zsbuf->texture); -            assert(tex && tex->buffer && "zsbuf is marked, but NULL!"); -            r300->rws->cs_add_reloc(r300->cs, tex->cs_buffer, 0, +            assert(tex && tex->buf && "zsbuf is marked, but NULL!"); +            r300->rws->cs_add_reloc(r300->cs, tex->cs_buf, 0,                                      r300_surface(fb->zsbuf)->domain);          }      } @@ -1214,12 +1212,12 @@ validate:              }              tex = r300_texture(texstate->sampler_views[i]->base.texture); -            r300->rws->cs_add_reloc(r300->cs, tex->cs_buffer, tex->domain, 0); +            r300->rws->cs_add_reloc(r300->cs, tex->cs_buf, tex->domain, 0);          }      }      /* ...occlusion query buffer... */      if (r300->query_current) -        r300->rws->cs_add_reloc(r300->cs, r300->query_current->cs_buffer, +        r300->rws->cs_add_reloc(r300->cs, r300->query_current->cs_buf,                                  0, r300->query_current->domain);      /* ...vertex buffer for SWTCL path... */      if (r300->vbo) diff --git a/src/gallium/drivers/r300/r300_query.c b/src/gallium/drivers/r300/r300_query.c index 6223e04321..62dee8db59 100644 --- a/src/gallium/drivers/r300/r300_query.c +++ b/src/gallium/drivers/r300/r300_query.c @@ -57,10 +57,10 @@ static struct pipe_query *r300_create_query(struct pipe_context *pipe,      insert_at_tail(&r300->query_list, q);      /* Open up the occlusion query buffer. */ -    q->buffer = r300->rws->buffer_create(r300->rws, q->buffer_size, 4096, +    q->buf = r300->rws->buffer_create(r300->rws, q->buffer_size, 4096,                                           PIPE_BIND_CUSTOM, PIPE_USAGE_STREAM,                                           q->domain); -    q->cs_buffer = r300->rws->buffer_get_cs_handle(r300->rws, q->buffer); +    q->cs_buf = r300->rws->buffer_get_cs_handle(r300->rws, q->buf);      return (struct pipe_query*)q;  } @@ -71,7 +71,7 @@ static void r300_destroy_query(struct pipe_context* pipe,      struct r300_context *r300 = r300_context(pipe);      struct r300_query* q = r300_query(query); -    r300->rws->buffer_reference(r300->rws, &q->buffer, NULL); +    r300->rws->buffer_reference(r300->rws, &q->buf, NULL);      remove_from_list(q);      FREE(query);  } @@ -137,7 +137,7 @@ static boolean r300_get_query_result(struct pipe_context* pipe,      flags = PIPE_TRANSFER_READ | (!wait ? PIPE_TRANSFER_DONTBLOCK : 0); -    map = r300->rws->buffer_map(r300->rws, q->buffer, r300->cs, flags); +    map = r300->rws->buffer_map(r300->rws, q->buf, r300->cs, flags);      if (!map)          return FALSE; @@ -148,7 +148,7 @@ static boolean r300_get_query_result(struct pipe_context* pipe,          map++;      } -    r300->rws->buffer_unmap(r300->rws, q->buffer); +    r300->rws->buffer_unmap(r300->rws, q->buf);      *result = temp;      return TRUE; diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c index 2b4aa9f438..0df3f9a0ba 100644 --- a/src/gallium/drivers/r300/r300_render.c +++ b/src/gallium/drivers/r300/r300_render.c @@ -531,17 +531,12 @@ static void r300_emit_draw_elements(struct r300_context *r300,                 (alt_num_verts ? R500_VAP_VF_CNTL__USE_ALT_NUM_VERTS : 0));      } -    /* INDX_BUFFER is a truly special packet3. -     * Unlike most other packet3, where the offset is after the count, -     * the order is reversed, so the relocation ends up carrying the -     * size of the indexbuf instead of the offset. -     */      OUT_CS_PKT3(R300_PACKET3_INDX_BUFFER, 2);      OUT_CS(R300_INDX_BUFFER_ONE_REG_WR | (R300_VAP_PORT_IDX0 >> 2) |             (0 << R300_INDX_BUFFER_SKIP_SHIFT));      OUT_CS(offset_dwords << 2); -    OUT_CS_BUF_RELOC(indexBuffer, count_dwords); - +    OUT_CS(count_dwords); +    OUT_CS_RELOC(r300_buffer(indexBuffer));      END_CS;  } diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c index aa4e05d4be..7a6c2f512d 100644 --- a/src/gallium/drivers/r300/r300_state.c +++ b/src/gallium/drivers/r300/r300_state.c @@ -625,10 +625,10 @@ static void r300_tex_set_tiling_flags(struct r300_context *r300,          /* Tiling determines how DRM treats the buffer data.           * We must flush CS when changing it if the buffer is referenced. */          if (r300->rws->cs_is_buffer_referenced(r300->cs, -                                               tex->cs_buffer, R300_REF_CS)) +                                               tex->cs_buf, R300_REF_CS))              r300->context.flush(&r300->context, 0, NULL); -        r300->rws->buffer_set_tiling(r300->rws, tex->buffer, +        r300->rws->buffer_set_tiling(r300->rws, tex->buf,                  tex->desc.microtile, tex->desc.macrotile[level],                  tex->desc.stride_in_bytes[0]); diff --git a/src/gallium/drivers/r300/r300_texture.c b/src/gallium/drivers/r300/r300_texture.c index 059c194e53..c6809756e2 100644 --- a/src/gallium/drivers/r300/r300_texture.c +++ b/src/gallium/drivers/r300/r300_texture.c @@ -700,7 +700,7 @@ static unsigned r300_texture_is_referenced(struct pipe_context *context,      struct r300_texture *rtex = (struct r300_texture *)texture;      if (r300->rws->cs_is_buffer_referenced(r300->cs, -                                           rtex->cs_buffer, R300_REF_CS)) +                                           rtex->cs_buf, R300_REF_CS))          return PIPE_REFERENCED_FOR_READ | PIPE_REFERENCED_FOR_WRITE;      return PIPE_UNREFERENCED; @@ -713,7 +713,7 @@ static void r300_texture_destroy(struct pipe_screen *screen,      struct r300_winsys_screen *rws = (struct r300_winsys_screen *)texture->screen->winsys;      int i; -    rws->buffer_reference(rws, &tex->buffer, NULL); +    rws->buffer_reference(rws, &tex->buf, NULL);      for (i = 0; i < R300_MAX_TEXTURE_LEVELS; i++) {          if (tex->hiz_mem[i])              u_mmFreeMem(tex->hiz_mem[i]); @@ -733,7 +733,7 @@ static boolean r300_texture_get_handle(struct pipe_screen* screen,          return FALSE;      } -    return rws->buffer_get_handle(rws, tex->buffer, +    return rws->buffer_get_handle(rws, tex->buf,                                    tex->desc.stride_in_bytes[0], whandle);  } @@ -786,22 +786,22 @@ r300_texture_create_object(struct r300_screen *rscreen,      tex->domain = base->flags & R300_RESOURCE_FLAG_TRANSFER ?                    R300_DOMAIN_GTT :                    R300_DOMAIN_VRAM | R300_DOMAIN_GTT; -    tex->buffer = buffer; +    tex->buf = buffer;      /* Create the backing buffer if needed. */ -    if (!tex->buffer) { -        tex->buffer = rws->buffer_create(rws, tex->desc.size_in_bytes, 2048, +    if (!tex->buf) { +        tex->buf = rws->buffer_create(rws, tex->desc.size_in_bytes, 2048,                                           base->bind, base->usage, tex->domain); -        if (!tex->buffer) { +        if (!tex->buf) {              FREE(tex);              return NULL;          }      } -    tex->cs_buffer = rws->buffer_get_cs_handle(rws, tex->buffer); +    tex->cs_buf = rws->buffer_get_cs_handle(rws, tex->buf); -    rws->buffer_set_tiling(rws, tex->buffer, +    rws->buffer_set_tiling(rws, tex->buf,              tex->desc.microtile, tex->desc.macrotile[0],              tex->desc.stride_in_bytes[0]); @@ -899,8 +899,8 @@ struct pipe_surface* r300_create_surface(struct pipe_context * ctx,          surface->base.u.tex.first_layer = surf_tmpl->u.tex.first_layer;          surface->base.u.tex.last_layer = surf_tmpl->u.tex.last_layer; -        surface->buffer = tex->buffer; -        surface->cs_buffer = tex->cs_buffer; +        surface->buf = tex->buf; +        surface->cs_buf = tex->cs_buf;          /* Prefer VRAM if there are multiple domains to choose from. */          surface->domain = tex->domain; diff --git a/src/gallium/drivers/r300/r300_transfer.c b/src/gallium/drivers/r300/r300_transfer.c index ae93fab554..314513561b 100644 --- a/src/gallium/drivers/r300/r300_transfer.c +++ b/src/gallium/drivers/r300/r300_transfer.c @@ -90,13 +90,13 @@ r300_texture_get_transfer(struct pipe_context *ctx,      referenced_cs =          r300->rws->cs_is_buffer_referenced(r300->cs, -                                           tex->cs_buffer, R300_REF_CS); +                                           tex->cs_buf, R300_REF_CS);      if (referenced_cs) {          referenced_hw = TRUE;      } else {          referenced_hw =              r300->rws->cs_is_buffer_referenced(r300->cs, -                                               tex->cs_buffer, R300_REF_HW); +                                               tex->cs_buf, R300_REF_HW);      }      blittable = ctx->screen->is_format_supported( @@ -235,12 +235,12 @@ void* r300_texture_transfer_map(struct pipe_context *ctx,          /* The detiled texture is of the same size as the region being mapped           * (no offset needed). */          return rws->buffer_map(rws, -                               r300transfer->linear_texture->buffer, +                               r300transfer->linear_texture->buf,                                 r300->cs,                                 transfer->usage);      } else {          /* Tiling is disabled. */ -        map = rws->buffer_map(rws, tex->buffer, r300->cs, +        map = rws->buffer_map(rws, tex->buf, r300->cs,                                transfer->usage);          if (!map) { @@ -261,8 +261,8 @@ void r300_texture_transfer_unmap(struct pipe_context *ctx,      struct r300_texture *tex = r300_texture(transfer->resource);      if (r300transfer->linear_texture) { -        rws->buffer_unmap(rws, r300transfer->linear_texture->buffer); +        rws->buffer_unmap(rws, r300transfer->linear_texture->buf);      } else { -        rws->buffer_unmap(rws, tex->buffer); +        rws->buffer_unmap(rws, tex->buf);      }  } | 
