• Home
  • Raw
  • Download

Lines Matching +full:stretch +full:- +full:updates

3 // Use of this source code is governed by a BSD-style license that can be
45 angle::FormatID srcFormatID = srcRenderTarget->getImageActualFormatID(); in HasSrcBlitFeature()
46 return renderer->hasImageFormatFeatureBits(srcFormatID, VK_FORMAT_FEATURE_BLIT_SRC_BIT); in HasSrcBlitFeature()
51 angle::FormatID dstFormatID = dstRenderTarget->getImageActualFormatID(); in HasDstBlitFeature()
52 return renderer->hasImageFormatFeatureBits(dstFormatID, VK_FORMAT_FEATURE_BLIT_DST_BIT); in HasDstBlitFeature()
60 const angle::Format &srcFormat = srcRenderTarget->getImageIntendedFormat(); in AreSrcAndDstColorChannelsBlitCompatible()
61 const angle::Format &dstFormat = dstRenderTarget->getImageIntendedFormat(); in AreSrcAndDstColorChannelsBlitCompatible()
80 angle::FormatID srcFormatID = srcRenderTarget->getImageActualFormatID(); in AreSrcAndDstFormatsIdentical()
81 angle::FormatID dstFormatID = dstRenderTarget->getImageActualFormatID(); in AreSrcAndDstFormatsIdentical()
89 const angle::Format &srcFormat = srcRenderTarget->getImageIntendedFormat(); in AreSrcAndDstDepthStencilChannelsBlitCompatible()
90 const angle::Format &dstFormat = dstRenderTarget->getImageIntendedFormat(); in AreSrcAndDstDepthStencilChannelsBlitCompatible()
133 blitAreaOut->x = blitAreaIn.y; in AdjustBlitAreaForPreRotation()
134 blitAreaOut->y = blitAreaIn.x; in AdjustBlitAreaForPreRotation()
135 std::swap(blitAreaOut->width, blitAreaOut->height); in AdjustBlitAreaForPreRotation()
138 blitAreaOut->x = framebufferDimensions.width - blitAreaIn.x - blitAreaIn.width; in AdjustBlitAreaForPreRotation()
139 blitAreaOut->y = framebufferDimensions.height - blitAreaIn.y - blitAreaIn.height; in AdjustBlitAreaForPreRotation()
142 blitAreaOut->x = framebufferDimensions.height - blitAreaIn.y - blitAreaIn.height; in AdjustBlitAreaForPreRotation()
143 blitAreaOut->y = framebufferDimensions.width - blitAreaIn.x - blitAreaIn.width; in AdjustBlitAreaForPreRotation()
144 std::swap(blitAreaOut->width, blitAreaOut->height); in AdjustBlitAreaForPreRotation()
163 std::swap(framebufferDimensions->width, framebufferDimensions->height); in AdjustDimensionsAndFlipForPreRotation()
169 std::swap(framebufferDimensions->width, framebufferDimensions->height); in AdjustDimensionsAndFlipForPreRotation()
187 params->srcOffset[0] = sourceArea.x; in AdjustBlitResolveParametersForResolve()
188 params->srcOffset[1] = sourceArea.y; in AdjustBlitResolveParametersForResolve()
189 params->dstOffset[0] = destArea.x; in AdjustBlitResolveParametersForResolve()
190 params->dstOffset[1] = destArea.y; in AdjustBlitResolveParametersForResolve()
195 --params->srcOffset[0]; in AdjustBlitResolveParametersForResolve()
200 --params->srcOffset[1]; in AdjustBlitResolveParametersForResolve()
205 --params->dstOffset[0]; in AdjustBlitResolveParametersForResolve()
210 --params->dstOffset[1]; in AdjustBlitResolveParametersForResolve()
214 // Potentially make adjustments for pre-rotatation. Depending on the angle some of the params need
225 std::swap(params->stretch[0], params->stretch[1]); in AdjustBlitResolveParametersForPreRotation()
226 std::swap(params->srcOffset[0], params->srcOffset[1]); in AdjustBlitResolveParametersForPreRotation()
227 std::swap(params->rotatedOffsetFactor[0], params->rotatedOffsetFactor[1]); in AdjustBlitResolveParametersForPreRotation()
228 std::swap(params->flipX, params->flipY); in AdjustBlitResolveParametersForPreRotation()
231 std::swap(params->dstOffset[0], params->dstOffset[1]); in AdjustBlitResolveParametersForPreRotation()
232 std::swap(params->stretch[0], params->stretch[1]); in AdjustBlitResolveParametersForPreRotation()
237 params->flipX = !params->flipX; in AdjustBlitResolveParametersForPreRotation()
238 params->flipY = !params->flipY; in AdjustBlitResolveParametersForPreRotation()
241 std::swap(params->stretch[0], params->stretch[1]); in AdjustBlitResolveParametersForPreRotation()
242 std::swap(params->srcOffset[0], params->srcOffset[1]); in AdjustBlitResolveParametersForPreRotation()
243 std::swap(params->rotatedOffsetFactor[0], params->rotatedOffsetFactor[1]); in AdjustBlitResolveParametersForPreRotation()
246 std::swap(params->stretch[0], params->stretch[1]); in AdjustBlitResolveParametersForPreRotation()
249 params->flipX = !params->flipX; in AdjustBlitResolveParametersForPreRotation()
250 params->flipY = !params->flipY; in AdjustBlitResolveParametersForPreRotation()
251 std::swap(params->flipX, params->flipY); in AdjustBlitResolveParametersForPreRotation()
283 const vk::ImageHelper &image = colorRenderTarget->getImageForRenderPass(); in IsAnyAttachment3DWithoutAllLayers()
293 renderTargetCache.getDepthStencil()->getImageForRenderPass().getType() != in IsAnyAttachment3DWithoutAllLayers()
308 ASSERT(offsetsStart->z == 0); in AdjustLayersAndDepthFor3DImages()
309 ASSERT(offsetsEnd->z == 1); in AdjustLayersAndDepthFor3DImages()
311 offsetsStart->z = subresource->baseArrayLayer; in AdjustLayersAndDepthFor3DImages()
312 offsetsEnd->z = subresource->baseArrayLayer + subresource->layerCount; in AdjustLayersAndDepthFor3DImages()
314 subresource->baseArrayLayer = 0; in AdjustLayersAndDepthFor3DImages()
315 subresource->layerCount = 1; in AdjustLayersAndDepthFor3DImages()
320 // When in render-to-texture emulation mode, there are already resolve attachments present, and in AllowAddingResolveAttachmentsToSubpass()
342 mIsCurrentFramebufferCached = !renderer->getFeatures().supportsImagelessFramebuffer.enabled; in FramebufferVk()
354 vk::Renderer *renderer = contextVk->getRenderer(); in destroy()
367 contextVk->getShareGroup()->getFramebufferCache().insert(contextVk, desc, in insertCache()
380 colorRenderTargets[colorIndexGL]->onNewFramebuffer(sharedFramebufferCacheKey); in insertCache()
385 getDepthStencilRenderTarget()->onNewFramebuffer(sharedFramebufferCacheKey); in insertCache()
416 RotateRectangle(contextVk->getRotationDrawFramebuffer(), in invalidateSub()
417 contextVk->isViewportFlipEnabledForDrawFBO(), in invalidateSub()
436 if (contextVk->hasActiveRenderPass() && in invalidateSub()
437 rotatedInvalidateArea.encloses(contextVk->getStartedRenderPassCommands().getRenderArea())) in invalidateSub()
468 const VkClearColorValue &clearColorValue = contextVk->getClearColorValue().color; in clear()
470 contextVk->getClearDepthStencilValue().depthStencil; in clear()
479 // Truncate x to b bits: round(x * (2^b-1)) / (2^b-1) in adjustFloatClearColorPrecision()
480 // Implemented as floor(x * ((1 << b) - 1) + 0.5) / ((1 << b) - 1) in adjustFloatClearColorPrecision()
484 floatClearColorRed = floor(floatClearColorRed * ((1 << targetRedBits) - 1) + 0.5f); in adjustFloatClearColorPrecision()
485 floatClearColorRed = floatClearColorRed / ((1 << targetRedBits) - 1); in adjustFloatClearColorPrecision()
489 floatClearColorGreen = floor(floatClearColorGreen * ((1 << targetGreenBits) - 1) + 0.5f); in adjustFloatClearColorPrecision()
490 floatClearColorGreen = floatClearColorGreen / ((1 << targetGreenBits) - 1); in adjustFloatClearColorPrecision()
494 floatClearColorBlue = floor(floatClearColorBlue * ((1 << targetBlueBits) - 1) + 0.5f); in adjustFloatClearColorPrecision()
495 floatClearColorBlue = floatClearColorBlue / ((1 << targetBlueBits) - 1); in adjustFloatClearColorPrecision()
499 floatClearColorAlpha = floor(floatClearColorAlpha * ((1 << targetAlphaBits) - 1) + 0.5f); in adjustFloatClearColorPrecision()
500 floatClearColorAlpha = floatClearColorAlpha / ((1 << targetAlphaBits) - 1); in adjustFloatClearColorPrecision()
532 gl::BlendStateExt::ColorMaskStorage::Type colorMasks = contextVk->getClearColorMasks(); in clearImpl()
555 colorRenderTarget->hasColorspaceOverrideForWrite(); in clearImpl()
557 if (colorRenderTarget->isYuvResolve()) in clearImpl()
570 else if (contextVk->getFeatures().adjustClearColorPrecision.enabled) in clearImpl()
573 colorRenderTarget->getImageForRenderPass().getActualFormatID(); in clearImpl()
586 static_cast<uint8_t>(contextVk->getState().getDepthStencilState().stencilWritemask); in clearImpl()
588 // The front-end should ensure we don't attempt to clear color if all channels are masked. in clearImpl()
590 // The front-end should ensure we don't attempt to clear depth if depth write is disabled. in clearImpl()
591 ASSERT(!clearDepth || contextVk->getState().getDepthStencilState().depthMask); in clearImpl()
592 // The front-end should ensure we don't attempt to clear stencil if all bits are masked. in clearImpl()
595 // Make sure to close the render pass now if in read-only depth/stencil feedback loop mode and in clearImpl()
599 ANGLE_TRY(contextVk->updateRenderPassDepthFeedbackLoopMode( in clearImpl()
619 contextVk->hasStartedRenderPassWithQueueSerial(mLastRenderPassQueueSerial) && in clearImpl()
620 !contextVk->getStartedRenderPassCommands().getCommandBuffer().empty(); in clearImpl()
623 // Emit debug-util markers for this mid-render-pass clear in clearImpl()
625 contextVk->handleGraphicsEventLog(rx::GraphicsEventCmdBuf::InRenderPassCmdBufQueryCmd)); in clearImpl()
629 ASSERT(!contextVk->hasActiveRenderPass() || in clearImpl()
630 contextVk->hasStartedRenderPassWithQueueSerial(mLastRenderPassQueueSerial)); in clearImpl()
631 // Emit debug-util markers for this outside-render-pass clear in clearImpl()
633 contextVk->handleGraphicsEventLog(rx::GraphicsEventCmdBuf::InOutsideCmdBufQueryCmd)); in clearImpl()
637 contextVk->getFeatures().preferDrawClearOverVkCmdClearAttachments.enabled; in clearImpl()
642 // operation; say attachment A is deferred cleared and multisampled-render-to-texture in clearImpl()
707 if (contextVk->hasActiveRenderPass()) in clearImpl()
767 if (!contextVk->hasActiveRenderPass()) in clearImpl()
772 ANGLE_TRY(contextVk->startRenderPass(renderArea, &commandBuffer, nullptr)); in clearImpl()
916 GLenum sizedFormat = mState.getReadAttachment()->getFormat().info->sizedInternalFormat; in getImplementationColorReadFormat()
917 const vk::Format &vkFormat = contextVk->getRenderer()->getFormat(sizedFormat); in getImplementationColorReadFormat()
931 const gl::Extents &fbSize = getState().getReadPixelsAttachment(format)->getSize(); in readPixels()
950 bool flipY = contextVk->isViewportFlipEnabledForReadFBO(); in readPixels()
951 switch (params.rotation = contextVk->getRotationReadFramebuffer()) in readPixels()
957 params.area.y = fbRect.height - clippedArea.y - clippedArea.height; in readPixels()
964 flipY ? clippedArea.x : fbRect.width - clippedArea.x - clippedArea.width; in readPixels()
969 params.area.x = fbRect.width - clippedArea.x - clippedArea.width; in readPixels()
971 flipY ? clippedArea.y : fbRect.height - clippedArea.y - clippedArea.height; in readPixels()
975 params.area.x = fbRect.height - clippedArea.y - clippedArea.height; in readPixels()
977 flipY ? fbRect.width - clippedArea.x - clippedArea.width : clippedArea.x; in readPixels()
998 ASSERT(renderTarget && renderTarget->getImageForRenderPass().valid()); in getColorDrawRenderTarget()
1005 ASSERT(renderTarget && renderTarget->getImageForRenderPass().valid()); in getColorReadRenderTarget()
1054 vk::ImageHelper *srcImage = &readRenderTarget->getImageForCopy(); in blitWithCommand()
1055 vk::ImageHelper *dstImage = &drawRenderTarget->getImageForWrite(); in blitWithCommand()
1057 VkImageAspectFlags imageAspectMask = srcImage->getAspectFlags(); in blitWithCommand()
1072 access.onImageTransferWrite(drawRenderTarget->getLevelIndex(), 1, in blitWithCommand()
1073 drawRenderTarget->getLayerIndex(), 1, imageAspectMask, dstImage); in blitWithCommand()
1075 ANGLE_TRY(contextVk->getOutsideRenderPassCommandBuffer(access, &commandBuffer)); in blitWithCommand()
1079 blit.srcSubresource.mipLevel = srcImage->toVkLevel(readRenderTarget->getLevelIndex()).get(); in blitWithCommand()
1080 blit.srcSubresource.baseArrayLayer = readRenderTarget->getLayerIndex(); in blitWithCommand()
1085 blit.dstSubresource.mipLevel = dstImage->toVkLevel(drawRenderTarget->getLevelIndex()).get(); in blitWithCommand()
1086 blit.dstSubresource.baseArrayLayer = drawRenderTarget->getLayerIndex(); in blitWithCommand()
1092 // usage restrictions (https://gitlab.khronos.org/vulkan/vulkan/-/issues/3490), but drivers seem in blitWithCommand()
1095 const bool isSrc3D = srcImage->getType() == VK_IMAGE_TYPE_3D; in blitWithCommand()
1096 const bool isDst3D = dstImage->getType() == VK_IMAGE_TYPE_3D; in blitWithCommand()
1108 commandBuffer->blitImage(srcImage->getImage(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, in blitWithCommand()
1109 dstImage->getImage(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &blit, in blitWithCommand()
1122 vk::Renderer *renderer = contextVk->getRenderer(); in blit()
1123 UtilsVk &utilsVk = contextVk->getUtils(); in blit()
1129 const gl::State &glState = contextVk->getState(); in blit()
1132 if (srcFramebufferVk->mDeferredClears.any()) in blit()
1134 srcFramebufferVk->restageDeferredClearsForReadFramebuffer(contextVk); in blit()
1145 // If a framebuffer contains a mixture of multisampled and multisampled-render-to-texture in blit()
1148 // path cannot be taken for multisampled-render-to-texture attachments, the distinction of in blit()
1152 srcFramebufferVk->getColorReadRenderTarget()->getImageForCopy().getSamples() > 1; in blit()
1155 srcFramebufferVk->getDepthStencilRenderTarget()->getImageForCopy().getSamples() > 1; in blit()
1158 bool srcFramebufferFlippedY = contextVk->isViewportFlipEnabledForReadFBO(); in blit()
1159 bool dstFramebufferFlippedY = contextVk->isViewportFlipEnabledForDrawFBO(); in blit()
1170 gl::Rectangle srcFramebufferDimensions = srcFramebufferVk->getNonRotatedCompleteRenderArea(); in blit()
1178 // Calculate the stretch factor prior to any clipping, as it needs to remain constant. in blit()
1179 const double stretch[2] = { in blit() local
1184 // Potentially make adjustments for pre-rotatation. To handle various cases (e.g. clipping) in blit()
1187 // y-axis, and to note the overall rotation (regardless of whether it is the source or in blit()
1189 SurfaceRotation srcFramebufferRotation = contextVk->getRotationReadFramebuffer(); in blit()
1190 SurfaceRotation dstFramebufferRotation = contextVk->getRotationDrawFramebuffer(); in blit()
1208 // Resize the destination area based on the new size of source. Note again that stretch is in blit()
1230 double x0Shift = std::round((clippedSourceArea.x - absSourceArea.x) / stretch[0]); in blit()
1231 double y0Shift = std::round((clippedSourceArea.y - absSourceArea.y) / stretch[1]); in blit()
1232 double x1Shift = std::round((absSourceArea.x1() - clippedSourceArea.x1()) / stretch[0]); in blit()
1233 double y1Shift = std::round((absSourceArea.y1() - clippedSourceArea.y1()) / stretch[1]); in blit()
1249 int x1 = destArea.x1() - static_cast<int>(x1Shift); in blit()
1250 int y1 = destArea.y1() - static_cast<int>(y1Shift); in blit()
1252 srcClippedDestArea.width = x1 - srcClippedDestArea.x; in blit()
1253 srcClippedDestArea.height = y1 - srcClippedDestArea.y; in blit()
1269 sourceArea.y = srcFramebufferDimensions.height - sourceArea.y; in blit()
1270 sourceArea.height = -sourceArea.height; in blit()
1274 destArea.y = dstFramebufferDimensions.height - destArea.y; in blit()
1275 destArea.height = -destArea.height; in blit()
1278 dstFramebufferDimensions.height - srcClippedDestArea.y - srcClippedDestArea.height; in blit()
1289 // destArea was not reversed until the final possible Y-flip. in blit()
1316 // and destination rectangles. The stretch factor is already calculated as well. in blit()
1323 bool noClip = blitArea == destArea && stretch[0] == 1.0f && stretch[1] == 1.0f; in blit()
1326 renderer->getFeatures().disableFlippingBlitWithCommand.enabled; in blit()
1335 commonParams.stretch[0] = static_cast<float>(stretch[0]); in blit()
1336 commonParams.stretch[1] = static_cast<float>(stretch[1]); in blit()
1347 RenderTargetVk *readRenderTarget = srcFramebufferVk->getColorReadRenderTarget(); in blit()
1349 params.srcLayer = readRenderTarget->getLayerIndex(); in blit()
1352 ASSERT(!isColorResolve || readRenderTarget->getLevelIndex() == gl::LevelIndex(0)); in blit()
1359 // Non-identity pre-rotation cases do not use Vulkan's builtin blit. Additionally, blits in blit()
1360 // between 3D and non-3D-non-layer-0 images are forbidden (possibly due to an oversight: in blit()
1361 // https://gitlab.khronos.org/vulkan/vulkan/-/issues/3490) in blit()
1370 bool reinterpretsColorspace = readRenderTarget->hasColorspaceOverrideForRead(); in blit()
1388 colorAttachmentAlreadyInUse || contextVk->isRenderPassStartedAndUsesImage( in blit()
1389 drawRenderTarget->getImageForRenderPass()); in blit()
1394 reinterpretsColorspace || drawRenderTarget->hasColorspaceOverrideForWrite(); in blit()
1428 // already done and whose data is already flushed from the tile (in a tile-based in blit()
1440 contextVk->hasStartedRenderPassWithQueueSerial( in blit()
1441 srcFramebufferVk->getLastRenderPassQueueSerial()) && in blit()
1447 contextVk->getStartedRenderPassCommands(); in blit()
1451 // - The blit and render areas are identical in blit()
1452 // - There is no resolve attachment for the corresponding index already in blit()
1455 const uint32_t readColorIndexGL = srcFramebuffer->getState().getReadIndex(); in blit()
1469 &readRenderTarget->getImageForCopy())); in blit()
1480 contextVk->flushCommandsAndEndRenderPass(RenderPassClosureReason::PrepareForBlit)); in blit()
1483 ANGLE_TRY(readRenderTarget->getCopyImageView(contextVk, &copyImageView)); in blit()
1485 contextVk, this, &readRenderTarget->getImageForCopy(), copyImageView, params)); in blit()
1491 RenderTargetVk *readRenderTarget = srcFramebufferVk->getDepthStencilRenderTarget(); in blit()
1494 params.srcLayer = readRenderTarget->getLayerIndex(); in blit()
1497 ASSERT(!isDepthStencilResolve || readRenderTarget->getLevelIndex() == gl::LevelIndex(0)); in blit()
1518 vk::ImageHelper *depthStencilImage = &readRenderTarget->getImageForCopy(); in blit()
1533 !renderer->getFeatures().disableDepthStencilResolveThroughAttachment.enabled && in blit()
1535 contextVk->hasStartedRenderPassWithQueueSerial( in blit()
1536 srcFramebufferVk->getLastRenderPassQueueSerial()) && in blit()
1537 !contextVk->isRenderPassStartedAndUsesImage( in blit()
1538 drawRenderTarget->getImageForRenderPass()) && in blit()
1544 contextVk->getStartedRenderPassCommands(); in blit()
1548 depthStencilImage->getAspectFlags(); in blit()
1553 // - The blit and render areas are identical in blit()
1554 // - There is no resolve attachment already in blit()
1565 renderer->getFeatures().supportsDepthStencilIndependentResolveNone.enabled) && in blit()
1576 // See comment for the draw-based color blit. The render pass must be flushed in blit()
1578 ANGLE_TRY(contextVk->flushCommandsAndEndRenderPass( in blit()
1589 // Get depth- and stencil-only views for reading. in blit()
1595 ANGLE_TRY(readRenderTarget->getDepthOrStencilImageViewForCopy( in blit()
1601 ANGLE_TRY(readRenderTarget->getDepthOrStencilImageViewForCopy( in blit()
1608 renderer->getFeatures().supportsShaderStencilExport.enabled; in blit()
1643 contextVk->addGarbage(&mCurrentFramebuffer); in releaseCurrentFramebuffer()
1657 layerCount = std::min(layerCount, colorRenderTarget->getLayerCount()); in updateLayerCount()
1664 layerCount = std::min(layerCount, depthStencilRenderTarget->getLayerCount()); in updateLayerCount()
1690 vk::Renderer *renderer = contextVk->getRenderer(); in ensureFragmentShadingRateImageAndViewInitialized()
1707 if (!contextVk->getFeatures().generateFragmentShadingRateAttchementWithCpu.enabled) in ensureFragmentShadingRateImageAndViewInitialized()
1715 renderer->getFormat(angle::FormatID::R8_UINT), 1, imageUsageFlags, gl::LevelIndex(0), 1, in ensureFragmentShadingRateImageAndViewInitialized()
1716 1, false, contextVk->getProtectionType() == vk::ProtectionType::Protected)); in ensureFragmentShadingRateImageAndViewInitialized()
1718 ANGLE_TRY(contextVk->initImageAllocation( in ensureFragmentShadingRateImageAndViewInitialized()
1719 &mFragmentShadingRateImage, false, renderer->getMemoryProperties(), in ensureFragmentShadingRateImageAndViewInitialized()
1747 vk::RendererScoped<vk::BufferHelper> stagingBuffer(contextVk->getRenderer()); in generateFragmentShadingRateWithCPU()
1749 ANGLE_TRY(buffer->init(contextVk, bufferCreateInfo, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)); in generateFragmentShadingRateWithCPU()
1751 ANGLE_TRY(buffer->map(contextVk, &mappedBuffer)); in generateFragmentShadingRateWithCPU()
1755 // The spec requires min_pixel_density to be computed thusly - in generateFragmentShadingRateWithCPU()
1760 // focal_point_density = 1./max((focalX[i]-px)^2*gainX[i]^2+ in generateFragmentShadingRateWithCPU()
1761 // (focalY[i]-py)^2*gainY[i]^2-foveaArea[i],1.); in generateFragmentShadingRateWithCPU()
1773 (static_cast<float>(x) * fragmentShadingRateBlockWidth / foveatedAttachmentWidth - in generateFragmentShadingRateWithCPU()
1777 (static_cast<float>(y) * fragmentShadingRateBlockHeight / foveatedAttachmentHeight - in generateFragmentShadingRateWithCPU()
1783 float density = 1.0f / std::max(std::pow(focalPoint.focalX - px, 2.0f) * in generateFragmentShadingRateWithCPU()
1785 std::pow(focalPoint.focalY - py, 2.0f) * in generateFragmentShadingRateWithCPU()
1786 std::pow(focalPoint.gainY, 2.0f) - in generateFragmentShadingRateWithCPU()
1798 …ps://docs.vulkan.org/spec/latest/chapters/primsrast.html#primsrast-fragment-shading-rate-attachment in generateFragmentShadingRateWithCPU()
1804 // 1) The supported shading rates are - 1x1, 1x2, 2x1, 2x2 in generateFragmentShadingRateWithCPU()
1825 ANGLE_TRY(buffer->flush(contextVk->getRenderer(), 0, buffer->getSize())); in generateFragmentShadingRateWithCPU()
1826 buffer->unmap(contextVk->getRenderer()); in generateFragmentShadingRateWithCPU()
1833 ANGLE_TRY(contextVk->getOutsideRenderPassCommandBuffer(access, &dataUpload)); in generateFragmentShadingRateWithCPU()
1840 dataUpload->copyBufferToImage(buffer->getBuffer().getHandle(), in generateFragmentShadingRateWithCPU()
1875 return contextVk->getUtils().generateFragmentShadingRate( in generateFragmentShadingRateWithCompute()
1885 contextVk->getRenderer()->getMaxFragmentShadingRateAttachmentTexelSize(); in updateFragmentShadingRateAttachment()
1910 if (contextVk->getFeatures().generateFragmentShadingRateAttchementWithCpu.enabled) in updateFragmentShadingRateAttachment()
1962 ANGLE_TRY(drawRenderTarget->getImageView(contextVk, &resolveImageView)); in resolveColorWithSubpass()
1964 const gl::Framebuffer *srcFramebuffer = contextVk->getState().getReadFramebuffer(); in resolveColorWithSubpass()
1965 uint32_t readColorIndexGL = srcFramebuffer->getState().getReadIndex(); in resolveColorWithSubpass()
1968 contextVk->getStartedRenderPassCommands(); in resolveColorWithSubpass()
1971 drawRenderTarget->onColorResolve(contextVk, mCurrentFramebufferDesc.getLayerCount(), in resolveColorWithSubpass()
1976 contextVk->disableRenderPassReactivation(); in resolveColorWithSubpass()
1988 ANGLE_TRY(drawRenderTarget->getImageView(contextVk, &resolveImageView)); in resolveDepthStencilWithSubpass()
1991 contextVk->getStartedRenderPassCommands(); in resolveDepthStencilWithSubpass()
1994 drawRenderTarget->onDepthStencilResolve(contextVk, mCurrentFramebufferDesc.getLayerCount(), in resolveDepthStencilWithSubpass()
1999 contextVk->disableRenderPassReactivation(); in resolveDepthStencilWithSubpass()
2014 vk::ImageHelper &dstImage = drawRenderTarget->getImageForWrite(); in resolveColorWithCommand()
2016 access.onImageTransferWrite(drawRenderTarget->getLevelIndex(), 1, in resolveColorWithCommand()
2017 drawRenderTarget->getLayerIndex(), 1, VK_IMAGE_ASPECT_COLOR_BIT, in resolveColorWithCommand()
2022 ANGLE_TRY(contextVk->getOutsideRenderPassCommandBuffer(access, &commandBuffer)); in resolveColorWithCommand()
2041 angle::VulkanPerfCounters &perfCounters = contextVk->getPerfCounters(); in resolveColorWithCommand()
2045 vk::ImageHelper &dstImage = drawRenderTarget->getImageForWrite(); in resolveColorWithCommand()
2047 vk::LevelIndex levelVk = dstImage.toVkLevel(drawRenderTarget->getLevelIndex()); in resolveColorWithCommand()
2049 resolveRegion.dstSubresource.baseArrayLayer = drawRenderTarget->getLayerIndex(); in resolveColorWithCommand()
2051 srcImage->resolve(&dstImage, resolveRegion, commandBuffer); in resolveColorWithCommand()
2107 attachment == GL_COLOR ? 0u : (attachment - GL_COLOR_ATTACHMENT0)); in invalidateImpl()
2149 colorRenderTarget->invalidateEntireContent(contextVk, &preferToKeepContentsDefined); in invalidateImpl()
2163 depthStencilRenderTarget->invalidateEntireContent(contextVk, in invalidateImpl()
2173 depthStencilRenderTarget->invalidateEntireStencilContent( in invalidateImpl()
2185 //- Bind FBO 1, draw in invalidateImpl()
2186 //- Bind FBO 2, draw in invalidateImpl()
2187 //- Bind FBO 1, invalidate D/S in invalidateImpl()
2189 if (contextVk->hasStartedRenderPassWithQueueSerial(mLastRenderPassQueueSerial)) in invalidateImpl()
2201 contextVk->getStartedRenderPassCommands().invalidateRenderPassColorAttachment( in invalidateImpl()
2202 contextVk->getState(), colorIndexGL, colorIndexVk, invalidateArea); in invalidateImpl()
2232 const gl::DepthStencilState &dsState = contextVk->getState().getDepthStencilState(); in invalidateImpl()
2235 contextVk->getStartedRenderPassCommands().invalidateRenderPassDepthAttachment( in invalidateImpl()
2241 contextVk->getStartedRenderPassCommands().invalidateRenderPassStencilAttachment( in invalidateImpl()
2248 ANGLE_TRY(contextVk->flushCommandsAndEndRenderPass( in invalidateImpl()
2265 const angle::Format &actualFormat = renderTarget->getImageActualFormat(); in updateColorAttachment()
2269 const angle::Format &intendedFormat = renderTarget->getImageIntendedFormat(); in updateColorAttachment()
2280 const bool enabledResolve = enabledColor && renderTarget->hasResolveAttachment(); in updateColorAttachment()
2284 mCurrentFramebufferDesc.updateColor(colorIndexGL, renderTarget->getDrawSubresourceSerial()); in updateColorAttachment()
2300 renderTarget->getResolveSubresourceSerial()); in updateColorAttachment()
2320 colorRenderTarget->updateWriteColorspace(srgbWriteControlMode); in updateColorAttachmentColorspace()
2340 mCurrentFramebufferDesc.updateDepthStencil(depthStencilRT->getDrawSubresourceSerial()); in updateDepthStencilAttachmentSerial()
2347 if (depthStencilRT != nullptr && depthStencilRT->hasResolveAttachment()) in updateDepthStencilAttachmentSerial()
2350 depthStencilRT->getResolveSubresourceSerial()); in updateDepthStencilAttachmentSerial()
2368 // are bound, so we need to flush any staged updates to both. in flushColorAttachmentUpdates()
2377 drawRenderTarget->flushStagedUpdates(contextVk, &mDeferredClears, colorIndexGL, in flushColorAttachmentUpdates()
2382 ANGLE_TRY(drawRenderTarget->flushStagedUpdates( in flushColorAttachmentUpdates()
2390 // Flush staged updates to the read render target as well, but only if it's not the same as in flushColorAttachmentUpdates()
2396 ANGLE_TRY(readRenderTarget->flushStagedUpdates( in flushColorAttachmentUpdates()
2417 return depthStencilRT->flushStagedUpdates(contextVk, &mDeferredClears, in flushDepthStencilAttachmentUpdates()
2422 return depthStencilRT->flushStagedUpdates(contextVk, nullptr, 0, in flushDepthStencilAttachmentUpdates()
2435 // Keep track of which attachments have dirty content and need their staged updates flushed. in syncState()
2496 dirtyBit - gl::Framebuffer::DIRTY_BIT_COLOR_ATTACHMENT_0); in syncState()
2503 dirtyBit - gl::Framebuffer::DIRTY_BIT_COLOR_BUFFER_CONTENTS_0); in syncState()
2511 if (attachment && attachment->hasFoveatedRendering()) in syncState()
2516 newFoveationState = attachment->getFoveationState(); in syncState()
2519 foveatedAttachmentSize = attachment->getSize(); in syncState()
2545 contextVk->updateColorMasks(); in syncState()
2546 contextVk->updateBlendFuncsAndEquations(); in syncState()
2571 static_cast<uint32_t>(command) - static_cast<uint32_t>(gl::Command::Blit); in syncState()
2599 // No-op redundant changes to prevent closing the RenderPass. in syncState()
2618 return contextVk->onFramebufferChange(this, command); in syncState()
2638 if (colorRenderTarget->isYuvResolve()) in updateRenderPassDesc()
2642 auto const &resolveImage = colorRenderTarget->getResolveImageForRenderPass(); in updateRenderPassDesc()
2650 colorRenderTarget->getImageForRenderPass().getActualFormatID(); in updateRenderPassDesc()
2651 if (colorRenderTarget->hasColorspaceOverrideForWrite()) in updateRenderPassDesc()
2654 colorRenderTarget->getColorspaceOverrideFormatForWrite(actualFormat); in updateRenderPassDesc()
2659 if (colorRenderTarget->hasResolveAttachment()) in updateRenderPassDesc()
2676 depthStencilRenderTarget->getImageForRenderPass().getActualFormatID()); in updateRenderPassDesc()
2679 if (depthStencilRenderTarget->hasResolveAttachment()) in updateRenderPassDesc()
2686 if (!contextVk->getFeatures().preferDynamicRendering.enabled && in updateRenderPassDesc()
2687 contextVk->isInColorFramebufferFetchMode()) in updateRenderPassDesc()
2692 if (contextVk->getFeatures().enableMultisampledRenderToTexture.enabled) in updateRenderPassDesc()
2694 // Update descriptions regarding multisampled-render-to-texture use. in updateRenderPassDesc()
2701 if (color->isRenderToTexture()) in updateRenderPassDesc()
2708 if (depthStencil && depthStencil->isRenderToTexture()) in updateRenderPassDesc()
2740 if (colorRenderTarget->isYuvResolve()) in getAttachmentsAndRenderTargets()
2743 if (context->getRenderer()->nullColorAttachmentWithExternalFormatResolve()) in getAttachmentsAndRenderTargets()
2750 ANGLE_TRY(colorRenderTarget->getResolveImageView(context, &resolveImageView)); in getAttachmentsAndRenderTargets()
2751 unpackedAttachments->push_back(resolveImageView->getHandle()); in getAttachmentsAndRenderTargets()
2753 packedRenderTargetsInfoOut->emplace_back( in getAttachmentsAndRenderTargets()
2761 ANGLE_TRY(colorRenderTarget->getImageViewWithColorspace( in getAttachmentsAndRenderTargets()
2763 unpackedAttachments->push_back(imageView->getHandle()); in getAttachmentsAndRenderTargets()
2765 packedRenderTargetsInfoOut->emplace_back( in getAttachmentsAndRenderTargets()
2774 ANGLE_TRY(depthStencilRenderTarget->getImageView(context, &imageView)); in getAttachmentsAndRenderTargets()
2776 unpackedAttachments->push_back(imageView->getHandle()); in getAttachmentsAndRenderTargets()
2777 packedRenderTargetsInfoOut->emplace_back( in getAttachmentsAndRenderTargets()
2785 unpackedAttachments->push_back( in getAttachmentsAndRenderTargets()
2786 imageViewHelper->getFragmentShadingRateImageView().getHandle()); in getAttachmentsAndRenderTargets()
2787 packedRenderTargetsInfoOut->emplace_back(nullptr, RenderTargetImage::FragmentShadingRate); in getAttachmentsAndRenderTargets()
2792 unpackedAttachments->resize(vk::kMaxFramebufferAttachments, VK_NULL_HANDLE); in getAttachmentsAndRenderTargets()
2803 if (colorRenderTarget->hasResolveAttachment()) in getAttachmentsAndRenderTargets()
2805 if (colorRenderTarget->isYuvResolve() && in getAttachmentsAndRenderTargets()
2806 context->getRenderer()->nullColorAttachmentWithExternalFormatResolve()) in getAttachmentsAndRenderTargets()
2812 ANGLE_TRY(colorRenderTarget->getResolveImageView(context, &resolveImageView)); in getAttachmentsAndRenderTargets()
2815 (*unpackedAttachments)[kBaseIndex + colorIndexGL] = resolveImageView->getHandle(); in getAttachmentsAndRenderTargets()
2816 packedRenderTargetsInfoOut->emplace_back( in getAttachmentsAndRenderTargets()
2824 if (depthStencilRenderTarget && depthStencilRenderTarget->hasResolveAttachment()) in getAttachmentsAndRenderTargets()
2827 ANGLE_TRY(depthStencilRenderTarget->getResolveImageView(context, &imageView)); in getAttachmentsAndRenderTargets()
2830 imageView->getHandle(); in getAttachmentsAndRenderTargets()
2831 packedRenderTargetsInfoOut->emplace_back( in getAttachmentsAndRenderTargets()
2838 // resolve attachment is pre-present in the render pass. in getAttachmentsAndRenderTargets()
2855 ASSERT(!contextVk->getFeatures().preferDynamicRendering.enabled); in createNewFramebuffer()
2864 contextVk->getFeatures().supportsImagelessFramebuffer.enabled; in createNewFramebuffer()
2867 if (!useImagelessFramebuffer && contextVk->getShareGroup()->getFramebufferCache().get( in createNewFramebuffer()
2876 ANGLE_TRY(contextVk->getCompatibleRenderPass(mRenderPassDesc, &compatibleRenderPass)); in createNewFramebuffer()
2884 framebufferInfo.renderPass = compatibleRenderPass->getHandle(); in createNewFramebuffer()
2892 contextVk->getRenderer()->nullColorAttachmentWithExternalFormatResolve()) || in createNewFramebuffer()
2905 // attachments but with different sizes. For simplicity, 0-attachment framebuffers are not in createNewFramebuffer()
2917 const bool result = contextVk->getShareGroup()->getFramebufferCache().get( in createNewFramebuffer()
2955 info.renderTarget->isYuvResolve()) in createNewFramebuffer()
2956 ? &info.renderTarget->getResolveImageForRenderPass() in createNewFramebuffer()
2957 : &info.renderTarget->getImageForRenderPass(); in createNewFramebuffer()
2959 const gl::LevelIndex level = info.renderTarget->getLevelIndexForImage(*image); in createNewFramebuffer()
2960 const uint32_t layerCount = info.renderTarget->getLayerCount(); in createNewFramebuffer()
2961 const gl::Extents extents = image->getLevelExtents2D(image->toVkLevel(level)); in createNewFramebuffer()
2968 attachmentInfo.flags = image->getCreateFlags(); in createNewFramebuffer()
2969 attachmentInfo.usage = image->getUsage(); in createNewFramebuffer()
2970 attachmentInfo.viewFormatCount = static_cast<uint32_t>(image->getViewFormats().size()); in createNewFramebuffer()
2971 attachmentInfo.pViewFormats = image->getViewFormats().data(); in createNewFramebuffer()
3010 if (contextVk->getFeatures().preferDynamicRendering.enabled) in getFramebuffer()
3040 ANGLE_TRY(contextVk->getCompatibleRenderPass(mRenderPassDesc, &compatibleRenderPass)); in getFramebuffer()
3043 ANGLE_TRY(mBackbuffer->getCurrentFramebuffer( in getFramebuffer()
3053 // Account for swapchain pre-rotation in getFramebuffer()
3054 framebufferWidth = renderTargetsInfo[0].renderTarget->getRotatedExtents().width; in getFramebuffer()
3055 framebufferHeight = renderTargetsInfo[0].renderTarget->getRotatedExtents().height; in getFramebuffer()
3059 contextVk->getFeatures().preferDynamicRendering.enabled || in getFramebuffer()
3060 (contextVk->getFeatures().supportsImagelessFramebuffer.enabled && in getFramebuffer()
3068 framebufferOut->setFramebuffer( in getFramebuffer()
3143 params.colorFormat = &colorRenderTarget->getImageForRenderPass().getActualFormat(); in clearWithDraw()
3156 ASSERT(mCurrentFramebufferDesc.isMultiview() || colorRenderTarget->getLayerCount() == 1); in clearWithDraw()
3158 ANGLE_TRY(contextVk->getUtils().clearFramebuffer(contextVk, this, params)); in clearWithDraw()
3169 ANGLE_TRY(contextVk->getUtils().clearFramebuffer(contextVk, this, params)); in clearWithDraw()
3189 const angle::Format &format = renderTarget->getImageActualFormat(); in getCorrectedColorClearValue()
3214 ASSERT(!contextVk->hasActiveRenderPass() || !mDeferredClears.any()); in restageDeferredClears()
3248 renderTarget->getImageIndexForClear(mCurrentFramebufferDesc.getLayerCount()); in restageDeferredClearsImpl()
3249 renderTarget->getImageForWrite().stageClear(imageIndex, VK_IMAGE_ASPECT_COLOR_BIT, in restageDeferredClearsImpl()
3260 renderTarget->getImageIndexForClear(mCurrentFramebufferDesc.getLayerCount()); in restageDeferredClearsImpl()
3261 renderTarget->getImageForWrite().stageClear(imageIndex, dsAspectFlags, dsClearValue); in restageDeferredClearsImpl()
3274 &contextVk->getStartedRenderPassCommands(); in clearWithCommand()
3275 renderPassCommands->growRenderArea(contextVk, scissoredRenderArea); in clearWithCommand()
3287 if (clears->getColorMask().test(colorIndexGL)) in clearWithCommand()
3289 if (renderPassCommands->hasAnyColorAccess(colorIndexVk) || in clearWithCommand()
3290 renderPassCommands->getRenderPassDesc().hasColorUnresolveAttachment(colorIndexGL) || in clearWithCommand()
3293 // With render pass objects, the clears are indexed by the subpass-mapped locations. in clearWithCommand()
3296 contextVk->getFeatures().preferDynamicRendering.enabled in clearWithCommand()
3302 clears->reset(colorIndexGL); in clearWithCommand()
3303 ++contextVk->getPerfCounters().colorClearAttachments; in clearWithCommand()
3305 renderPassCommands->onColorAccess(colorIndexVk, vk::ResourceAccess::ReadWrite); in clearWithCommand()
3321 dsClearValue.depthStencil.depth = clears->getDepthValue(); in clearWithCommand()
3322 dsClearValue.depthStencil.stencil = clears->getStencilValue(); in clearWithCommand()
3323 if (clears->testDepth() && in clearWithCommand()
3324 (renderPassCommands->hasAnyDepthAccess() || in clearWithCommand()
3325 renderPassCommands->getRenderPassDesc().hasDepthUnresolveAttachment() || in clearWithCommand()
3330 renderPassCommands->onDepthAccess(vk::ResourceAccess::ReadWrite); in clearWithCommand()
3331 clears->reset(vk::kUnpackedDepthIndex); in clearWithCommand()
3332 ++contextVk->getPerfCounters().depthClearAttachments; in clearWithCommand()
3335 if (clears->testStencil() && in clearWithCommand()
3336 (renderPassCommands->hasAnyStencilAccess() || in clearWithCommand()
3337 renderPassCommands->getRenderPassDesc().hasStencilUnresolveAttachment() || in clearWithCommand()
3342 renderPassCommands->onStencilAccess(vk::ResourceAccess::ReadWrite); in clearWithCommand()
3343 clears->reset(vk::kUnpackedStencilIndex); in clearWithCommand()
3344 ++contextVk->getPerfCounters().stencilClearAttachments; in clearWithCommand()
3353 renderPassCommands->updateDepthStencilReadOnlyMode( in clearWithCommand()
3354 contextVk->getDepthStencilAttachmentFlags(), dsAspectFlags); in clearWithCommand()
3373 vk::RenderPassCommandBuffer *renderPassCommandBuffer = &renderPassCommands->getCommandBuffer(); in clearWithCommand()
3375 renderPassCommandBuffer->clearAttachments(static_cast<uint32_t>(attachments.size()), in clearWithCommand()
3383 &contextVk->getStartedRenderPassCommands(); in clearWithLoadOp()
3395 ASSERT(!renderPassCommands->hasAnyColorAccess(colorIndexVk)); in clearWithLoadOp()
3397 renderPassCommands->updateRenderPassColorClear(colorIndexVk, mDeferredClears[colorIndexGL]); in clearWithLoadOp()
3411 ASSERT(!renderPassCommands->hasAnyDepthAccess()); in clearWithLoadOp()
3418 ASSERT(!renderPassCommands->hasAnyStencilAccess()); in clearWithLoadOp()
3425 renderPassCommands->updateRenderPassDepthStencilClear(dsAspects, dsClearValue); in clearWithLoadOp()
3427 // The render pass can no longer be in read-only depth/stencil mode. in clearWithLoadOp()
3428 renderPassCommands->updateDepthStencilReadOnlyMode( in clearWithLoadOp()
3429 contextVk->getDepthStencilAttachmentFlags(), dsAspects); in clearWithLoadOp()
3447 ANGLE_TRY(contextVk->flushCommandsAndEndRenderPass(RenderPassClosureReason::NewRenderPass)); in startNewRenderPass()
3477 // multisampled-render-to-texture textures can be so. in startNewRenderPass()
3478 ASSERT(!colorRenderTarget->isEntirelyTransient()); in startNewRenderPass()
3479 const vk::RenderPassStoreOp storeOp = colorRenderTarget->isImageTransient() in startNewRenderPass()
3491 const vk::RenderPassLoadOp loadOp = colorRenderTarget->hasDefinedContent() in startNewRenderPass()
3508 if (colorRenderTarget->hasResolveAttachment() && colorRenderTarget->isImageTransient()) in startNewRenderPass()
3547 if (!depthStencilRenderTarget->hasDefinedContent() || in startNewRenderPass()
3548 depthStencilRenderTarget->isEntirelyTransient()) in startNewRenderPass()
3552 if (!depthStencilRenderTarget->hasDefinedStencilContent() || in startNewRenderPass()
3553 depthStencilRenderTarget->isEntirelyTransient()) in startNewRenderPass()
3560 if (depthStencilRenderTarget->isImageTransient()) in startNewRenderPass()
3592 const angle::Format &format = depthStencilRenderTarget->getImageIntendedFormat(); in startNewRenderPass()
3608 if (depthStencilRenderTarget->hasResolveAttachment() && in startNewRenderPass()
3609 depthStencilRenderTarget->isImageTransient()) in startNewRenderPass()
3625 if (!contextVk->getFeatures().supportsShaderStencilExport.enabled) in startNewRenderPass()
3684 ANGLE_TRY(contextVk->beginNewRenderPass( in startNewRenderPass()
3687 mLastRenderPassQueueSerial = contextVk->getStartedRenderPassCommands().getQueueSerial(); in startNewRenderPass()
3694 colorRenderTarget->onColorDraw(contextVk, mCurrentFramebufferDesc.getLayerCount(), in startNewRenderPass()
3704 depthStencilRenderTarget->onDepthStencilDraw(contextVk, in startNewRenderPass()
3717 ANGLE_TRY(contextVk->getUtils().unresolve(contextVk, this, params)); in startNewRenderPass()
3720 ANGLE_TRY(contextVk->startNextSubpass()); in startNewRenderPass()
3725 contextVk->onDrawFramebufferRenderPassDescChange(this, renderPassDescChangedOut); in startNewRenderPass()
3731 contextVk->onFragmentShadingRateRead(&mFragmentShadingRateImage); in startNewRenderPass()
3769 gl::LevelIndex levelGL = renderTarget->getLevelIndex(); in readPixelsImpl()
3770 uint32_t layer = renderTarget->getLayerIndex(); in readPixelsImpl()
3771 return renderTarget->getImageForCopy().readPixels(contextVk, area, packPixelsParams, in readPixelsImpl()
3778 return readRenderTarget->getExtents(); in getReadImageExtents()
3782 // dimensions of the framebuffer, IS ROTATED for the draw FBO, and IS NOT y-flipped
3789 if (contextVk->isRotatedAspectRatioForDrawFBO()) in getRotatedCompleteRenderArea()
3799 // Y-FLIPPED for the draw FBO.
3806 bool invertViewport = contextVk->isViewportFlipEnabledForDrawFBO(); in getRotatedScissoredRenderArea()
3807 gl::Rectangle scissoredArea = ClipRectToScissor(contextVk->getState(), renderArea, false); in getRotatedScissoredRenderArea()
3809 RotateRectangle(contextVk->getRotationDrawFramebuffer(), invertViewport, renderArea.width, in getRotatedScissoredRenderArea()
3823 if (color->isRenderToTexture()) in getSamples()
3825 return color->getSamples(); in getSamples()
3833 if (depthStencil->isRenderToTexture()) in getSamples()
3835 return depthStencil->getSamples(); in getSamples()
3840 // If none of the attachments are multisampled-render-to-texture, take the sample count from the in getSamples()
3842 return std::max(lastAttachment ? lastAttachment->getSamples() : 1, 1); in getSamples()
3851 // This is used when switching this aspect to read-only mode, in which case the clear operation in flushDepthStencilDeferredClear()
3858 vk::ImageHelper &image = renderTarget->getImageForCopy(); in flushDepthStencilDeferredClear()
3861 ASSERT(!renderTarget->is3DImage()); in flushDepthStencilDeferredClear()
3864 access.onImageTransferWrite(renderTarget->getLevelIndex(), 1, renderTarget->getLayerIndex(), 1, in flushDepthStencilDeferredClear()
3867 ANGLE_TRY(contextVk->getOutsideRenderPassCommandBuffer(access, &commandBuffer)); in flushDepthStencilDeferredClear()
3871 range.baseMipLevel = image.toVkLevel(renderTarget->getLevelIndex()).get(); in flushDepthStencilDeferredClear()
3873 range.baseArrayLayer = renderTarget->getLayerIndex(); in flushDepthStencilDeferredClear()
3889 commandBuffer->clearDepthStencilImage(image.getImage(), image.getCurrentLayout(), clearValue, 1, in flushDepthStencilDeferredClear()
3901 return contextVk->startRenderPass(getRotatedCompleteRenderArea(contextVk), nullptr, nullptr); in flushDeferredClears()
3909 ASSERT(!contextVk->getFeatures().preferDynamicRendering.enabled); in switchToColorFramebufferFetchMode()
3922 contextVk->onDrawFramebufferRenderPassDescChange(this, nullptr); in switchToColorFramebufferFetchMode()
3928 if (contextVk->getFeatures().permanentlySwitchToFramebufferFetchMode.enabled) in switchToColorFramebufferFetchMode()
3937 if (contextVk->getFeatures().supportsLegacyDithering.enabled && in updateLegacyDither()
3938 mRenderPassDesc.isLegacyDitherEnabled() != contextVk->isDitherEnabled()) in updateLegacyDither()
3940 mRenderPassDesc.setLegacyDither(contextVk->isDitherEnabled()); in updateLegacyDither()