d3d12: Fix AV1 video encode 32 bits build

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26573>
(cherry picked from commit 096e17b578)
This commit is contained in:
Sil Vilerino
2023-12-06 20:09:44 -05:00
committed by Eric Engestrom
parent af708d5e80
commit 771c65fe5f
4 changed files with 36 additions and 36 deletions

View File

@@ -7044,7 +7044,7 @@
"description": "d3d12: Fix AV1 video encode 32 bits build",
"nominated": false,
"nomination_type": 3,
"resolution": 4,
"resolution": 1,
"main_sha": null,
"because_sha": null,
"notes": null

View File

@@ -2189,7 +2189,7 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc
writtenTemporalDelimBytes // Bytes Written AFTER placingPositionStart arg above
);
assert(pD3D12Enc->m_BitstreamHeadersBuffer.size() == writtenTemporalDelimBytes);
debug_printf("Written OBU_TEMPORAL_DELIMITER bytes: %" PRIu64 "\n", writtenTemporalDelimBytes);
debug_printf("Written OBU_TEMPORAL_DELIMITER bytes: %" PRIu64 "\n", static_cast<uint64_t>(writtenTemporalDelimBytes));
}
size_t writtenSequenceBytes = 0;
@@ -2208,7 +2208,7 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc
writtenSequenceBytes // Bytes Written AFTER placingPositionStart arg above
);
assert(pD3D12Enc->m_BitstreamHeadersBuffer.size() == (writtenSequenceBytes + writtenTemporalDelimBytes));
debug_printf("Written OBU_SEQUENCE_HEADER bytes: %" PRIu64 "\n", writtenSequenceBytes);
debug_printf("Written OBU_SEQUENCE_HEADER bytes: %" PRIu64 "\n", static_cast<uint64_t>(writtenSequenceBytes));
}
// Only supported bitstream format is with obu_size for now.
@@ -2254,14 +2254,14 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc
writtenFrameBytes // Bytes Written AFTER placingPositionStart arg above
);
debug_printf("Written OBU_FRAME bytes: %" PRIu64 "\n", writtenFrameBytes);
debug_printf("Written OBU_FRAME bytes: %" PRIu64 "\n", static_cast<uint64_t>(writtenFrameBytes));
assert(pD3D12Enc->m_BitstreamHeadersBuffer.size() ==
(writtenSequenceBytes + writtenTemporalDelimBytes + writtenFrameBytes));
debug_printf("Uploading %" PRIu64
" bytes from OBU sequence and/or picture headers to comp_bit_destination %p at offset 0\n",
pD3D12Enc->m_BitstreamHeadersBuffer.size(),
static_cast<uint64_t>(pD3D12Enc->m_BitstreamHeadersBuffer.size()),
associatedMetadata.comp_bit_destination);
// Upload headers to the finalized compressed bitstream buffer
@@ -2330,13 +2330,13 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc
writtenFrameBytes // Bytes Written AFTER placingPositionStart arg above
);
debug_printf("Written OBU_FRAME_HEADER bytes: %" PRIu64 "\n", writtenFrameBytes);
debug_printf("Written OBU_FRAME_HEADER bytes: %" PRIu64 "\n", static_cast<uint64_t>(writtenFrameBytes));
assert(pD3D12Enc->m_BitstreamHeadersBuffer.size() ==
(writtenSequenceBytes + writtenTemporalDelimBytes + writtenFrameBytes));
debug_printf("Uploading %" PRIu64 " bytes from OBU headers to comp_bit_destination %p at offset 0\n",
pD3D12Enc->m_BitstreamHeadersBuffer.size(),
static_cast<uint64_t>(pD3D12Enc->m_BitstreamHeadersBuffer.size()),
associatedMetadata.comp_bit_destination);
// Upload headers to the finalized compressed bitstream buffer
@@ -2361,7 +2361,7 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc
debug_printf("Uploading tile group %d to comp_bit_destination %p at offset %" PRIu64 "\n",
tg_idx,
associatedMetadata.comp_bit_destination,
comp_bitstream_offset);
static_cast<uint64_t>(comp_bitstream_offset));
size_t tile_group_obu_size = 0;
size_t decode_tile_elements_size = 0;
@@ -2387,9 +2387,9 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc
debug_printf("Written %" PRIu64 " bytes for OBU_TILE_GROUP open_bitstream_unit() prefix with obu_header() and "
"obu_size to staging_bitstream_buffer %p at offset %" PRIu64 "\n",
writtenTileObuPrefixBytes,
static_cast<uint64_t>(writtenTileObuPrefixBytes),
associatedMetadata.m_StagingBitstreamConstruction.data(),
staging_bitstream_buffer_offset);
static_cast<uint64_t>(staging_bitstream_buffer_offset));
writtenTileBytes += writtenTileObuPrefixBytes;
@@ -2404,10 +2404,10 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc
debug_printf("Uploading %" PRIu64 " bytes for OBU_TILE_GROUP open_bitstream_unit() prefix with obu_header() "
"and obu_size: %" PRIu64 " to comp_bit_destination %p at offset %" PRIu64 "\n",
writtenTileObuPrefixBytes,
tile_group_obu_size,
static_cast<uint64_t>(writtenTileObuPrefixBytes),
static_cast<uint64_t>(tile_group_obu_size),
associatedMetadata.comp_bit_destination,
comp_bitstream_offset);
static_cast<uint64_t>(comp_bitstream_offset));
staging_bitstream_buffer_offset += writtenTileObuPrefixBytes;
@@ -2517,7 +2517,7 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc
// Add current pending frame being processed in the loop
extra_show_existing_frame_payload_bytes += writtenTemporalDelimBytes;
debug_printf("Written OBU_TEMPORAL_DELIMITER bytes: %" PRIu64 "\n", writtenTemporalDelimBytes);
debug_printf("Written OBU_TEMPORAL_DELIMITER bytes: %" PRIu64 "\n", static_cast<uint64_t>(writtenTemporalDelimBytes));
size_t writtenShowExistingFrameBytes = 0;
av1_pic_header_t showExistingPicHdr = {};
@@ -2561,7 +2561,7 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc
"in current frame ref_frame_idx[%" PRIu32 "]) bytes: %" PRIu64 "\n",
*pendingFrameIt /*PictureIndex*/,
showExistingPicHdr.frame_to_show_map_idx,
writtenShowExistingFrameBytes);
static_cast<uint64_t>(writtenShowExistingFrameBytes));
// Remove it from the list of pending frames
pendingFrameIt =
@@ -2628,7 +2628,7 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc,
tileGroup.tg_start,
tileGroup.tg_end,
comp_bit_destination,
comp_bit_destination_offset);
static_cast<uint64_t>(comp_bit_destination_offset));
debug_printf("[Tile group start %d to end %d] Using staging_bitstream_buffer %p at offset %" PRIu64
" to write the tile_obu_group() prefix syntax: tile_start_and_end_present_flag, tg_start, tg_end and "
@@ -2636,7 +2636,7 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc,
tileGroup.tg_start,
tileGroup.tg_end,
staging_bitstream_buffer.data(),
staging_bitstream_buffer_offset);
static_cast<uint64_t>(staging_bitstream_buffer_offset));
// Reserve space upfront in the scratch storage
// Do not modify anything before staging_bitstream_buffer_offset
@@ -2673,9 +2673,9 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc,
" for tile_obu_group() prefix syntax: tile_start_and_end_present_flag, tg_start, tg_end\n",
tileGroup.tg_start,
tileGroup.tg_end,
bitstream_tile_group_obu_bytes,
static_cast<uint64_t>(bitstream_tile_group_obu_bytes),
staging_bitstream_buffer.data(),
staging_bitstream_buffer_offset);
static_cast<uint64_t>(staging_bitstream_buffer_offset));
// Save this to compare the final written destination byte size against the expected tile_group_obu_size
@@ -2699,11 +2699,11 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc,
" to comp_bit_destination %p at offset %" PRIu64 "\n",
tileGroup.tg_start,
tileGroup.tg_end,
bitstream_tile_group_obu_bytes,
static_cast<uint64_t>(bitstream_tile_group_obu_bytes),
staging_bitstream_buffer.data(),
staging_bitstream_buffer_offset,
static_cast<uint64_t>(staging_bitstream_buffer_offset),
comp_bit_destination,
comp_bit_destination_offset);
static_cast<uint64_t>(comp_bit_destination_offset));
comp_bit_destination_offset += bitstream_tile_group_obu_bytes;
written_bytes_to_staging_bitstream_buffer += bitstream_tile_group_obu_bytes;
@@ -2729,9 +2729,9 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc,
tileGroup.tg_start,
tileGroup.tg_end,
TileIdx,
TileSizeBytes,
static_cast<uint64_t>(TileSizeBytes),
staging_bitstream_buffer.data(),
(written_bytes_to_staging_bitstream_buffer + staging_bitstream_buffer_offset));
static_cast<uint64_t>(written_bytes_to_staging_bitstream_buffer + staging_bitstream_buffer_offset));
// Upload current tile_size_minus_1
// Note: The buffer_subdata is queued in pD3D12Enc->base.context but doesn't execute immediately
@@ -2751,11 +2751,11 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc,
tileGroup.tg_start,
tileGroup.tg_end,
TileIdx,
TileSizeBytes,
static_cast<uint64_t>(TileSizeBytes),
staging_bitstream_buffer.data(),
(written_bytes_to_staging_bitstream_buffer + staging_bitstream_buffer_offset),
static_cast<uint64_t>(written_bytes_to_staging_bitstream_buffer + staging_bitstream_buffer_offset),
comp_bit_destination,
comp_bit_destination_offset);
static_cast<uint64_t>(comp_bit_destination_offset));
comp_bit_destination_offset += TileSizeBytes;
written_bytes_to_staging_bitstream_buffer += TileSizeBytes;
@@ -2788,11 +2788,11 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc,
tileGroup.tg_start,
tileGroup.tg_end,
TileIdx,
tile_size,
static_cast<uint64_t>(tile_size),
src_driver_bitstream,
src_buf_tile_position,
static_cast<uint64_t>(src_buf_tile_position),
comp_bit_destination,
comp_bit_destination_offset);
static_cast<uint64_t>(comp_bit_destination_offset));
comp_bit_destination_offset += tile_size;
}

View File

@@ -153,7 +153,7 @@ d3d12_video_bitstream_builder_av1::write_temporal_delimiter_obu(std::vector<uint
write_obu_header(&bitstream_full_obu, OBU_TEMPORAL_DELIMITER, obu_extension_flag, temporal_id, spatial_id);
// Write the data size
const size_t obu_size_in_bytes = 0;
const uint64_t obu_size_in_bytes = 0;
debug_printf("obu_size: %" PRIu64 " (temporal_delimiter_obu() has empty payload as per AV1 codec spec)\n",
obu_size_in_bytes);
pack_obu_header_size(&bitstream_full_obu, obu_size_in_bytes);
@@ -197,7 +197,7 @@ d3d12_video_bitstream_builder_av1::write_sequence_header(const av1_seq_header_t
write_obu_header(&bitstream_full_obu, OBU_SEQUENCE_HEADER, obu_extension_flag, temporal_id, spatial_id);
// Write the data size
const size_t obu_size_in_bytes = static_cast<size_t>(bitstream_seq.get_byte_count());
const uint64_t obu_size_in_bytes = bitstream_seq.get_byte_count();
debug_printf("obu_size: %" PRIu64 "\n", obu_size_in_bytes);
pack_obu_header_size(&bitstream_full_obu, obu_size_in_bytes);
@@ -802,7 +802,7 @@ d3d12_video_bitstream_builder_av1::write_frame_header(const av1_seq_header_t *pS
debug_printf("frame_header_obu() bytes (without OBU_FRAME nor OBU_FRAME_HEADER alignment padding): %" PRId32 "\n",
bitstream_pic.get_byte_count()); // May be bit unaligned at this point (see padding below)
debug_printf("extra_obu_size_bytes (ie. tile_group_obu_size if writing OBU_FRAME ): %" PRIu64 "\n",
extra_obu_size_bytes);
static_cast<uint64_t>(extra_obu_size_bytes));
// Write the obu_header
constexpr uint32_t obu_extension_flag = 0;
@@ -825,7 +825,7 @@ d3d12_video_bitstream_builder_av1::write_frame_header(const av1_seq_header_t *pS
bitstream_pic.flush();
// Write the obu_size element
const size_t obu_size_in_bytes = bitstream_pic.get_byte_count() + extra_obu_size_bytes;
const uint64_t obu_size_in_bytes = bitstream_pic.get_byte_count() + extra_obu_size_bytes;
debug_printf("obu_size: %" PRIu64 "\n", obu_size_in_bytes);
pack_obu_header_size(&bitstream_full_obu, obu_size_in_bytes);
@@ -913,7 +913,7 @@ d3d12_video_bitstream_builder_av1::write_obu_tile_group_header(size_t tile_group
// Write the obu_size element
pack_obu_header_size(&bitstream_full_obu, tile_group_obu_size);
debug_printf("obu_size: %" PRIu64 "\n", tile_group_obu_size);
debug_printf("obu_size: %" PRIu64 "\n", static_cast<uint64_t>(tile_group_obu_size));
bitstream_full_obu.flush();

View File

@@ -213,7 +213,7 @@ d3d12_video_encoder_references_manager_av1::print_virtual_dpb_entries()
"Number of DPB virtual entries is %" PRIu64 " entries for frame with OrderHint "
"%d (PictureIndex %d) are: \n%s \n",
m_PhysicalAllocationsStorage.get_number_of_pics_in_dpb(),
m_CurrentFrameReferencesData.pVirtualDPBEntries.size(),
static_cast<uint64_t>(m_CurrentFrameReferencesData.pVirtualDPBEntries.size()),
m_CurrentFramePicParams.OrderHint,
m_CurrentFramePicParams.PictureIndex,
dpbContents.c_str());