@@ -158,6 +158,12 @@ static void cudaImportNvSciImage(cudaExternalResInterop &cudaExtResObj,
158
158
pairArrayOut[numAttrs++].key = NvSciBufImageAttrKey_Layout;
159
159
pairArrayOut[numAttrs++].key = NvSciBufImageAttrKey_PlaneBitsPerPixel;
160
160
pairArrayOut[numAttrs++].key = NvSciBufImageAttrKey_PlaneOffset;
161
+ pairArrayOut[numAttrs++].key = NvSciBufImageAttrKey_PlanePitch;
162
+ pairArrayOut[numAttrs++].key = NvSciBufImageAttrKey_PlaneAlignedHeight;
163
+
164
+ uint32_t planePitchs[10 ];
165
+ uint32_t planePixel[10 ];
166
+ uint32_t planeAlignedHeight[10 ];
161
167
162
168
checkNvSciErrors (NvSciBufAttrListGetAttrs (attrlist, pairArrayOut, numAttrs));
163
169
@@ -177,6 +183,13 @@ static void cudaImportNvSciImage(cudaExternalResInterop &cudaExtResObj,
177
183
cudaExtResObj.planeCount * sizeof (int32_t ));
178
184
memcpy (cudaExtResObj.planeOffset , (uint64_t *)pairArrayOut[7 ].value ,
179
185
cudaExtResObj.planeCount * sizeof (uint64_t ));
186
+ memcpy (planePixel, (uint32_t *)pairArrayOut[6 ].value ,
187
+ cudaExtResObj.planeCount * sizeof (uint32_t ));
188
+ memcpy (planePitchs, (uint32_t *)pairArrayOut[8 ].value ,
189
+ cudaExtResObj.planeCount * sizeof (uint32_t ));
190
+ memcpy (planeAlignedHeight, (uint32_t *)pairArrayOut[9 ].value ,
191
+ cudaExtResObj.planeCount * sizeof (uint32_t ));
192
+
180
193
181
194
NvSciBufAttrValImageLayoutType layout =
182
195
*(NvSciBufAttrValImageLayoutType *)pairArrayOut[5 ].value ;
@@ -201,8 +214,8 @@ static void cudaImportNvSciImage(cudaExternalResInterop &cudaExtResObj,
201
214
for (int i = 0 ; i < cudaExtResObj.planeCount ; i++) {
202
215
cudaExtent extent = {};
203
216
memset (&extent, 0 , sizeof (extent));
204
- extent.width = cudaExtResObj. imageWidth [i];
205
- extent.height = cudaExtResObj. imageHeight [i];
217
+ extent.width = planePitchs [i] / (planePixel[i] / 8 ) ;
218
+ extent.height = planeAlignedHeight [i];
206
219
extent.depth = 0 ;
207
220
cudaChannelFormatDesc desc;
208
221
switch (channelCount) {
0 commit comments