~ubuntu-branches/ubuntu/precise/mesa/precise-updates

« back to all changes in this revision

Viewing changes to src/gallium/drivers/r300/r300_screen_buffer.c

  • Committer: Package Import Robot
  • Author(s): Robert Hooker
  • Date: 2012-02-02 12:05:48 UTC
  • mfrom: (1.7.1) (3.3.27 sid)
  • Revision ID: package-import@ubuntu.com-20120202120548-nvkma85jq0h4coix
Tags: 8.0~rc2-0ubuntu4
Drop drisearchdir handling, it is no longer needed with multiarch
and dri-alternates being removed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
38
38
                              unsigned count, uint8_t *ptr)
39
39
{
40
40
    unsigned index_offset;
41
 
    boolean flushed;
42
41
 
43
42
    *index_buffer = NULL;
44
43
 
46
45
                  0, count * index_size,
47
46
                  ptr + (*start * index_size),
48
47
                  &index_offset,
49
 
                  index_buffer, &flushed);
 
48
                  index_buffer);
50
49
 
51
50
    *start = index_offset / index_size;
52
51
}
107
106
    struct radeon_winsys *rws = r300screen->rws;
108
107
    struct r300_resource *rbuf = r300_resource(transfer->resource);
109
108
    uint8_t *map;
 
109
    enum pipe_transfer_usage usage;
110
110
 
111
111
    if (rbuf->b.user_ptr)
112
112
        return (uint8_t *) rbuf->b.user_ptr + transfer->box.x;
113
113
    if (rbuf->constant_buffer)
114
114
        return (uint8_t *) rbuf->constant_buffer + transfer->box.x;
115
115
 
116
 
    map = rws->buffer_map(rbuf->buf, r300->cs, transfer->usage);
 
116
    /* Buffers are never used for write, therefore mapping for read can be
 
117
     * unsynchronized. */
 
118
    usage = transfer->usage;
 
119
    if (!(usage & PIPE_TRANSFER_WRITE)) {
 
120
       usage |= PIPE_TRANSFER_UNSYNCHRONIZED;
 
121
    }
 
122
 
 
123
    map = rws->buffer_map(rbuf->buf, r300->cs, usage);
117
124
 
118
125
    if (map == NULL)
119
126
        return NULL;
154
161
    assert(rbuf->b.user_ptr == NULL);
155
162
 
156
163
    map = rws->buffer_map(rbuf->buf, r300->cs,
157
 
                          PIPE_TRANSFER_WRITE | PIPE_TRANSFER_DISCARD | usage);
 
164
                          PIPE_TRANSFER_WRITE | PIPE_TRANSFER_DISCARD_RANGE | usage);
158
165
 
159
166
    memcpy(map + box->x, data, box->width);
160
167
 
189
196
    rbuf->b.user_ptr = NULL;
190
197
    rbuf->domain = RADEON_DOMAIN_GTT;
191
198
    rbuf->buf = NULL;
192
 
    rbuf->buf_size = templ->width0;
193
199
    rbuf->constant_buffer = NULL;
194
200
 
195
201
    /* Alloc constant buffers in RAM. */
201
207
    rbuf->buf =
202
208
        r300screen->rws->buffer_create(r300screen->rws,
203
209
                                       rbuf->b.b.b.width0, alignment,
204
 
                                       rbuf->b.b.b.bind, rbuf->b.b.b.usage,
205
 
                                       rbuf->domain);
 
210
                                       rbuf->b.b.b.bind, rbuf->domain);
206
211
    if (!rbuf->buf) {
207
212
        util_slab_free(&r300screen->pool_buffers, rbuf);
208
213
        return NULL;
238
243
    rbuf->b.user_ptr = ptr;
239
244
    rbuf->domain = RADEON_DOMAIN_GTT;
240
245
    rbuf->buf = NULL;
241
 
    rbuf->buf_size = size;
242
246
    rbuf->constant_buffer = NULL;
243
247
    return &rbuf->b.b.b;
244
248
}