projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
llvmpipe: wait for queries being finished when asked for it or before deletion
[mesa.git]
/
src
/
gallium
/
drivers
/
svga
/
svga_draw_arrays.c
diff --git
a/src/gallium/drivers/svga/svga_draw_arrays.c
b/src/gallium/drivers/svga/svga_draw_arrays.c
index 75492dffca2882765b2028a4c98c06136f7a4046..da33fae62f179269588c7faac228a06662dd858f 100644
(file)
--- a/
src/gallium/drivers/svga/svga_draw_arrays.c
+++ b/
src/gallium/drivers/svga/svga_draw_arrays.c
@@
-25,8
+25,7
@@
#include "svga_cmd.h"
#include "svga_cmd.h"
-#include "pipe/p_inlines.h"
-#include "util/u_prim.h"
+#include "util/u_inlines.h"
#include "indices/u_indices.h"
#include "svga_hw_reg.h"
#include "indices/u_indices.h"
#include "svga_hw_reg.h"
@@
-44,40
+43,40
@@
static enum pipe_error generate_indices( struct svga_hwtnl *hwtnl,
unsigned nr,
unsigned index_size,
u_generate_func generate,
unsigned nr,
unsigned index_size,
u_generate_func generate,
- struct pipe_
buffer
**out_buf )
+ struct pipe_
resource
**out_buf )
{
{
- struct pipe_screen *screen = hwtnl->svga->pipe.screen;
+ struct pipe_context *pipe = &hwtnl->svga->pipe;
+ struct pipe_transfer *transfer;
unsigned size = index_size * nr;
unsigned size = index_size * nr;
- struct pipe_
buffer
*dst = NULL;
+ struct pipe_
resource
*dst = NULL;
void *dst_map = NULL;
void *dst_map = NULL;
- dst = screen->buffer_create( screen, 32,
- PIPE_BUFFER_USAGE_INDEX |
- PIPE_BUFFER_USAGE_CPU_WRITE |
- PIPE_BUFFER_USAGE_GPU_READ,
- size );
+ dst = pipe_buffer_create( pipe->screen,
+ PIPE_BIND_INDEX_BUFFER,
+ size );
if (dst == NULL)
goto fail;
if (dst == NULL)
goto fail;
- dst_map = pipe_buffer_map( screen, dst, PIPE_BUFFER_USAGE_CPU_WRITE );
+ dst_map = pipe_buffer_map( pipe, dst, PIPE_TRANSFER_WRITE,
+ &transfer);
if (dst_map == NULL)
goto fail;
generate( nr,
dst_map );
if (dst_map == NULL)
goto fail;
generate( nr,
dst_map );
- pipe_buffer_unmap(
screen, dst
);
+ pipe_buffer_unmap(
pipe, dst, transfer
);
*out_buf = dst;
return PIPE_OK;
fail:
if (dst_map)
*out_buf = dst;
return PIPE_OK;
fail:
if (dst_map)
-
screen->buffer_unmap( screen, dst
);
+
pipe_buffer_unmap( pipe, dst, transfer
);
if (dst)
if (dst)
-
screen->buffer_destroy(
dst );
-
+
pipe->screen->resource_destroy( pipe->screen,
dst );
+
return PIPE_ERROR_OUT_OF_MEMORY;
}
return PIPE_ERROR_OUT_OF_MEMORY;
}
@@
-97,7
+96,7
@@
static enum pipe_error retrieve_or_generate_indices( struct svga_hwtnl *hwtnl,
unsigned gen_nr,
unsigned gen_size,
u_generate_func generate,
unsigned gen_nr,
unsigned gen_size,
u_generate_func generate,
- struct pipe_
buffer
**out_buf )
+ struct pipe_
resource
**out_buf )
{
enum pipe_error ret = PIPE_OK;
int i;
{
enum pipe_error ret = PIPE_OK;
int i;
@@
-108,7
+107,7
@@
static enum pipe_error retrieve_or_generate_indices( struct svga_hwtnl *hwtnl,
{
if (compare(hwtnl->index_cache[prim][i].gen_nr, gen_nr, gen_type))
{
{
if (compare(hwtnl->index_cache[prim][i].gen_nr, gen_nr, gen_type))
{
- pipe_
buffer
_reference( out_buf,
+ pipe_
resource
_reference( out_buf,
hwtnl->index_cache[prim][i].buffer );
if (DBG)
hwtnl->index_cache[prim][i].buffer );
if (DBG)
@@
-118,7
+117,7
@@
static enum pipe_error retrieve_or_generate_indices( struct svga_hwtnl *hwtnl,
}
else if (gen_type == U_GENERATE_REUSABLE)
{
}
else if (gen_type == U_GENERATE_REUSABLE)
{
- pipe_
buffer
_reference( &hwtnl->index_cache[prim][i].buffer,
+ pipe_
resource
_reference( &hwtnl->index_cache[prim][i].buffer,
NULL );
if (DBG)
NULL );
if (DBG)
@@
-150,7
+149,7
@@
static enum pipe_error retrieve_or_generate_indices( struct svga_hwtnl *hwtnl,
assert (smallest != IDX_CACHE_MAX);
assert (smallest != IDX_CACHE_MAX);
- pipe_
buffer
_reference( &hwtnl->index_cache[prim][smallest].buffer,
+ pipe_
resource
_reference( &hwtnl->index_cache[prim][smallest].buffer,
NULL );
if (DBG)
NULL );
if (DBG)
@@
-172,7
+171,7
@@
static enum pipe_error retrieve_or_generate_indices( struct svga_hwtnl *hwtnl,
hwtnl->index_cache[prim][i].generate = generate;
hwtnl->index_cache[prim][i].gen_nr = gen_nr;
hwtnl->index_cache[prim][i].generate = generate;
hwtnl->index_cache[prim][i].gen_nr = gen_nr;
- pipe_
buffer
_reference( &hwtnl->index_cache[prim][i].buffer,
+ pipe_
resource
_reference( &hwtnl->index_cache[prim][i].buffer,
*out_buf );
if (DBG)
*out_buf );
if (DBG)
@@
-260,7
+259,7
@@
svga_hwtnl_draw_arrays( struct svga_hwtnl *hwtnl,
return simple_draw_arrays( hwtnl, gen_prim, start, count );
}
else {
return simple_draw_arrays( hwtnl, gen_prim, start, count );
}
else {
- struct pipe_
buffer
*gen_buf = NULL;
+ struct pipe_
resource
*gen_buf = NULL;
/* Need to draw as indexed primitive.
* Potentially need to run the gen func to build an index buffer.
/* Need to draw as indexed primitive.
* Potentially need to run the gen func to build an index buffer.
@@
-278,18
+277,19
@@
svga_hwtnl_draw_arrays( struct svga_hwtnl *hwtnl,
ret = svga_hwtnl_simple_draw_range_elements( hwtnl,
gen_buf,
gen_size,
ret = svga_hwtnl_simple_draw_range_elements( hwtnl,
gen_buf,
gen_size,
+ start,
0,
count - 1,
gen_prim,
0,
0,
count - 1,
gen_prim,
0,
- gen_nr
,
- start );
+ gen_nr
);
+
if (ret)
goto done;
done:
if (gen_buf)
if (ret)
goto done;
done:
if (gen_buf)
- pipe_
buffer
_reference( &gen_buf, NULL );
+ pipe_
resource
_reference( &gen_buf, NULL );
return ret;
}
return ret;
}