OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "GrVkCommandBuffer.h" | 8 #include "GrVkCommandBuffer.h" |
9 | 9 |
10 #include "GrVkFramebuffer.h" | 10 #include "GrVkFramebuffer.h" |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 VkImageLayout srcLayout, | 244 VkImageLayout srcLayout, |
245 GrVkImage* dstImage, | 245 GrVkImage* dstImage, |
246 VkImageLayout dstLayout, | 246 VkImageLayout dstLayout, |
247 uint32_t copyRegionCount, | 247 uint32_t copyRegionCount, |
248 const VkImageCopy* copyRegions) { | 248 const VkImageCopy* copyRegions) { |
249 SkASSERT(fIsActive); | 249 SkASSERT(fIsActive); |
250 SkASSERT(!fActiveRenderPass); | 250 SkASSERT(!fActiveRenderPass); |
251 this->addResource(srcImage->resource()); | 251 this->addResource(srcImage->resource()); |
252 this->addResource(dstImage->resource()); | 252 this->addResource(dstImage->resource()); |
253 GR_VK_CALL(gpu->vkInterface(), CmdCopyImage(fCmdBuffer, | 253 GR_VK_CALL(gpu->vkInterface(), CmdCopyImage(fCmdBuffer, |
254 srcImage->textureImage(), | 254 srcImage->image(), |
255 srcLayout, | 255 srcLayout, |
256 dstImage->textureImage(), | 256 dstImage->image(), |
257 dstLayout, | 257 dstLayout, |
258 copyRegionCount, | 258 copyRegionCount, |
259 copyRegions)); | 259 copyRegions)); |
260 } | 260 } |
261 | 261 |
262 void GrVkCommandBuffer::blitImage(const GrVkGpu* gpu, | 262 void GrVkCommandBuffer::blitImage(const GrVkGpu* gpu, |
263 const GrVkImage::Resource* srcImage, | 263 const GrVkResource* srcResource, |
| 264 VkImage srcImage, |
264 VkImageLayout srcLayout, | 265 VkImageLayout srcLayout, |
265 const GrVkImage::Resource* dstImage, | 266 const GrVkResource* dstResource, |
| 267 VkImage dstImage, |
266 VkImageLayout dstLayout, | 268 VkImageLayout dstLayout, |
267 uint32_t blitRegionCount, | 269 uint32_t blitRegionCount, |
268 const VkImageBlit* blitRegions, | 270 const VkImageBlit* blitRegions, |
269 VkFilter filter) { | 271 VkFilter filter) { |
270 SkASSERT(fIsActive); | 272 SkASSERT(fIsActive); |
271 SkASSERT(!fActiveRenderPass); | 273 SkASSERT(!fActiveRenderPass); |
272 this->addResource(srcImage); | 274 this->addResource(srcResource); |
273 this->addResource(dstImage); | 275 this->addResource(dstResource); |
274 GR_VK_CALL(gpu->vkInterface(), CmdBlitImage(fCmdBuffer, | 276 GR_VK_CALL(gpu->vkInterface(), CmdBlitImage(fCmdBuffer, |
275 srcImage->fImage, | 277 srcImage, |
276 srcLayout, | 278 srcLayout, |
277 dstImage->fImage, | 279 dstImage, |
278 dstLayout, | 280 dstLayout, |
279 blitRegionCount, | 281 blitRegionCount, |
280 blitRegions, | 282 blitRegions, |
281 filter)); | 283 filter)); |
282 } | 284 } |
283 | 285 |
284 void GrVkCommandBuffer::copyImageToBuffer(const GrVkGpu* gpu, | 286 void GrVkCommandBuffer::copyImageToBuffer(const GrVkGpu* gpu, |
285 GrVkImage* srcImage, | 287 GrVkImage* srcImage, |
286 VkImageLayout srcLayout, | 288 VkImageLayout srcLayout, |
287 GrVkTransferBuffer* dstBuffer, | 289 GrVkTransferBuffer* dstBuffer, |
288 uint32_t copyRegionCount, | 290 uint32_t copyRegionCount, |
289 const VkBufferImageCopy* copyRegions)
{ | 291 const VkBufferImageCopy* copyRegions)
{ |
290 SkASSERT(fIsActive); | 292 SkASSERT(fIsActive); |
291 SkASSERT(!fActiveRenderPass); | 293 SkASSERT(!fActiveRenderPass); |
292 this->addResource(srcImage->resource()); | 294 this->addResource(srcImage->resource()); |
293 this->addResource(dstBuffer->resource()); | 295 this->addResource(dstBuffer->resource()); |
294 GR_VK_CALL(gpu->vkInterface(), CmdCopyImageToBuffer(fCmdBuffer, | 296 GR_VK_CALL(gpu->vkInterface(), CmdCopyImageToBuffer(fCmdBuffer, |
295 srcImage->textureImage()
, | 297 srcImage->image(), |
296 srcLayout, | 298 srcLayout, |
297 dstBuffer->buffer(), | 299 dstBuffer->buffer(), |
298 copyRegionCount, | 300 copyRegionCount, |
299 copyRegions)); | 301 copyRegions)); |
300 } | 302 } |
301 | 303 |
302 void GrVkCommandBuffer::copyBufferToImage(const GrVkGpu* gpu, | 304 void GrVkCommandBuffer::copyBufferToImage(const GrVkGpu* gpu, |
303 GrVkTransferBuffer* srcBuffer, | 305 GrVkTransferBuffer* srcBuffer, |
304 GrVkImage* dstImage, | 306 GrVkImage* dstImage, |
305 VkImageLayout dstLayout, | 307 VkImageLayout dstLayout, |
306 uint32_t copyRegionCount, | 308 uint32_t copyRegionCount, |
307 const VkBufferImageCopy* copyRegions)
{ | 309 const VkBufferImageCopy* copyRegions)
{ |
308 SkASSERT(fIsActive); | 310 SkASSERT(fIsActive); |
309 SkASSERT(!fActiveRenderPass); | 311 SkASSERT(!fActiveRenderPass); |
310 this->addResource(srcBuffer->resource()); | 312 this->addResource(srcBuffer->resource()); |
311 this->addResource(dstImage->resource()); | 313 this->addResource(dstImage->resource()); |
312 GR_VK_CALL(gpu->vkInterface(), CmdCopyBufferToImage(fCmdBuffer, | 314 GR_VK_CALL(gpu->vkInterface(), CmdCopyBufferToImage(fCmdBuffer, |
313 srcBuffer->buffer(), | 315 srcBuffer->buffer(), |
314 dstImage->textureImage()
, | 316 dstImage->image(), |
315 dstLayout, | 317 dstLayout, |
316 copyRegionCount, | 318 copyRegionCount, |
317 copyRegions)); | 319 copyRegions)); |
318 } | 320 } |
319 | 321 |
320 void GrVkCommandBuffer::clearColorImage(const GrVkGpu* gpu, | 322 void GrVkCommandBuffer::clearColorImage(const GrVkGpu* gpu, |
321 GrVkImage* image, | 323 GrVkImage* image, |
322 const VkClearColorValue* color, | 324 const VkClearColorValue* color, |
323 uint32_t subRangeCount, | 325 uint32_t subRangeCount, |
324 const VkImageSubresourceRange* subRanges
) { | 326 const VkImageSubresourceRange* subRanges
) { |
325 SkASSERT(fIsActive); | 327 SkASSERT(fIsActive); |
326 SkASSERT(!fActiveRenderPass); | 328 SkASSERT(!fActiveRenderPass); |
327 this->addResource(image->resource()); | 329 this->addResource(image->resource()); |
328 GR_VK_CALL(gpu->vkInterface(), CmdClearColorImage(fCmdBuffer, | 330 GR_VK_CALL(gpu->vkInterface(), CmdClearColorImage(fCmdBuffer, |
329 image->textureImage(), | 331 image->image(), |
330 image->currentLayout(), | 332 image->currentLayout(), |
331 color, | 333 color, |
332 subRangeCount, | 334 subRangeCount, |
333 subRanges)); | 335 subRanges)); |
334 } | 336 } |
335 | 337 |
336 void GrVkCommandBuffer::clearDepthStencilImage(const GrVkGpu* gpu, | 338 void GrVkCommandBuffer::clearDepthStencilImage(const GrVkGpu* gpu, |
337 GrVkImage* image, | 339 GrVkImage* image, |
338 const VkClearDepthStencilValue* c
olor, | 340 const VkClearDepthStencilValue* c
olor, |
339 uint32_t subRangeCount, | 341 uint32_t subRangeCount, |
340 const VkImageSubresourceRange* su
bRanges) { | 342 const VkImageSubresourceRange* su
bRanges) { |
341 SkASSERT(fIsActive); | 343 SkASSERT(fIsActive); |
342 SkASSERT(!fActiveRenderPass); | 344 SkASSERT(!fActiveRenderPass); |
343 this->addResource(image->resource()); | 345 this->addResource(image->resource()); |
344 GR_VK_CALL(gpu->vkInterface(), CmdClearDepthStencilImage(fCmdBuffer, | 346 GR_VK_CALL(gpu->vkInterface(), CmdClearDepthStencilImage(fCmdBuffer, |
345 image->textureImage
(), | 347 image->image(), |
346 image->currentLayou
t(), | 348 image->currentLayou
t(), |
347 color, | 349 color, |
348 subRangeCount, | 350 subRangeCount, |
349 subRanges)); | 351 subRanges)); |
350 } | 352 } |
351 | 353 |
352 void GrVkCommandBuffer::clearAttachments(const GrVkGpu* gpu, | 354 void GrVkCommandBuffer::clearAttachments(const GrVkGpu* gpu, |
353 int numAttachments, | 355 int numAttachments, |
354 const VkClearAttachment* attachments, | 356 const VkClearAttachment* attachments, |
355 int numRects, | 357 int numRects, |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
463 } | 465 } |
464 | 466 |
465 void GrVkCommandBuffer::setBlendConstants(const GrVkGpu* gpu, | 467 void GrVkCommandBuffer::setBlendConstants(const GrVkGpu* gpu, |
466 const float blendConstants[4]) { | 468 const float blendConstants[4]) { |
467 SkASSERT(fIsActive); | 469 SkASSERT(fIsActive); |
468 if (memcmp(blendConstants, fCachedBlendConstant, 4 * sizeof(float))) { | 470 if (memcmp(blendConstants, fCachedBlendConstant, 4 * sizeof(float))) { |
469 GR_VK_CALL(gpu->vkInterface(), CmdSetBlendConstants(fCmdBuffer, blendCon
stants)); | 471 GR_VK_CALL(gpu->vkInterface(), CmdSetBlendConstants(fCmdBuffer, blendCon
stants)); |
470 memcpy(fCachedBlendConstant, blendConstants, 4 * sizeof(float)); | 472 memcpy(fCachedBlendConstant, blendConstants, 4 * sizeof(float)); |
471 } | 473 } |
472 } | 474 } |
OLD | NEW |