Module: Mesa Branch: staging/23.3 Commit: 771c65fe5f183347b4295b6ef87d34b0f77f72e1 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=771c65fe5f183347b4295b6ef87d34b0f77f72e1
Author: Sil Vilerino <[email protected]> Date: Wed Dec 6 20:09:44 2023 -0500 d3d12: Fix AV1 video encode 32 bits build Reviewed-by: Jesse Natalie <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26573> (cherry picked from commit 096e17b57832e96e36fc27f70e7a0e5ccbb0ac8a) --- .pick_status.json | 2 +- src/gallium/drivers/d3d12/d3d12_video_enc_av1.cpp | 58 +++++++++++----------- .../d3d12_video_encoder_bitstream_builder_av1.cpp | 10 ++-- .../d3d12_video_encoder_references_manager_av1.cpp | 2 +- 4 files changed, 36 insertions(+), 36 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index abc560dd200..f7837a6437d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -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 diff --git a/src/gallium/drivers/d3d12/d3d12_video_enc_av1.cpp b/src/gallium/drivers/d3d12/d3d12_video_enc_av1.cpp index 2c1964aa274..a5e2a2e3d39 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_enc_av1.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_enc_av1.cpp @@ -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; } diff --git a/src/gallium/drivers/d3d12/d3d12_video_encoder_bitstream_builder_av1.cpp b/src/gallium/drivers/d3d12/d3d12_video_encoder_bitstream_builder_av1.cpp index 25550a2b4fb..96b7e32eb8e 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_encoder_bitstream_builder_av1.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_encoder_bitstream_builder_av1.cpp @@ -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(); diff --git a/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_av1.cpp b/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_av1.cpp index 49892338984..2f4bcf0e1eb 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_av1.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_av1.cpp @@ -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());
