summaryrefslogtreecommitdiff
path: root/media-libs/mesa/files/23.3.1-d3d12-Fix-AV1-video-encode-32-bits-build.patch
blob: 981d10dac1788dfaccf40d1e04de06258e32d373 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
https://bugs.gentoo.org/920288
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26777

From 070563c4b61dfe56cde0508e0adf9d585c220a49 Mon Sep 17 00:00:00 2001
From: Sil Vilerino <sivileri@microsoft.com>
Date: Wed, 6 Dec 2023 20:09:44 -0500
Subject: [PATCH] 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 096e17b57832e96e36fc27f70e7a0e5ccbb0ac8a)
---
 .../drivers/d3d12/d3d12_video_enc_av1.cpp     | 58 +++++++++----------
 ...12_video_encoder_bitstream_builder_av1.cpp | 10 ++--
 ...2_video_encoder_references_manager_av1.cpp |  2 +-
 3 files changed, 35 insertions(+), 35 deletions(-)

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());
-- 
2.41.0