projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'mesa_7_6_branch' of git+ssh://agd5f@git.freedesktop.org/git/mesa/mesa
[mesa.git]
/
src
/
gallium
/
winsys
/
drm
/
radeon
/
core
/
radeon_buffer.c
diff --git
a/src/gallium/winsys/drm/radeon/core/radeon_buffer.c
b/src/gallium/winsys/drm/radeon/core/radeon_buffer.c
index 684a487f24243fcbd644011e6684fcf80acbdc46..7bf23cba236520c0749b511e487de47b72ce86d1 100644
(file)
--- a/
src/gallium/winsys/drm/radeon/core/radeon_buffer.c
+++ b/
src/gallium/winsys/drm/radeon/core/radeon_buffer.c
@@
-32,6
+32,8
@@
#include "radeon_buffer.h"
#include "radeon_buffer.h"
+#include "radeon_bo_gem.h"
+
static const char *radeon_get_name(struct pipe_winsys *ws)
{
return "Radeon/GEM+KMS";
static const char *radeon_get_name(struct pipe_winsys *ws)
{
return "Radeon/GEM+KMS";
@@
-72,6
+74,7
@@
static struct pipe_buffer *radeon_buffer_create(struct pipe_winsys *ws,
alignment, domain, 0);
if (radeon_buffer->bo == NULL) {
FREE(radeon_buffer);
alignment, domain, 0);
if (radeon_buffer->bo == NULL) {
FREE(radeon_buffer);
+ return NULL;
}
return &radeon_buffer->base;
}
}
return &radeon_buffer->base;
}
@@
-98,6
+101,7
@@
static struct pipe_buffer *radeon_surface_buffer_create(struct pipe_winsys *ws,
unsigned height,
enum pipe_format format,
unsigned usage,
unsigned height,
enum pipe_format format,
unsigned usage,
+ unsigned tex_usage,
unsigned *stride)
{
struct pipe_format_block block;
unsigned *stride)
{
struct pipe_format_block block;
@@
-134,17
+138,19
@@
static void *radeon_buffer_map(struct pipe_winsys *ws,
int write = 0;
if (flags & PIPE_BUFFER_USAGE_DONTBLOCK) {
int write = 0;
if (flags & PIPE_BUFFER_USAGE_DONTBLOCK) {
- /* XXX Remove this when radeon_bo_map supports DONTBLOCK */
- return NULL;
+ uint32_t domain;
+
+ if (radeon_bo_is_busy(radeon_buffer->bo, &domain))
+ return NULL;
}
if (flags & PIPE_BUFFER_USAGE_CPU_WRITE) {
write = 1;
}
}
if (flags & PIPE_BUFFER_USAGE_CPU_WRITE) {
write = 1;
}
- radeon_bo_wait(radeon_buffer->bo);
-
- if (radeon_bo_map(radeon_buffer->bo, write))
+ if (radeon_bo_map(radeon_buffer->bo, write)) {
return NULL;
return NULL;
+ }
+
return radeon_buffer->bo->ptr;
}
return radeon_buffer->bo->ptr;
}
@@
-187,7
+193,6
@@
static void radeon_flush_frontbuffer(struct pipe_winsys *pipe_winsys,
struct radeon_winsys* radeon_pipe_winsys(int fd)
{
struct radeon_winsys* radeon_ws;
struct radeon_winsys* radeon_pipe_winsys(int fd)
{
struct radeon_winsys* radeon_ws;
- struct radeon_bo_manager* bom;
radeon_ws = CALLOC_STRUCT(radeon_winsys);
if (radeon_ws == NULL) {
radeon_ws = CALLOC_STRUCT(radeon_winsys);
if (radeon_ws == NULL) {