d3d12: Rename bind invalidate options to transition flags

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17688>
This commit is contained in:
Jesse Natalie 2022-07-21 09:10:13 -07:00 committed by Marge Bot
parent c6f01d6c45
commit aa94e0b37c
8 changed files with 42 additions and 42 deletions

View file

@ -118,10 +118,10 @@ blit_resolve(struct d3d12_context *ctx, const struct pipe_blit_info *info)
d3d12_transition_resource_state(ctx, src, d3d12_transition_resource_state(ctx, src,
D3D12_RESOURCE_STATE_RESOLVE_SOURCE, D3D12_RESOURCE_STATE_RESOLVE_SOURCE,
D3D12_BIND_INVALIDATE_FULL); D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_transition_resource_state(ctx, dst, d3d12_transition_resource_state(ctx, dst,
D3D12_RESOURCE_STATE_RESOLVE_DEST, D3D12_RESOURCE_STATE_RESOLVE_DEST,
D3D12_BIND_INVALIDATE_FULL); D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_apply_resource_states(ctx, false); d3d12_apply_resource_states(ctx, false);
@ -424,13 +424,13 @@ d3d12_direct_copy(struct d3d12_context *ctx,
d3d12_get_format_start_plane(src->base.b.format), d3d12_get_format_start_plane(src->base.b.format),
d3d12_get_format_num_planes(src->base.b.format), d3d12_get_format_num_planes(src->base.b.format),
D3D12_RESOURCE_STATE_COPY_SOURCE, D3D12_RESOURCE_STATE_COPY_SOURCE,
D3D12_BIND_INVALIDATE_FULL); D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_transition_subresources_state(ctx, dst, dst_subres, 1, 0, 1, d3d12_transition_subresources_state(ctx, dst, dst_subres, 1, 0, 1,
d3d12_get_format_start_plane(dst->base.b.format), d3d12_get_format_start_plane(dst->base.b.format),
d3d12_get_format_num_planes(dst->base.b.format), d3d12_get_format_num_planes(dst->base.b.format),
D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_COPY_DEST,
D3D12_BIND_INVALIDATE_FULL); D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_apply_resource_states(ctx, false); d3d12_apply_resource_states(ctx, false);
@ -821,11 +821,11 @@ blit_resolve_stencil(struct d3d12_context *ctx,
d3d12_transition_subresources_state(ctx, d3d12_resource(tmp), d3d12_transition_subresources_state(ctx, d3d12_resource(tmp),
0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
D3D12_RESOURCE_STATE_COPY_SOURCE, D3D12_RESOURCE_STATE_COPY_SOURCE,
D3D12_BIND_INVALIDATE_NONE); D3D12_TRANSITION_FLAG_NONE);
d3d12_transition_subresources_state(ctx, dst, d3d12_transition_subresources_state(ctx, dst,
0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1,
D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_COPY_DEST,
D3D12_BIND_INVALIDATE_FULL); D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_apply_resource_states(ctx, false); d3d12_apply_resource_states(ctx, false);
struct d3d12_batch *batch = d3d12_current_batch(ctx); struct d3d12_batch *batch = d3d12_current_batch(ctx);

View file

@ -1981,7 +1981,7 @@ d3d12_clear_render_target(struct pipe_context *pctx,
struct d3d12_resource *res = d3d12_resource(psurf->texture); struct d3d12_resource *res = d3d12_resource(psurf->texture);
d3d12_transition_resource_state(ctx, res, d3d12_transition_resource_state(ctx, res,
D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_RENDER_TARGET,
D3D12_BIND_INVALIDATE_FULL); D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_apply_resource_states(ctx, false); d3d12_apply_resource_states(ctx, false);
enum pipe_format format = psurf->texture->format; enum pipe_format format = psurf->texture->format;
@ -2040,7 +2040,7 @@ d3d12_clear_depth_stencil(struct pipe_context *pctx,
struct d3d12_resource *res = d3d12_resource(ctx->fb.zsbuf->texture); struct d3d12_resource *res = d3d12_resource(ctx->fb.zsbuf->texture);
d3d12_transition_resource_state(ctx, res, d3d12_transition_resource_state(ctx, res,
D3D12_RESOURCE_STATE_DEPTH_WRITE, D3D12_RESOURCE_STATE_DEPTH_WRITE,
D3D12_BIND_INVALIDATE_FULL); D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_apply_resource_states(ctx, false); d3d12_apply_resource_states(ctx, false);
D3D12_RECT rect = { (int)dstx, (int)dsty, D3D12_RECT rect = { (int)dstx, (int)dsty,
@ -2109,7 +2109,7 @@ d3d12_flush_resource(struct pipe_context *pctx,
d3d12_transition_resource_state(ctx, res, d3d12_transition_resource_state(ctx, res,
D3D12_RESOURCE_STATE_COMMON, D3D12_RESOURCE_STATE_COMMON,
D3D12_BIND_INVALIDATE_FULL); D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_apply_resource_states(ctx, false); d3d12_apply_resource_states(ctx, false);
} }

View file

@ -312,16 +312,16 @@ void
d3d12_flush_cmdlist_and_wait(struct d3d12_context *ctx); d3d12_flush_cmdlist_and_wait(struct d3d12_context *ctx);
enum d3d12_bind_invalidate_option { enum d3d12_transition_flags {
D3D12_BIND_INVALIDATE_NONE, D3D12_TRANSITION_FLAG_NONE = 0,
D3D12_BIND_INVALIDATE_FULL, D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS = 1,
}; };
void void
d3d12_transition_resource_state(struct d3d12_context* ctx, d3d12_transition_resource_state(struct d3d12_context* ctx,
struct d3d12_resource* res, struct d3d12_resource* res,
D3D12_RESOURCE_STATES state, D3D12_RESOURCE_STATES state,
d3d12_bind_invalidate_option bind_invalidate); d3d12_transition_flags flags);
void void
d3d12_transition_subresources_state(struct d3d12_context *ctx, d3d12_transition_subresources_state(struct d3d12_context *ctx,
@ -330,7 +330,7 @@ d3d12_transition_subresources_state(struct d3d12_context *ctx,
unsigned start_layer, unsigned num_layers, unsigned start_layer, unsigned num_layers,
unsigned start_plane, unsigned num_planes, unsigned start_plane, unsigned num_planes,
D3D12_RESOURCE_STATES state, D3D12_RESOURCE_STATES state,
d3d12_bind_invalidate_option bind_invalidate); d3d12_transition_flags flags);
void void
d3d12_apply_resource_states(struct d3d12_context* ctx, bool is_implicit_dispatch); d3d12_apply_resource_states(struct d3d12_context* ctx, bool is_implicit_dispatch);

View file

@ -73,7 +73,7 @@ fill_cbv_descriptors(struct d3d12_context *ctx,
D3D12_CONSTANT_BUFFER_VIEW_DESC cbv_desc = {}; D3D12_CONSTANT_BUFFER_VIEW_DESC cbv_desc = {};
if (buffer && buffer->buffer) { if (buffer && buffer->buffer) {
struct d3d12_resource *res = d3d12_resource(buffer->buffer); struct d3d12_resource *res = d3d12_resource(buffer->buffer);
d3d12_transition_resource_state(ctx, res, D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER, D3D12_BIND_INVALIDATE_NONE); d3d12_transition_resource_state(ctx, res, D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER, D3D12_TRANSITION_FLAG_NONE);
cbv_desc.BufferLocation = d3d12_resource_gpu_virtual_address(res) + buffer->buffer_offset; cbv_desc.BufferLocation = d3d12_resource_gpu_virtual_address(res) + buffer->buffer_offset;
cbv_desc.SizeInBytes = MIN2(D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT * 16, cbv_desc.SizeInBytes = MIN2(D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT * 16,
align(buffer->buffer_size, 256)); align(buffer->buffer_size, 256));
@ -128,7 +128,7 @@ fill_srv_descriptors(struct d3d12_context *ctx,
if (view->base.texture->target == PIPE_BUFFER) { if (view->base.texture->target == PIPE_BUFFER) {
d3d12_transition_resource_state(ctx, d3d12_resource(view->base.texture), d3d12_transition_resource_state(ctx, d3d12_resource(view->base.texture),
state, state,
D3D12_BIND_INVALIDATE_NONE); D3D12_TRANSITION_FLAG_NONE);
} else { } else {
d3d12_transition_subresources_state(ctx, d3d12_resource(view->base.texture), d3d12_transition_subresources_state(ctx, d3d12_resource(view->base.texture),
view->base.u.tex.first_level, view->mip_levels, view->base.u.tex.first_level, view->mip_levels,
@ -136,7 +136,7 @@ fill_srv_descriptors(struct d3d12_context *ctx,
d3d12_get_format_start_plane(view->base.format), d3d12_get_format_start_plane(view->base.format),
d3d12_get_format_num_planes(view->base.format), d3d12_get_format_num_planes(view->base.format),
state, state,
D3D12_BIND_INVALIDATE_NONE); D3D12_TRANSITION_FLAG_NONE);
} }
} else { } else {
descs[desc_idx] = screen->null_srvs[shader->srv_bindings[i].dimension].cpu_handle; descs[desc_idx] = screen->null_srvs[shader->srv_bindings[i].dimension].cpu_handle;
@ -173,7 +173,7 @@ fill_ssbo_descriptors(struct d3d12_context *ctx,
struct d3d12_resource *res = d3d12_resource(view->buffer); struct d3d12_resource *res = d3d12_resource(view->buffer);
uint64_t res_offset = 0; uint64_t res_offset = 0;
d3d12_res = d3d12_resource_underlying(res, &res_offset); d3d12_res = d3d12_resource_underlying(res, &res_offset);
d3d12_transition_resource_state(ctx, res, D3D12_RESOURCE_STATE_UNORDERED_ACCESS, D3D12_BIND_INVALIDATE_NONE); d3d12_transition_resource_state(ctx, res, D3D12_RESOURCE_STATE_UNORDERED_ACCESS, D3D12_TRANSITION_FLAG_NONE);
uav_desc.Buffer.FirstElement = (view->buffer_offset + res_offset) / 4; uav_desc.Buffer.FirstElement = (view->buffer_offset + res_offset) / 4;
uav_desc.Buffer.NumElements = DIV_ROUND_UP(view->buffer_size, 4); uav_desc.Buffer.NumElements = DIV_ROUND_UP(view->buffer_size, 4);
d3d12_batch_reference_resource(batch, res, true); d3d12_batch_reference_resource(batch, res, true);
@ -318,7 +318,7 @@ fill_image_descriptors(struct d3d12_context *ctx,
if (!batch->pending_memory_barrier) { if (!batch->pending_memory_barrier) {
if (res->base.b.target == PIPE_BUFFER) { if (res->base.b.target == PIPE_BUFFER) {
d3d12_transition_resource_state(ctx, res, D3D12_RESOURCE_STATE_UNORDERED_ACCESS, D3D12_BIND_INVALIDATE_NONE); d3d12_transition_resource_state(ctx, res, D3D12_RESOURCE_STATE_UNORDERED_ACCESS, D3D12_TRANSITION_FLAG_NONE);
} else { } else {
unsigned transition_first_layer = view->u.tex.first_layer; unsigned transition_first_layer = view->u.tex.first_layer;
unsigned transition_array_size = array_size; unsigned transition_array_size = array_size;
@ -331,7 +331,7 @@ fill_image_descriptors(struct d3d12_context *ctx,
transition_first_layer, transition_array_size, transition_first_layer, transition_array_size,
0, 1, 0, 1,
D3D12_RESOURCE_STATE_UNORDERED_ACCESS, D3D12_RESOURCE_STATE_UNORDERED_ACCESS,
D3D12_BIND_INVALIDATE_NONE); D3D12_TRANSITION_FLAG_NONE);
} }
} }
d3d12_batch_reference_resource(batch, res, true); d3d12_batch_reference_resource(batch, res, true);
@ -705,7 +705,7 @@ transition_surface_subresources_state(struct d3d12_context *ctx,
d3d12_get_format_start_plane(psurf->format), d3d12_get_format_start_plane(psurf->format),
d3d12_get_format_num_planes(psurf->format), d3d12_get_format_num_planes(psurf->format),
state, state,
D3D12_BIND_INVALIDATE_FULL); D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
} }
static bool static bool
@ -1106,7 +1106,7 @@ d3d12_draw_vbo(struct pipe_context *pctx,
for (unsigned i = 0; i < ctx->num_vbs; ++i) { for (unsigned i = 0; i < ctx->num_vbs; ++i) {
if (ctx->vbs[i].buffer.resource) { if (ctx->vbs[i].buffer.resource) {
struct d3d12_resource *res = d3d12_resource(ctx->vbs[i].buffer.resource); struct d3d12_resource *res = d3d12_resource(ctx->vbs[i].buffer.resource);
d3d12_transition_resource_state(ctx, res, D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER, D3D12_BIND_INVALIDATE_NONE); d3d12_transition_resource_state(ctx, res, D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER, D3D12_TRANSITION_FLAG_NONE);
if (ctx->cmdlist_dirty & D3D12_DIRTY_VERTEX_BUFFERS) if (ctx->cmdlist_dirty & D3D12_DIRTY_VERTEX_BUFFERS)
d3d12_batch_reference_resource(batch, res, false); d3d12_batch_reference_resource(batch, res, false);
} }
@ -1120,7 +1120,7 @@ d3d12_draw_vbo(struct pipe_context *pctx,
ibv.BufferLocation = d3d12_resource_gpu_virtual_address(res) + index_offset; ibv.BufferLocation = d3d12_resource_gpu_virtual_address(res) + index_offset;
ibv.SizeInBytes = res->base.b.width0 - index_offset; ibv.SizeInBytes = res->base.b.width0 - index_offset;
ibv.Format = ib_format(dinfo->index_size); ibv.Format = ib_format(dinfo->index_size);
d3d12_transition_resource_state(ctx, res, D3D12_RESOURCE_STATE_INDEX_BUFFER, D3D12_BIND_INVALIDATE_NONE); d3d12_transition_resource_state(ctx, res, D3D12_RESOURCE_STATE_INDEX_BUFFER, D3D12_TRANSITION_FLAG_NONE);
if (ctx->cmdlist_dirty & D3D12_DIRTY_INDEX_BUFFER || if (ctx->cmdlist_dirty & D3D12_DIRTY_INDEX_BUFFER ||
memcmp(&ctx->ibv, &ibv, sizeof(D3D12_INDEX_BUFFER_VIEW)) != 0) { memcmp(&ctx->ibv, &ibv, sizeof(D3D12_INDEX_BUFFER_VIEW)) != 0) {
ctx->ibv = ibv; ctx->ibv = ibv;
@ -1170,8 +1170,8 @@ d3d12_draw_vbo(struct pipe_context *pctx,
d3d12_batch_reference_resource(batch, fill_buffer, true); d3d12_batch_reference_resource(batch, fill_buffer, true);
} }
d3d12_transition_resource_state(ctx, so_buffer, D3D12_RESOURCE_STATE_STREAM_OUT, D3D12_BIND_INVALIDATE_NONE); d3d12_transition_resource_state(ctx, so_buffer, D3D12_RESOURCE_STATE_STREAM_OUT, D3D12_TRANSITION_FLAG_NONE);
d3d12_transition_resource_state(ctx, fill_buffer, D3D12_RESOURCE_STATE_STREAM_OUT, D3D12_BIND_INVALIDATE_NONE); d3d12_transition_resource_state(ctx, fill_buffer, D3D12_RESOURCE_STATE_STREAM_OUT, D3D12_TRANSITION_FLAG_NONE);
} }
if (ctx->cmdlist_dirty & D3D12_DIRTY_STREAM_OUTPUT) if (ctx->cmdlist_dirty & D3D12_DIRTY_STREAM_OUTPUT)
ctx->cmdlist->SOSetTargets(0, 4, so_buffer_views); ctx->cmdlist->SOSetTargets(0, 4, so_buffer_views);
@ -1202,7 +1202,7 @@ d3d12_draw_vbo(struct pipe_context *pctx,
indirect_arg_buf = d3d12_resource_underlying(indirect_buf, &buf_offset); indirect_arg_buf = d3d12_resource_underlying(indirect_buf, &buf_offset);
indirect_arg_offset = indirect->offset + buf_offset; indirect_arg_offset = indirect->offset + buf_offset;
d3d12_transition_resource_state(ctx, indirect_buf, d3d12_transition_resource_state(ctx, indirect_buf,
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT, D3D12_BIND_INVALIDATE_NONE); D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT, D3D12_TRANSITION_FLAG_NONE);
d3d12_batch_reference_resource(batch, indirect_buf, false); d3d12_batch_reference_resource(batch, indirect_buf, false);
} }
if (indirect->indirect_draw_count) { if (indirect->indirect_draw_count) {
@ -1211,7 +1211,7 @@ d3d12_draw_vbo(struct pipe_context *pctx,
indirect_count_buf = d3d12_resource_underlying(count_buf, &count_offset); indirect_count_buf = d3d12_resource_underlying(count_buf, &count_offset);
indirect_count_offset = indirect->indirect_draw_count_offset + count_offset; indirect_count_offset = indirect->indirect_draw_count_offset + count_offset;
d3d12_transition_resource_state(ctx, count_buf, d3d12_transition_resource_state(ctx, count_buf,
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT, D3D12_BIND_INVALIDATE_NONE); D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT, D3D12_TRANSITION_FLAG_NONE);
d3d12_batch_reference_resource(batch, count_buf, false); d3d12_batch_reference_resource(batch, count_buf, false);
} }
assert(!indirect->count_from_stream_output); assert(!indirect->count_from_stream_output);
@ -1366,7 +1366,7 @@ d3d12_launch_grid(struct pipe_context *pctx, const struct pipe_grid_info *info)
indirect_arg_buf = d3d12_resource_underlying(indirect_buf, &buf_offset); indirect_arg_buf = d3d12_resource_underlying(indirect_buf, &buf_offset);
indirect_arg_offset = indirect_offset + buf_offset; indirect_arg_offset = indirect_offset + buf_offset;
d3d12_transition_resource_state(ctx, indirect_buf, d3d12_transition_resource_state(ctx, indirect_buf,
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT, D3D12_BIND_INVALIDATE_NONE); D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT, D3D12_TRANSITION_FLAG_NONE);
d3d12_batch_reference_resource(batch, indirect_buf, false); d3d12_batch_reference_resource(batch, indirect_buf, false);
} }

View file

@ -456,7 +456,7 @@ end_subquery(struct d3d12_context *ctx, struct d3d12_query *q_parent, unsigned s
offset += q->buffer_offset + resolve_index * q->query_size; offset += q->buffer_offset + resolve_index * q->query_size;
ctx->cmdlist->EndQuery(q->query_heap, q->d3d12qtype, end_index); ctx->cmdlist->EndQuery(q->query_heap, q->d3d12qtype, end_index);
d3d12_transition_resource_state(ctx, res, D3D12_RESOURCE_STATE_COPY_DEST, D3D12_BIND_INVALIDATE_FULL); d3d12_transition_resource_state(ctx, res, D3D12_RESOURCE_STATE_COPY_DEST, D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_apply_resource_states(ctx, false); d3d12_apply_resource_states(ctx, false);
ctx->cmdlist->ResolveQueryData(q->query_heap, q->d3d12qtype, resolve_index, ctx->cmdlist->ResolveQueryData(q->query_heap, q->d3d12qtype, resolve_index,
resolve_count, d3d12_res, offset); resolve_count, d3d12_res, offset);
@ -583,14 +583,14 @@ d3d12_render_condition(struct pipe_context *pctx,
uint64_t source_offset = 0; uint64_t source_offset = 0;
ID3D12Resource *source = d3d12_resource_underlying(res, &source_offset); ID3D12Resource *source = d3d12_resource_underlying(res, &source_offset);
source_offset += query->subqueries[0].buffer_offset; source_offset += query->subqueries[0].buffer_offset;
d3d12_transition_resource_state(ctx, res, D3D12_RESOURCE_STATE_COPY_SOURCE, D3D12_BIND_INVALIDATE_FULL); d3d12_transition_resource_state(ctx, res, D3D12_RESOURCE_STATE_COPY_SOURCE, D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_transition_resource_state(ctx, query->predicate, D3D12_RESOURCE_STATE_COPY_DEST, D3D12_BIND_INVALIDATE_NONE); d3d12_transition_resource_state(ctx, query->predicate, D3D12_RESOURCE_STATE_COPY_DEST, D3D12_TRANSITION_FLAG_NONE);
d3d12_apply_resource_states(ctx, false); d3d12_apply_resource_states(ctx, false);
ctx->cmdlist->CopyBufferRegion(d3d12_resource_resource(query->predicate), 0, ctx->cmdlist->CopyBufferRegion(d3d12_resource_resource(query->predicate), 0,
source, source_offset, source, source_offset,
sizeof(uint64_t)); sizeof(uint64_t));
d3d12_transition_resource_state(ctx, query->predicate, D3D12_RESOURCE_STATE_PREDICATION, D3D12_BIND_INVALIDATE_NONE); d3d12_transition_resource_state(ctx, query->predicate, D3D12_RESOURCE_STATE_PREDICATION, D3D12_TRANSITION_FLAG_NONE);
d3d12_apply_resource_states(ctx, false); d3d12_apply_resource_states(ctx, false);
ctx->current_predication = query->predicate; ctx->current_predication = query->predicate;

View file

@ -1027,8 +1027,8 @@ copy_texture_region(struct d3d12_context *ctx,
d3d12_batch_reference_resource(batch, info.src, false); d3d12_batch_reference_resource(batch, info.src, false);
d3d12_batch_reference_resource(batch, info.dst, true); d3d12_batch_reference_resource(batch, info.dst, true);
d3d12_transition_resource_state(ctx, info.src, D3D12_RESOURCE_STATE_COPY_SOURCE, D3D12_BIND_INVALIDATE_FULL); d3d12_transition_resource_state(ctx, info.src, D3D12_RESOURCE_STATE_COPY_SOURCE, D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_transition_resource_state(ctx, info.dst, D3D12_RESOURCE_STATE_COPY_DEST, D3D12_BIND_INVALIDATE_FULL); d3d12_transition_resource_state(ctx, info.dst, D3D12_RESOURCE_STATE_COPY_DEST, D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_apply_resource_states(ctx, false); d3d12_apply_resource_states(ctx, false);
ctx->cmdlist->CopyTextureRegion(&info.dst_loc, info.dst_x, info.dst_y, info.dst_z, ctx->cmdlist->CopyTextureRegion(&info.dst_loc, info.dst_x, info.dst_y, info.dst_z,
&info.src_loc, info.src_box); &info.src_loc, info.src_box);
@ -1218,8 +1218,8 @@ transfer_buf_to_buf(struct d3d12_context *ctx,
// Same-resource copies not supported, since the resource would need to be in both states // Same-resource copies not supported, since the resource would need to be in both states
assert(src_d3d12 != dst_d3d12); assert(src_d3d12 != dst_d3d12);
d3d12_transition_resource_state(ctx, src, D3D12_RESOURCE_STATE_COPY_SOURCE, D3D12_BIND_INVALIDATE_FULL); d3d12_transition_resource_state(ctx, src, D3D12_RESOURCE_STATE_COPY_SOURCE, D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_transition_resource_state(ctx, dst, D3D12_RESOURCE_STATE_COPY_DEST, D3D12_BIND_INVALIDATE_FULL); d3d12_transition_resource_state(ctx, dst, D3D12_RESOURCE_STATE_COPY_DEST, D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_apply_resource_states(ctx, false); d3d12_apply_resource_states(ctx, false);
ctx->cmdlist->CopyBufferRegion(dst_d3d12, dst_offset, ctx->cmdlist->CopyBufferRegion(dst_d3d12, dst_offset,
src_d3d12, src_offset, src_d3d12, src_offset,

View file

@ -375,9 +375,9 @@ void
d3d12_transition_resource_state(struct d3d12_context *ctx, d3d12_transition_resource_state(struct d3d12_context *ctx,
struct d3d12_resource *res, struct d3d12_resource *res,
D3D12_RESOURCE_STATES state, D3D12_RESOURCE_STATES state,
d3d12_bind_invalidate_option bind_invalidate) d3d12_transition_flags flags)
{ {
if (bind_invalidate == D3D12_BIND_INVALIDATE_FULL) if (flags & D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS)
d3d12_invalidate_context_bindings(ctx, res); d3d12_invalidate_context_bindings(ctx, res);
d3d12_context_state_table_entry *state_entry = find_or_create_state_entry(ctx->bo_state_table, res->bo); d3d12_context_state_table_entry *state_entry = find_or_create_state_entry(ctx->bo_state_table, res->bo);
@ -392,9 +392,9 @@ d3d12_transition_subresources_state(struct d3d12_context *ctx,
uint32_t start_layer, uint32_t num_layers, uint32_t start_layer, uint32_t num_layers,
uint32_t start_plane, uint32_t num_planes, uint32_t start_plane, uint32_t num_planes,
D3D12_RESOURCE_STATES state, D3D12_RESOURCE_STATES state,
d3d12_bind_invalidate_option bind_invalidate) d3d12_transition_flags flags)
{ {
if(bind_invalidate == D3D12_BIND_INVALIDATE_FULL) if(flags & D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS)
d3d12_invalidate_context_bindings(ctx, res); d3d12_invalidate_context_bindings(ctx, res);
d3d12_context_state_table_entry *state_entry = find_or_create_state_entry(ctx->bo_state_table, res->bo); d3d12_context_state_table_entry *state_entry = find_or_create_state_entry(ctx->bo_state_table, res->bo);

View file

@ -1170,11 +1170,11 @@ d3d12_video_encoder_encode_bitstream(struct pipe_video_codec * codec,
d3d12_context(pD3D12Enc->base.context), d3d12_context(pD3D12Enc->base.context),
pInputVideoBuffer->texture, // d3d12_resource wrapper for pInputVideoD3D12Res pInputVideoBuffer->texture, // d3d12_resource wrapper for pInputVideoD3D12Res
D3D12_RESOURCE_STATE_COMMON, D3D12_RESOURCE_STATE_COMMON,
D3D12_BIND_INVALIDATE_FULL); D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_transition_resource_state(d3d12_context(pD3D12Enc->base.context), d3d12_transition_resource_state(d3d12_context(pD3D12Enc->base.context),
pOutputBitstreamBuffer, // d3d12_resource wrapped for pOutputBufferD3D12Res pOutputBitstreamBuffer, // d3d12_resource wrapped for pOutputBufferD3D12Res
D3D12_RESOURCE_STATE_COMMON, D3D12_RESOURCE_STATE_COMMON,
D3D12_BIND_INVALIDATE_FULL); D3D12_TRANSITION_FLAG_INVALIDATE_BINDINGS);
d3d12_apply_resource_states(d3d12_context(pD3D12Enc->base.context), false); d3d12_apply_resource_states(d3d12_context(pD3D12Enc->base.context), false);
d3d12_resource_wait_idle(d3d12_context(pD3D12Enc->base.context), d3d12_resource_wait_idle(d3d12_context(pD3D12Enc->base.context),