projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
util: Move gallium's PIPE_FORMAT utils to /util/format/
[mesa.git]
/
src
/
gallium
/
drivers
/
llvmpipe
/
lp_texture.c
diff --git
a/src/gallium/drivers/llvmpipe/lp_texture.c
b/src/gallium/drivers/llvmpipe/lp_texture.c
index 0d4c4efe0b972b7951a992ab8a76d6200362e064..0d5c4ac544d112aa54bcfa711d2fcd1508894f73 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_texture.c
+++ b/
src/gallium/drivers/llvmpipe/lp_texture.c
@@
-37,7
+37,7
@@
#include "util/u_inlines.h"
#include "util/u_cpu_detect.h"
#include "util/u_inlines.h"
#include "util/u_cpu_detect.h"
-#include "util/u_format.h"
+#include "util/
format/
u_format.h"
#include "util/u_math.h"
#include "util/u_memory.h"
#include "util/simple_list.h"
#include "util/u_math.h"
#include "util/u_memory.h"
#include "util/simple_list.h"
@@
-187,7
+187,7
@@
fail:
* Check the size of the texture specified by 'res'.
* \return TRUE if OK, FALSE if too large.
*/
* Check the size of the texture specified by 'res'.
* \return TRUE if OK, FALSE if too large.
*/
-static bool
ean
+static bool
llvmpipe_can_create_resource(struct pipe_screen *screen,
const struct pipe_resource *res)
{
llvmpipe_can_create_resource(struct pipe_screen *screen,
const struct pipe_resource *res)
{
@@
-303,6
+303,8
@@
llvmpipe_resource_create_front(struct pipe_screen *_screen,
FREE(lpr);
return NULL;
}
FREE(lpr);
return NULL;
}
+
+
static struct pipe_resource *
llvmpipe_resource_create(struct pipe_screen *_screen,
const struct pipe_resource *templat)
static struct pipe_resource *
llvmpipe_resource_create(struct pipe_screen *_screen,
const struct pipe_resource *templat)
@@
-310,6
+312,7
@@
llvmpipe_resource_create(struct pipe_screen *_screen,
return llvmpipe_resource_create_front(_screen, templat, NULL);
}
return llvmpipe_resource_create_front(_screen, templat, NULL);
}
+
static void
llvmpipe_resource_destroy(struct pipe_screen *pscreen,
struct pipe_resource *pt)
static void
llvmpipe_resource_destroy(struct pipe_screen *pscreen,
struct pipe_resource *pt)
@@
-483,8
+486,9
@@
no_lpr:
}
}
-static bool
ean
+static bool
llvmpipe_resource_get_handle(struct pipe_screen *screen,
llvmpipe_resource_get_handle(struct pipe_screen *screen,
+ struct pipe_context *ctx,
struct pipe_resource *pt,
struct winsys_handle *whandle,
unsigned usage)
struct pipe_resource *pt,
struct winsys_handle *whandle,
unsigned usage)
@@
-494,7
+498,7
@@
llvmpipe_resource_get_handle(struct pipe_screen *screen,
assert(lpr->dt);
if (!lpr->dt)
assert(lpr->dt);
if (!lpr->dt)
- return
FALSE
;
+ return
false
;
return winsys->displaytarget_get_handle(winsys, lpr->dt, whandle);
}
return winsys->displaytarget_get_handle(winsys, lpr->dt, whandle);
}
@@
-642,7
+646,9
@@
llvmpipe_is_resource_referenced( struct pipe_context *pipe,
struct llvmpipe_context *llvmpipe = llvmpipe_context( pipe );
if (!(presource->bind & (PIPE_BIND_DEPTH_STENCIL |
PIPE_BIND_RENDER_TARGET |
struct llvmpipe_context *llvmpipe = llvmpipe_context( pipe );
if (!(presource->bind & (PIPE_BIND_DEPTH_STENCIL |
PIPE_BIND_RENDER_TARGET |
- PIPE_BIND_SAMPLER_VIEW)))
+ PIPE_BIND_SAMPLER_VIEW |
+ PIPE_BIND_SHADER_BUFFER |
+ PIPE_BIND_SHADER_IMAGE)))
return LP_UNREFERENCED;
return lp_setup_is_resource_referenced(llvmpipe->setup, presource);
return LP_UNREFERENCED;
return lp_setup_is_resource_referenced(llvmpipe->setup, presource);
@@
-666,7
+672,7
@@
llvmpipe_get_format_alignment( enum pipe_format format )
bytes = size / 8;
bytes = size / 8;
- if (!util_is_power_of_two(bytes)) {
+ if (!util_is_power_of_two
_or_zero
(bytes)) {
bytes /= desc->nr_channels;
}
bytes /= desc->nr_channels;
}
@@
-762,6
+768,13
@@
llvmpipe_resource_size(const struct pipe_resource *resource)
return size;
}
return size;
}
+static void
+llvmpipe_memory_barrier(struct pipe_context *pipe,
+ unsigned flags)
+{
+ /* this may be an overly large hammer for this nut. */
+ llvmpipe_finish(pipe, "barrier");
+}
#ifdef DEBUG
void
#ifdef DEBUG
void
@@
-818,4
+831,6
@@
llvmpipe_init_context_resource_funcs(struct pipe_context *pipe)
pipe->transfer_flush_region = u_default_transfer_flush_region;
pipe->buffer_subdata = u_default_buffer_subdata;
pipe->texture_subdata = u_default_texture_subdata;
pipe->transfer_flush_region = u_default_transfer_flush_region;
pipe->buffer_subdata = u_default_buffer_subdata;
pipe->texture_subdata = u_default_texture_subdata;
+
+ pipe->memory_barrier = llvmpipe_memory_barrier;
}
}