mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 11:40:10 +01:00
mesa/st: mark internal texture map calls as UNSYNCHRONIZED
these are new textures with empty contents which are immediately unmapped after a strided memcpy, so there's no reason to force the driver (or tc) to sync Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36634>
This commit is contained in:
parent
fe499db5b5
commit
25b97a3a96
6 changed files with 15 additions and 14 deletions
|
|
@ -55,7 +55,7 @@ load_color_map_texture(struct gl_context *ctx, struct pipe_resource *pt)
|
||||||
uint i, j;
|
uint i, j;
|
||||||
|
|
||||||
dest = (uint *) pipe_texture_map(pipe,
|
dest = (uint *) pipe_texture_map(pipe,
|
||||||
pt, 0, 0, PIPE_MAP_WRITE,
|
pt, 0, 0, PIPE_MAP_WRITE | PIPE_MAP_UNSYNCHRONIZED,
|
||||||
0, 0, texSize, texSize, &transfer);
|
0, 0, texSize, texSize, &transfer);
|
||||||
|
|
||||||
/* Pack four 1D maps into a 2D texture:
|
/* Pack four 1D maps into a 2D texture:
|
||||||
|
|
|
||||||
|
|
@ -140,7 +140,7 @@ st_make_bitmap_texture(struct gl_context *ctx, GLsizei width, GLsizei height,
|
||||||
* Create texture to hold bitmap pattern.
|
* Create texture to hold bitmap pattern.
|
||||||
*/
|
*/
|
||||||
pt = st_texture_create(st, st->internal_target, st->bitmap.tex_format,
|
pt = st_texture_create(st, st->internal_target, st->bitmap.tex_format,
|
||||||
0, width, height, 1, 1, 0, 0,
|
0, width, height, 1, 1, 0, PIPE_RESOURCE_FLAG_MAP_UNSYNCHRONIZED,
|
||||||
PIPE_BIND_SAMPLER_VIEW, false,
|
PIPE_BIND_SAMPLER_VIEW, false,
|
||||||
PIPE_COMPRESSION_FIXED_RATE_NONE);
|
PIPE_COMPRESSION_FIXED_RATE_NONE);
|
||||||
if (!pt) {
|
if (!pt) {
|
||||||
|
|
@ -149,7 +149,7 @@ st_make_bitmap_texture(struct gl_context *ctx, GLsizei width, GLsizei height,
|
||||||
}
|
}
|
||||||
|
|
||||||
dest = pipe_texture_map(st->pipe, pt, 0, 0,
|
dest = pipe_texture_map(st->pipe, pt, 0, 0,
|
||||||
PIPE_MAP_WRITE,
|
PIPE_MAP_WRITE | PIPE_MAP_UNSYNCHRONIZED,
|
||||||
0, 0, width, height, &transfer);
|
0, 0, width, height, &transfer);
|
||||||
|
|
||||||
/* Put image into texture transfer */
|
/* Put image into texture transfer */
|
||||||
|
|
@ -373,7 +373,7 @@ reset_cache(struct st_context *st)
|
||||||
cache->texture = st_texture_create(st, st->internal_target,
|
cache->texture = st_texture_create(st, st->internal_target,
|
||||||
st->bitmap.tex_format, 0,
|
st->bitmap.tex_format, 0,
|
||||||
BITMAP_CACHE_WIDTH, BITMAP_CACHE_HEIGHT,
|
BITMAP_CACHE_WIDTH, BITMAP_CACHE_HEIGHT,
|
||||||
1, 1, 0, 0,
|
1, 1, 0, PIPE_RESOURCE_FLAG_MAP_UNSYNCHRONIZED,
|
||||||
PIPE_BIND_SAMPLER_VIEW,
|
PIPE_BIND_SAMPLER_VIEW,
|
||||||
false,
|
false,
|
||||||
PIPE_COMPRESSION_FIXED_RATE_NONE);
|
PIPE_COMPRESSION_FIXED_RATE_NONE);
|
||||||
|
|
@ -416,7 +416,7 @@ create_cache_trans(struct st_context *st)
|
||||||
* Subsequent glBitmap calls will write into the texture image.
|
* Subsequent glBitmap calls will write into the texture image.
|
||||||
*/
|
*/
|
||||||
cache->buffer = pipe_texture_map(pipe, cache->texture, 0, 0,
|
cache->buffer = pipe_texture_map(pipe, cache->texture, 0, 0,
|
||||||
PIPE_MAP_WRITE, 0, 0,
|
PIPE_MAP_WRITE | PIPE_MAP_UNSYNCHRONIZED, 0, 0,
|
||||||
BITMAP_CACHE_WIDTH,
|
BITMAP_CACHE_WIDTH,
|
||||||
BITMAP_CACHE_HEIGHT, &cache->trans);
|
BITMAP_CACHE_HEIGHT, &cache->trans);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -439,12 +439,12 @@ internal_format(struct gl_context *ctx, GLenum format, GLenum type)
|
||||||
*/
|
*/
|
||||||
static struct pipe_resource *
|
static struct pipe_resource *
|
||||||
alloc_texture(struct st_context *st, GLsizei width, GLsizei height,
|
alloc_texture(struct st_context *st, GLsizei width, GLsizei height,
|
||||||
enum pipe_format texFormat, unsigned bind)
|
enum pipe_format texFormat, unsigned flags, unsigned bind)
|
||||||
{
|
{
|
||||||
struct pipe_resource *pt;
|
struct pipe_resource *pt;
|
||||||
|
|
||||||
pt = st_texture_create(st, st->internal_target, texFormat, 0,
|
pt = st_texture_create(st, st->internal_target, texFormat, 0,
|
||||||
width, height, 1, 1, 0, 0, bind, false,
|
width, height, 1, 1, 0, flags, bind, false,
|
||||||
PIPE_COMPRESSION_FIXED_RATE_NONE);
|
PIPE_COMPRESSION_FIXED_RATE_NONE);
|
||||||
|
|
||||||
return pt;
|
return pt;
|
||||||
|
|
@ -631,7 +631,7 @@ make_texture(struct st_context *st,
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* alloc temporary texture */
|
/* alloc temporary texture */
|
||||||
pt = alloc_texture(st, width, height, pipeFormat, PIPE_BIND_SAMPLER_VIEW);
|
pt = alloc_texture(st, width, height, pipeFormat, PIPE_RESOURCE_FLAG_MAP_UNSYNCHRONIZED, PIPE_BIND_SAMPLER_VIEW);
|
||||||
if (!pt) {
|
if (!pt) {
|
||||||
_mesa_unmap_pbo_source(ctx, unpack);
|
_mesa_unmap_pbo_source(ctx, unpack);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
@ -647,7 +647,7 @@ make_texture(struct st_context *st,
|
||||||
|
|
||||||
/* map texture transfer */
|
/* map texture transfer */
|
||||||
dest = pipe_texture_map(pipe, pt, 0, 0,
|
dest = pipe_texture_map(pipe, pt, 0, 0,
|
||||||
PIPE_MAP_WRITE | PIPE_MAP_DISCARD_WHOLE_RESOURCE,
|
PIPE_MAP_WRITE | PIPE_MAP_DISCARD_WHOLE_RESOURCE | PIPE_MAP_UNSYNCHRONIZED,
|
||||||
0, 0, width, height, &transfer);
|
0, 0, width, height, &transfer);
|
||||||
if (!dest) {
|
if (!dest) {
|
||||||
pipe_resource_reference(&pt, NULL);
|
pipe_resource_reference(&pt, NULL);
|
||||||
|
|
@ -1833,7 +1833,7 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy,
|
||||||
readH = MAX2(0, readH);
|
readH = MAX2(0, readH);
|
||||||
|
|
||||||
/* Allocate the temporary texture. */
|
/* Allocate the temporary texture. */
|
||||||
pt = alloc_texture(st, width, height, srcFormat, srcBind);
|
pt = alloc_texture(st, width, height, srcFormat, 0, srcBind);
|
||||||
if (!pt)
|
if (!pt)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2284,6 +2284,7 @@ st_TexSubImage(struct gl_context *ctx, GLuint dims,
|
||||||
memset(&src_templ, 0, sizeof(src_templ));
|
memset(&src_templ, 0, sizeof(src_templ));
|
||||||
src_templ.target = gl_target_to_pipe(gl_target);
|
src_templ.target = gl_target_to_pipe(gl_target);
|
||||||
src_templ.format = src_format;
|
src_templ.format = src_format;
|
||||||
|
src_templ.flags = PIPE_RESOURCE_FLAG_MAP_UNSYNCHRONIZED;
|
||||||
src_templ.bind = PIPE_BIND_SAMPLER_VIEW;
|
src_templ.bind = PIPE_BIND_SAMPLER_VIEW;
|
||||||
src_templ.usage = PIPE_USAGE_STAGING;
|
src_templ.usage = PIPE_USAGE_STAGING;
|
||||||
|
|
||||||
|
|
@ -2328,7 +2329,7 @@ st_TexSubImage(struct gl_context *ctx, GLuint dims,
|
||||||
height = 1;
|
height = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
map = pipe_texture_map_3d(pipe, src, 0, PIPE_MAP_WRITE, 0, 0, 0,
|
map = pipe_texture_map_3d(pipe, src, 0, PIPE_MAP_WRITE | PIPE_MAP_UNSYNCHRONIZED, 0, 0, 0,
|
||||||
width, height, depth, &transfer);
|
width, height, depth, &transfer);
|
||||||
if (!map) {
|
if (!map) {
|
||||||
_mesa_unmap_teximage_pbo(ctx, unpack);
|
_mesa_unmap_teximage_pbo(ctx, unpack);
|
||||||
|
|
|
||||||
|
|
@ -481,7 +481,7 @@ sw_decode_astc(struct st_context *st,
|
||||||
/* Create the destination */
|
/* Create the destination */
|
||||||
struct pipe_resource *rgba8_tex =
|
struct pipe_resource *rgba8_tex =
|
||||||
st_texture_create(st, PIPE_TEXTURE_2D, PIPE_FORMAT_R8G8B8A8_UNORM, 0,
|
st_texture_create(st, PIPE_TEXTURE_2D, PIPE_FORMAT_R8G8B8A8_UNORM, 0,
|
||||||
width_px, height_px, 1, 1, 0, 0,
|
width_px, height_px, 1, 1, 0, PIPE_RESOURCE_FLAG_MAP_UNSYNCHRONIZED,
|
||||||
PIPE_BIND_SAMPLER_VIEW, false,
|
PIPE_BIND_SAMPLER_VIEW, false,
|
||||||
PIPE_COMPRESSION_FIXED_RATE_NONE);
|
PIPE_COMPRESSION_FIXED_RATE_NONE);
|
||||||
if (!rgba8_tex)
|
if (!rgba8_tex)
|
||||||
|
|
@ -490,7 +490,7 @@ sw_decode_astc(struct st_context *st,
|
||||||
/* Temporarily map the destination and decode into the returned pointer */
|
/* Temporarily map the destination and decode into the returned pointer */
|
||||||
struct pipe_transfer *rgba8_xfer;
|
struct pipe_transfer *rgba8_xfer;
|
||||||
void *rgba8_map = pipe_texture_map(st->pipe, rgba8_tex, 0, 0,
|
void *rgba8_map = pipe_texture_map(st->pipe, rgba8_tex, 0, 0,
|
||||||
PIPE_MAP_WRITE, 0, 0,
|
PIPE_MAP_WRITE | PIPE_MAP_UNSYNCHRONIZED, 0, 0,
|
||||||
width_px, height_px, &rgba8_xfer);
|
width_px, height_px, &rgba8_xfer);
|
||||||
if (!rgba8_map) {
|
if (!rgba8_map) {
|
||||||
pipe_resource_reference(&rgba8_tex, NULL);
|
pipe_resource_reference(&rgba8_tex, NULL);
|
||||||
|
|
|
||||||
|
|
@ -446,7 +446,7 @@ st_create_color_map_texture(struct gl_context *ctx)
|
||||||
|
|
||||||
/* create texture for color map/table */
|
/* create texture for color map/table */
|
||||||
pt = st_texture_create(st, PIPE_TEXTURE_2D, format, 0,
|
pt = st_texture_create(st, PIPE_TEXTURE_2D, format, 0,
|
||||||
texSize, texSize, 1, 1, 0, 0, PIPE_BIND_SAMPLER_VIEW, false,
|
texSize, texSize, 1, 1, 0, PIPE_RESOURCE_FLAG_MAP_UNSYNCHRONIZED, PIPE_BIND_SAMPLER_VIEW, false,
|
||||||
PIPE_COMPRESSION_FIXED_RATE_NONE);
|
PIPE_COMPRESSION_FIXED_RATE_NONE);
|
||||||
return pt;
|
return pt;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue