Name Strings
SPV_INTEL_device_side_avc_motion_estimation
Contact
To report problems with this extension, please open a new issue at:
Contributors
-
Biju George, Intel
-
Ben Ashbaugh, Intel
-
Kristina Bessonova, Intel
-
Pawel Jurek, Intel
-
Alexey Sachkov, Intel
-
Alexey Sotkin, Intel
Notice
Copyright (c) 2018 Intel Corporation. All rights reserved.
Status
-
Final Draft
Version
Last Modified Date |
2018-10-29 |
Revision |
1 |
Dependencies
This extension is written against the SPIR-V Specification, Version 1.2 Revision 1.
This extension requires SPIR-V 1.0.
Overview
Video motion estimation (VME) is defined as of set motion estimation operations that are used to determine the motion vectors, intra estimation angles and macroblock partitioning combination that best describe the transformation to the source macroblock, from blocks in one or more previous reference pictures (inter-prediction), or from other blocks in the same source picture (intra-prediction). It does this by searching for spatial and temporal patterns on the current and various forward and backward reference pictures.
The goal of this extension is to provide programmers with a fine-grained interface to the AVC VME media sampler in Intel graphics processors. It describes the specification of instructions that facilitate the programming of the VME media sampler to evaluate specific AVC motion estimation operations.
Instructions are defined for all the major operations of the VME media sampler. The major operations of the AVC VME media sampler in Intel Graphics Processors can be described as follows:
-
Integer motion estimation (IME)
Perform motion estimation on a given source macroblock in a source image over a single or dual reference window in a reference image, at full-pixel resolution, to determine the best integer motion vectors and their associated distortions, and the best macroblock shape partitioning combination. -
Motion estimation refinement (REF)
Perform refinement operations on the results of IME. The two sub-operations are:-
Fractional motion estimation (FME)
Perform sub-pixel refinement on the results of an IME operation. Half-pixel (HPEL) or quarter-pixel (QPEL) refinements are performed to determine the best sub-pixel motion vectors and their associated distortions. -
Bidirectional motion estimation (BME)
Perform bidirectional refinement on the results of an IME operation using two reference images to check if the bidirectional mode using two references yields lesser distortions. An FME can optionally be performed implicitly as part of a bidirectional refinement.
-
-
Skip and Intra check (SIC)
Performs the following two sub-operations:-
Skip check (SKC)
Compute the pixel distortion of a user-specified shape and motion vector combination. The VME media sampler fetches necessary pixels, performs fractional and bidirectional filtering (as necessary), and then computes the distortion between the derived reference and source. The skip decision can optionally be enhanced to include a 4x4 forward transform, the results of which are compared against a user specified threshold to emulate the effects of the forward quantization zeroing effect. -
Intra prediction estimation (IPE)
Perform intra prediction on a given source macroblock to determine the best intra prediction modes and the best shape partitioning combination.
-
Extension Name
To use this extension within a SPIR-V module, the appropriate OpExtension must be present in the module:
OpExtension "SPV_INTEL_device_side_avc_motion_estimation"
New Capabilities
This extension introduces new capabilities:
SubgroupAvcMotionEstimationINTEL SubgroupAvcMotionEstimationIntraINTEL SubgroupAvcMotionEstimationChromaINTEL
New Instructions
Instructions added under the SubgroupAvcMotionEstimationINTEL capability (some are additionally defined under the SubgroupAvcMotionEstimationIntraINTEL or SubgroupAvcMotionEstimationChromaINTEL capability):
OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL OpSubgroupAvcMceSetInterShapePenaltyINTEL OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL OpSubgroupAvcMceSetInterDirectionPenaltyINTEL OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL OpSubgroupAvcMceSetAcOnlyHaarINTEL OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL OpSubgroupAvcMceConvertToImePayloadINTEL OpSubgroupAvcMceConvertToImeResultINTEL OpSubgroupAvcMceConvertToRefPayloadINTEL OpSubgroupAvcMceConvertToRefResultINTEL OpSubgroupAvcMceConvertToSicPayloadINTEL OpSubgroupAvcMceConvertToSicResultINTEL OpSubgroupAvcMceGetMotionVectorsINTEL OpSubgroupAvcMceGetInterDistortionsINTEL OpSubgroupAvcMceGetBestInterDistortionsINTEL OpSubgroupAvcMceGetInterMajorShapeINTEL OpSubgroupAvcMceGetInterMinorShapeINTEL OpSubgroupAvcMceGetInterDirectionsINTEL OpSubgroupAvcMceGetInterMotionVectorCountINTEL OpSubgroupAvcMceGetInterReferenceIdsINTEL OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL
OpVmeImageINTEL OpSubgroupAvcImeInitializeINTEL OpSubgroupAvcImeSetSingleReferenceINTEL OpSubgroupAvcImeSetDualReferenceINTEL OpSubgroupAvcImeRefWindowSizeINTEL OpSubgroupAvcImeAdjustRefOffsetINTEL OpSubgroupAvcImeConvertToMcePayloadINTEL OpSubgroupAvcImeSetMaxMotionVectorCountINTEL OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL OpSubgroupAvcImeSetWeightedSadINTEL OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL OpSubgroupAvcImeEvaluateWithDualReferenceINTEL OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL OpSubgroupAvcImeConvertToMceResultINTEL OpSubgroupAvcImeGetSingleReferenceStreaminINTEL OpSubgroupAvcImeGetDualReferenceStreaminINTEL SubgroupAvcImeStripSingleReferenceStreamoutINTEL SubgroupAvcImeStripDualReferenceStreamoutINTEL OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL OpSubgroupAvcImeGetBorderReachedINTEL OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL
OpSubgroupAvcFmeInitializeINTEL OpSubgroupAvcBmeInitializeINTEL OpSubgroupAvcRefConvertToMcePayloadINTEL OpSubgroupAvcRefSetBidirectionalMixDisableINTEL OpSubgroupAvcRefSetBilinearFilterEnableINTEL OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL OpSubgroupAvcRefEvaluateWithDualReferenceINTEL OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL OpSubgroupAvcRefConvertToMceResultINTEL
OpSubgroupAvcSicInitializeINTEL OpSubgroupAvcSicConfigureSkcINTEL OpSubgroupAvcSicConfigureIpeLumaINTEL OpSubgroupAvcSicConfigureIpeLumaChromaINTEL OpSubgroupAvcSicGetMotionVectorMaskINTEL OpSubgroupAvcSicConvertToMcePayloadINTEL OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL OpSubgroupAvcSicSetBilinearFilterEnableINTEL OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL OpSubgroupAvcSicEvaluateIpeINTEL OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL OpSubgroupAvcSicEvaluateWithDualReferenceINTEL OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL OpSubgroupAvcSicConvertToMceResultINTEL OpSubgroupAvcSicGetIpeLumaShapeINTEL OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL OpSubgroupAvcSicGetPackedIpeLumaModesINTEL OpSubgroupAvcSicGetIpeChromaModeINTEL OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL OpSubgroupAvcSicGetInterRawSadsINTEL
New Types
Opaque Types added under the SubgroupAvcMotionEstimationINTEL capability:
OpTypeVmeImageINTEL OpTypeAvcMcePayloadINTEL OpTypeAvcImePayloadINTEL OpTypeAvcRefPayloadINTEL OpTypeAvcSicPayloadINTEL OpTypeAvcMceResultINTEL OpTypeAvcImeResultINTEL OpTypeAvcImeResultSingleReferenceStreamoutINTEL OpTypeAvcImeResultDualReferenceStreamoutINTEL OpTypeAvcImeSingleReferenceStreaminINTEL OpTypeAvcImeDualReferenceStreaminINTEL OpTypeAvcRefResultINTEL OpTypeAvcSicResultINTEL
Token Number Assignments
OpVmeImageINTEL | 5699 |
---|---|
OpTypeVmeImageINTEL |
5700 |
OpTypeAvcImePayloadINTEL |
5701 |
OpTypeAvcRefPayloadINTEL |
5702 |
OpTypeAvcSicPayloadINTEL |
5703 |
OpTypeAvcMcePayloadINTEL |
5704 |
OpTypeAvcMceResultINTEL |
5705 |
OpTypeAvcImeResultINTEL |
5706 |
OpTypeAvcImeResultSingleReferenceStreamoutINTEL |
5707 |
OpTypeAvcImeResultDualReferenceStreamoutINTEL |
5708 |
OpTypeAvcImeSingleReferenceStreaminINTEL |
5709 |
OpTypeAvcImeDualReferenceStreaminINTEL |
5710 |
OpTypeAvcRefResultINTEL |
5711 |
OpTypeAvcSicResultINTEL |
5712 |
OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL |
5713 |
OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL |
5714 |
OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL |
5715 |
OpSubgroupAvcMceSetInterShapePenaltyINTEL |
5716 |
OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL |
5717 |
OpSubgroupAvcMceSetInterDirectionPenaltyINTEL |
5718 |
OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL |
5719 |
OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL |
5720 |
OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL |
5721 |
OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL |
5722 |
OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL |
5723 |
OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL |
5724 |
OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL |
5725 |
OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL |
5726 |
OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL |
5727 |
OpSubgroupAvcMceSetAcOnlyHaarINTEL |
5728 |
OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL |
5729 |
OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL |
5730 |
OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL |
5731 |
OpSubgroupAvcMceConvertToImePayloadINTEL |
5732 |
OpSubgroupAvcMceConvertToImeResultINTEL |
5733 |
OpSubgroupAvcMceConvertToRefPayloadINTEL |
5734 |
OpSubgroupAvcMceConvertToRefResultINTEL |
5735 |
OpSubgroupAvcMceConvertToSicPayloadINTEL |
5736 |
OpSubgroupAvcMceConvertToSicResultINTEL |
5737 |
OpSubgroupAvcMceGetMotionVectorsINTEL |
5738 |
OpSubgroupAvcMceGetInterDistortionsINTEL |
5739 |
OpSubgroupAvcMceGetBestInterDistortionsINTEL |
5740 |
OpSubgroupAvcMceGetInterMajorShapeINTEL |
5741 |
OpSubgroupAvcMceGetInterMinorShapeINTEL |
5742 |
OpSubgroupAvcMceGetInterDirectionsINTEL |
5743 |
OpSubgroupAvcMceGetInterMotionVectorCountINTEL |
5744 |
OpSubgroupAvcMceGetInterReferenceIdsINTEL |
5745 |
OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL |
5746 |
OpSubgroupAvcImeInitializeINTEL |
5747 |
OpSubgroupAvcImeSetSingleReferenceINTEL |
5748 |
OpSubgroupAvcImeSetDualReferenceINTEL |
5749 |
OpSubgroupAvcImeRefWindowSizeINTEL |
5750 |
OpSubgroupAvcImeAdjustRefOffsetINTEL |
5751 |
OpSubgroupAvcImeConvertToMcePayloadINTEL |
5752 |
OpSubgroupAvcImeSetMaxMotionVectorCountINTEL |
5753 |
OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL |
5754 |
OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL |
5755 |
OpSubgroupAvcImeSetWeightedSadINTEL |
5756 |
OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL |
5757 |
OpSubgroupAvcImeEvaluateWithDualReferenceINTEL |
5758 |
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL |
5759 |
SubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL |
5760 |
OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL |
5761 |
OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL |
5762 |
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL |
5763 |
OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL |
5764 |
OpSubgroupAvcImeConvertToMceResultINTEL |
5765 |
OpSubgroupAvcImeGetSingleReferenceStreaminINTEL |
5766 |
OpSubgroupAvcImeGetDualReferenceStreaminINTEL |
5767 |
SubgroupAvcImeStripSingleReferenceStreamoutINTEL |
5768 |
SubgroupAvcImeStripDualReferenceStreamoutINTEL |
5769 |
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL |
5770 |
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL |
5771 |
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL |
5772 |
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL |
5773 |
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL |
5774 |
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL |
5775 |
OpSubgroupAvcImeGetBorderReachedINTEL |
5776 |
OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL |
5777 |
OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL |
5778 |
OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL |
5779 |
OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL |
5780 |
OpSubgroupAvcFmeInitializeINTEL |
5781 |
OpSubgroupAvcBmeInitializeINTEL |
5782 |
OpSubgroupAvcRefConvertToMcePayloadINTEL |
5783 |
OpSubgroupAvcRefSetBidirectionalMixDisableINTEL |
5784 |
OpSubgroupAvcRefSetBilinearFilterEnableINTEL |
5785 |
OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL |
5786 |
OpSubgroupAvcRefEvaluateWithDualReferenceINTEL |
5787 |
OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL |
5788 |
OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL |
5789 |
OpSubgroupAvcRefConvertToMceResultINTEL |
5790 |
OpSubgroupAvcSicInitializeINTEL |
5791 |
OpSubgroupAvcSicConfigureSkcINTEL |
5792 |
OpSubgroupAvcSicConfigureIpeLumaINTEL |
5793 |
OpSubgroupAvcSicConfigureIpeLumaChromaINTEL |
5794 |
OpSubgroupAvcSicGetMotionVectorMaskINTEL |
5795 |
OpSubgroupAvcSicConvertToMcePayloadINTEL |
5796 |
OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL |
5797 |
OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL |
5798 |
OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL |
5799 |
OpSubgroupAvcSicSetBilinearFilterEnableINTEL |
5800 |
OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL |
5801 |
OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL |
5802 |
OpSubgroupAvcSicEvaluateIpeINTEL |
5803 |
OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL |
5804 |
OpSubgroupAvcSicEvaluateWithDualReferenceINTEL |
5805 |
OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL |
5806 |
OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL |
5807 |
OpSubgroupAvcSicConvertToMceResultINTEL |
5808 |
OpSubgroupAvcSicGetIpeLumaShapeINTEL |
5809 |
OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL |
5810 |
OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL |
5811 |
OpSubgroupAvcSicGetPackedIpeLumaModesINTEL |
5812 |
OpSubgroupAvcSicGetIpeChromaModeINTEL |
5813 |
OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL |
5814 |
OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL |
5815 |
OpSubgroupAvcSicGetInterRawSadsINTEL |
5816 |
Modifications to the SPIR-V Specification, Version 1.2
Terms
Modify Section 2.2, Terms, adding to the numbered list a new sub-section 2.2.X "AVC Motion Estimation":
The following terms, acronyms and definitions are used in and provide context for the AVE motion estimation group instructions.
Macro-block (MB)
An image is partitioned into macro-blocks of size 16x16 pixels. It is the basic unit of processing for AVC video motion estimation operations.
Shape
A MB may be partitioned into sub-blocks of one of the major shapes. A sub-block with an 8x8 major shape may be further independently partitioned into sub-blocks of one of the minor shapes. It is represented by predefined shape values.
Major Shapes
Shapes of 16x16, 16x8, 8x16, or 8x8 partitions of a MB. A 16x16 major shape merely indicates that the MB was not further partitioned.
Minor Shapes
Shapes of 8x8, 8x4, 4x8, or 4x4 sub-partitions of an 8x8 partition. A 8x8 minor shape merely indicates that the 8x8 major partition was not further sub-partitioned.
Block
A sub-block of a MB with one of the major or minor shapes.
Reference Image
An image (typically from the previously decoded buffer in an encoder pipeline) from which motion estimation predictions are made.
Source Image
The current image for which motion estimation predictions are made.
Source Macro-block Offset
The 2D offset of the top left corner of the source MB in pixel units. It is represented by a pair of unsigned 16-bit integers.
Reference Window Offset
The 2D offset of the top left corner reference search window w.r.t to the top left corner of the source MB in pixel units. It is represented by a pair of signed 16-bit integers in the range [-2048, 2047].
Reference identifier
Reference identifiers are associated to pairs of forward(L0)/ backward(L1) reference image parameters. Up to 16 pairs of reference pairs of reference image parameters are permitted, with the permitted values of reference identifiers ranging from 0 to 15. The reference identifiers are assigned in increasing order in which the reference image parameter pairs are declared in the kernel parameter operand list.
Motion Vector (MV)
A 2D vector used for inter motion estimation that provides an offset from the top left corner of a block in the source image to the top left corner an identically sized block in the reference image. Generally it is used to represent the best match of a block in the reference image to a block in the source image. The best match is determined as the block minimizing the distortion. MVs are specified in QPEL resolution with the 2 LSB representing the fractional part of the offset. It is represented by a pair of signed 16-bit signed integers.
Packed Motion Vector
A motion vector represented as a packed 32-bit unsigned integer. The lower 16 bits contains the X coordinate and the upper 16 bits contains the Y coordinate.
Bidirectional Motion Vector (BMV)
A pair of MVs for the forward(L0) and backward(L1) images. Depending on how the VME operation is configured only the forward or the backward MV or both may be valid.
Packed Bidirectional Motion Vector
A bidirectional MV represented as a packed 64-bit unsigned integer. The lower 32-bits contain the forward packed MV, and the upper 32-bits contain the backward packed MV.
Sum Of Absolute Difference (SAD)
The sum of absolute differences of every full/sub-pixel location in the source block w.r.t every corresponding full/sub pixel in the reference block as specified by a given MV. The sum of absolute differences may be optionally Haar transform adjusted. It is represented by an unsigned 16-bit integer value.
Haar Transform (HAAR)
A simple wavelet transform that is used to refine the distortion measure of SAD. The per pixel difference goes through a 4x4 Haar transform. Then the SAD is replaced by the sum of the absolute values of the transform domain coefficients in the distortion. Haar transform is used as a coarse estimation of the integer transform.
Motion Vector Cost Center (CC)
A MV has an associated cost w.r.t a cost center coordinate. The further away from the cost center, the larger will be the cost associated with the MV. Cost centers are specified in QPEL resolution with the 2 LSB representing the fractional part of the offset.
Motion Vector Cost Center Delta (CCD)
The 2D offset of the cost center relative to the top left corner of the source MB. Cost center deltas are specified in QPEL resolution with the 2 LSB representing the fractional part of the offset. It is represented by a pair of signed 16-bit integers.
Packed Motion Vector Cost Center Delta
A motion vector cost center delta represented as a packed 32-bit unsigned integer. The lower 16 bits contains the X coordinate and the upper 16 bits contains the Y coordinate.
Bidirectional Motion Vector Cost Center Delta
A pair of cost center deltas for the forward and backward images.
Packed Bidirectional Motion Vector Cost Center Delta
A packed bidirectional motion vector cost center delta represented as a 64-bit unsigned integer. The lower 32-bits contain the forward packed CCD, and the upper 32-bits contain the backward packed CCD.
Motion Vector Cost
The MV cost is determined using a cost function described by a cost table that is indexed based on power-of-two distances from the user specified cost center, with a user specified precision (or unit) of the distances from the cost center.
U4U4 Byte Format
Represents a value of (B<<S), where B, called base, is the 4 bit LSB of the byte and S, called shift, is the 4 bit MSB of the byte.
Motion Vector Cost Table
A table which specifies the cost penalties at 8 control points. The first 7 control points represent the distances from cost center at powers-of-two locations (20 to 26), and the last control point represents the base penalty for distances that are out of range of the cost function curve. It is represented by a packed array of 8 U4U4 unsigned integer values.
Motion Vector Cost Precision
The precision (or unit) of the control points in the MV cost table. It can be used to control the precision and range of the cost function. It is represented by pre-defined cost precision values.
Shape Cost
The cost associated with encoding a particular partition shape using inter or intra prediction. It is represented by a packed array of 10 U4U4 unsigned integer values.
Distortion
The distortion is the sum of SAD, MV cost, shape cost and multi-reference cost for inter estimation, and the sum of SAD, mode cost, shape cost and non-dc cost for intra estimation. It is a measure of the cost of encoding a block and is represented by an unsigned 16-bit integer value.
Intra Mode
An intra-prediction angle which provides a prediction for the current block from the edge pixels in its neighboring blocks. It is represented by pre-defined intra mode values.
Intra Mode Cost
The cost associated with a computed intra mode for a block w.r.t a predicted intra mode based on the computed intra modes for itsneighboring blocks.
Mode
The decision whether the inter-prediction or intra-prediction minimizes distortion of a given MB.
Search unit (SU)
The basic unit of searching. Possible reference search locations are grouped in a predefined 4x4 pattern, and all locations within the same group must be completely chosen or completely skipped. These predefined groups are called search units.
Search Path (SP)
The path taken during searching in a reference window. The steps taken in a search path are in units of SUs. The search path must lie within the defined search window.
Luma
Luma refers to either the Y-plane of a NV12 image or a regular image with the Image Channel Order and Image Channel Data Type restricted as R and UnormInt8.
Chroma
Chroma refer to the UV-plane of a NV12 image.
Search Window (SW)
The search area that will be covered during searching. The area of the search window is limited to 2K luma pixels.
Search Window Configuration
The configuration of a search window which is a combination of the search path and search window.
The predefined search window configurations are:
EXHAUSTIVE |
48x40 SW with exhaustive single reference search (or 32x32 dual SW for exhaustive dual-reference search); an exhaustive search means that all SU within the search window are searched in a spiral pattern with the search center being the middle of the search window. |
SMALL |
28x28 SW with exhaustive search |
TINY |
24x24 SW with exhaustive search |
EXTRA TINY |
20x20 SW with exhaustive search |
DIAMOND |
48x40 SW with diamond single reference search (or 32x32 dual SW for diamond dual-reference search); a diamond pattern search path is used for the first 16 (or 7 per reference for dual reference search) SUs, and then gradient based searching is used for up to a maximum of 57 search unit. |
LARGE DIAMOND |
48x40 SW with large diamond single reference search(or 32x32 dual SW for large diamond dual-reference search); a diamond pattern search pattern is used for the first 32 (or 10 per reference for dual reference search) SUs, and then gradient based searching is used for up to a maximum of 57 search units. |
Inter Estimation
The process of determining motion vectors and shapes that best describe the transformation from 2D images from previously decoded images in a video sequence to the currently processed image.
Intra-Prediction Estimation (IPE)
The process of determining prediction angles and shapes that best describe the transformation from neighboring MBs in an image to the currently processed MB in the same image.
Luma Mode
The prediction angle returned by IPE for the luma component for a block. It is represented by an unsigned 8-bit integer with the upper 4 bits set to zero.
Integer Motion Estimation (IME)
Inter-motion estimation in integer pixel resolution.
Fractional Motion Estimation (FME)
Inter-motion estimation in sub-pixel resolution. The result of integer motion estimation on a reference image is used to perform fractional refinement.
Bidirectional Motion Estimation (BME)
The process of determining if the bi-directional prediction minimizes the distortion w.r.t to unidirectional prediction. The results of IME on forward(L0) and backward(L1) reference images are used to perform bi-directional refinement. BME can be performed in integer or sub-pixel resolution. If performed in sub-pixel resolution an implicit FME operation is done before performing the BME.
Refinement (REF)
A FME and/or BME refinement operation.
Skip/Spot Check (SKC)
The operation determining the distortion associated with a given (uni or bidirectional) MV in a reference image(s) w.r.t a source image.
Skip and Intra Check (SIC)
The process of performing both SKC and IPE in the same operation.
Motion Check or Estimation (MCE)
A generic IME, REF, or SIC operation.
Forward Transform (FT)
An 8x8 or 4x4 integer transform used to transform the residual to the frequency domain.
Capabilities
Modify Section 3.31, Capability, adding rows to the Capability table:
5696 |
SubgroupAvcMotionEstimationINTEL |
Groups |
SPV_INTEL_device_side_motion_estimation |
5697 |
SubgroupAvcMotionEstimationIntraINTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupImageMediaBlockIOINTEL |
SPV_INTEL_device_side_motion_estimation |
5698 |
SubgroupAvcMotionEstimationChromaINTEL |
SubgroupAvcMotionEstimationIntraINTEL |
SPV_INTEL_device_side_motion_estimation |
Types
Modify Section 2.2.2, Types, adding "VME image" type after the definition of Sampler as follows:
Sampler: There are essentially two categories of samplers: texture and media samplers. Texture samplers essentially describe settings how to access, filter, or sample on an image, that come either from literal declarations of settings or be an opaque reference to externally bound settings. Media samplers essentially settings for motion estimation on an image, that come only from literal declarations of settings. Refer to section 3.32.21 Group Instructions for a detailed description the instructions that use of this type. In general, the use of the word "sampler" by itself refers to a texture sampler. A media sampler will be explicitly referred to as "media sampler". A sampler does not include an image.
Modify Section 2.2.2, Types, adding "VME image" type after the definition of Sampled Image as follows:
VME Image: An image combined with a sampler, enabling VME accesses of the image’s contents.
Modify Section 2.2.2, Types, adding the following to the Opaque types:
-
OpTypeVmeImageINTEL
-
OpTypeAvcMcePayloadINTEL
-
OpTypeAvcImePayloadINTEL
-
OpTypeAvcRefPayloadINTEL
-
OpTypeAvcSicPayloadINTEL
-
OpTypeAvcMceResultINTEL
-
OpTypeAvcImeResultINTEL
-
OpTypeAvcImeResultSingleReferenceStreamoutINTEL
-
OpTypeAvcImeResultDualReferenceStreamoutINTEL
-
OpTypeAvcImeSingleReferenceStreaminINTEL
-
OpTypeAvcImeDualReferenceStreaminINTEL
-
OpTypeAvcRefResultINTEL
-
OpTypeAvcSicResultINTEL
Modify Section 2.8, Types and Variables, adding the following to the third paragraph:
To do motion estimation operations, a type from OpTypeVmeImageINTEL is used that contains both an image and a media sampler. Such an image can be set only in a SPIR-V module from an independent image and an independent sampler. Furthermore its OpTypeImage must have a Dim of 2D.
Modify Section 3.32.6, Type Declaration Instructions, amending the description of OpTypeSampler as follows:
OpTypeSampler
|
Modify Section 3.32.6, Type Declaration Instructions, adding the description of OpTypeSampledImage as follows:
OpTypeVmeImageINTEL Image Type must be an OpTypeImage. It is the type of the image in the combined sampler and image type.
|
Modify Section 3.32.6, Type Declaration Instructions, adding to the end of the list of type declarations:
OpTypeAvcMcePayloadINTEL
|
OpTypeAvcImePayloadINTEL
|
OpTypeAvcRefPayloadINTEL
|
OpTypeAvcSicPayloadINTEL
|
OpTypeAvcMceResultINTEL
|
OpTypeAvcImeResultINTEL
|
OpTypeAvcImeResultSingleReferenceStreamoutINTEL
|
OpTypeAvcImeResultDualReferenceStreamoutINTEL
|
OpTypeAvcImeSingleReferenceStreaminINTEL
|
OpTypeAvcImeDualReferenceStreaminINTEL
|
OpTypeAvcRefResultINTEL
|
OpTypeAvcSicResultINTEL
|
Binary Form
Modify Section 3, Binary Form, adding to the numbered list the following sub-sections:
Interlaced image field polarity values:
Field polarity values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_INTERLACED_SCAN_TOP_FIELD_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x1 |
AVC_ME_INTERLACED_SCAN_BOTTOM_FIELD_INTEL |
SubgroupAvcMotionEstimationINTEL |
Inter macro-block major shape values:
Major shape values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_MAJOR_16x16_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x1 |
AVC_ME_MAJOR_16x8_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x2 |
AVC_ME_MAJOR_8x16_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x3 |
AVC_ME_MAJOR_8x8_INTEL |
SubgroupAvcMotionEstimationINTEL |
Inter macro-block minor shape values:
Minor shape values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_MINOR_8x8_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x1 |
AVC_ME_MINOR_8x4_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x2 |
AVC_ME_MINOR_4x8_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x3 |
AVC_ME_MINOR_4x4_INTEL |
SubgroupAvcMotionEstimationINTEL |
Inter macro-block major direction values:
Major direction values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_MAJOR_FORWARD_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x1 |
AVC_ME_MAJOR_BACKWARD_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x2 |
AVC_ME_MAJOR_BIDIRECTIONAL_INTEL |
SubgroupAvcMotionEstimationINTEL |
Inter (IME) partition mask values:
Partition mask values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_PARTITION_MASK_ALL_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x7E |
AVC_ME_PARTITION_MASK_16x16_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x7D |
AVC_ME_PARTITION_MASK_16x8_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x7B |
AVC_ME_PARTITION_MASK_8x16_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x77 |
AVC_ME_PARTITION_MASK_8x8_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x6F |
AVC_ME_PARTITION_MASK_8x4_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x5F |
AVC_ME_PARTITION_MASK_4x8_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x3F |
AVC_ME_PARTITION_MASK_4x4_INTEL |
SubgroupAvcMotionEstimationINTEL |
Slice type values:
Polarity values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_SLICE_TYPE_PRED_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x1 |
AVC_ME_SLICE_TYPE_BPRED_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x2 |
AVC_ME_SLICE_TYPE_INTRA_INTEL |
SubgroupAvcMotionEstimationINTEL |
Search window configuration:
Search window configuration values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_SEARCH_WINDOW_EXHAUSTIVE_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x1 |
AVC_ME_SEARCH_WINDOW_SMALL_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x2 |
AVC_ME_SEARCH_WINDOW_TINY_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x3 |
AVC_ME_SEARCH_WINDOW_EXTRA_TINY_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x4 |
AVC_ME_SEARCH_WINDOW_DIAMOND_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x5 |
AVC_ME_SEARCH_WINDOW_LARGE_DIAMOND_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x6 |
AVC_ME_SEARCH_WINDOW_RESERVED0_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x7 |
AVC_ME_SEARCH_WINDOW_RESERVED1_INTEL |
SubgroupAvcMotionEstimationINTEL |
SAD adjustment mode:
SAD adjustment values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_SAD_ADJUST_MODE_NONE_INTEL |
|
0x2 |
AVC_ME_SAD_ADJUST_MODE_HAAR_INTEL |
SubgroupAvcMotionEstimationINTEL |
Pixel resolution values:
Pixel resolution values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_SUBPIXEL_MODE_INTEGER_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x1 |
SubgroupAvcMotionEstimationINTEL |
|
0x3 |
SubgroupAvcMotionEstimationINTEL |
Cost precision values:
Cost precision values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_COST_PRECISION_QPEL_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x1 |
AVC_ME_COST_PRECISION_HPEL_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x2 |
AVC_ME_COST_PRECISION_PEL_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x3 |
AVC_ME_COST_PRECISION_DPEL_INTEL |
SubgroupAvcMotionEstimationINTEL |
Inter bidirectional weights:
Inter bidirectional weight values | Enabling Capabilities | |
---|---|---|
0x10 |
AVC_ME_BIDIR_WEIGHT_QUARTER_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x15 |
AVC_ME_BIDIR_WEIGHT_THIRD_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x20 |
AVC_ME_BIDIR_WEIGHT_HALF_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x2B |
AVC_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x30 |
AVC_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL |
SubgroupAvcMotionEstimationINTEL |
Inter border reached values
Inter border reached values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_BORDER_REACHED_LEFT_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x2 |
AVC_ME_BORDER_REACHED_RIGHT_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x4 |
AVC_ME_BORDER_REACHED_TOP_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x8 |
AVC_ME_BORDER_REACHED_BOTTOM_INTEL |
SubgroupAvcMotionEstimationINTEL |
Intra macro-block shape values
Intra macro-block shape values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_INTRA_16x16_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x1 |
AVC_ME_INTRA_8x8_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x2 |
AVC_ME_INTRA_4x4_INTEL |
SubgroupAvcMotionEstimationINTEL |
Inter skip block partition type:
Intra macro-block shape values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_SKIP_BLOCK_PARTITION_16x16_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x04000 |
AVC_ME_SKIP_BLOCK_PARTITION_8x8_INTEL |
SubgroupAvcMotionEstimationINTEL |
Inter skip motion vector mask:
Inter skip motion vector values | Enabling Capabilities | |
---|---|---|
(0x1<<24) |
AVC_ME_SKIP_BLOCK_16x16_FORWARD_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL |
(0x2<<24) |
AVC_ME_SKIP_BLOCK_16x16_BACKWARD_ ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL |
(0x3<<24) |
AVC_ME_SKIP_BLOCK_16x16_DUAL_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL |
(0x55<<24) |
AVC_ME_SKIP_BLOCK_8x8_FORWARD_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL |
(0xAA<<24) |
AVC_ME_SKIP_BLOCK_8x8_BACKWARD_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL |
(0xFF<<24) |
AVC_ME_SKIP_BLOCK_8x8_DUAL_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL |
(0x1<<24) |
AVC_ME_SKIP_BLOCK_8x8_0_FORWARD_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL |
(0x2<<24) |
AVC_ME_SKIP_BLOCK_8x8_0_BACKWARD_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL |
(0x1<<26) |
AVC_ME_SKIP_BLOCK_8x8_1_FORWARD_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL |
(0x2<<26) |
AVC_ME_SKIP_BLOCK_8x8_1_BACKWARD_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL |
(0x1<<28) |
AVC_ME_SKIP_BLOCK_8x8_2_FORWARD_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL |
(0x2<<28) |
AVC_ME_SKIP_BLOCK_8x8_2_BACKWARD_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL |
(0x1<<30) |
AVC_ME_SKIP_BLOCK_8x8_3_FORWARD_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL |
(0x2<<30) |
AVC_ME_SKIP_BLOCK_8x8_3_BACKWARD_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL |
Block based skip type values:
Block based skip type values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_BLOCK_BASED_SKIP_4x4_INTEL |
SubgroupAvcMotionEstimationINTEL |
0x80 |
AVC_ME_BLOCK_BASED_SKIP_8x8_INTEL |
SubgroupAvcMotionEstimationINTEL |
Luma intra partition mask values:
Luma intra partition mask values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_INTRA_LUMA_PARTITION_MASK_ALL_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
0x6 |
AVC_ME_INTRA_LUMA_PARTITION_MASK_16x16_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
0x5 |
AVC_ME_INTRA_LUMA_PARTITION_MASK_8x8_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
0x3 |
AVC_ME_INTRA_LUMA_PARTITION_MASK_4x4_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
Intra neighbor availability mask values:
Intra neighbor availability mask values | Enabling Capabilities | |
---|---|---|
0x60 |
AVC_ME_INTRA_NEIGHBOR_LEFT_MASK_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
0x10 |
AVC_ME_INTRA_NEIGHBOR_UPPER_MASK_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
0x8 |
AVC_ME_INTRA_NEIGHBOR_UPPER_RIGHT_MASK_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
0x4 |
AVC_ME_INTRA_NEIGHBOR_UPPER_LEFT_MASK_ENABLE_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
Luma intra modes:
Luma intra mode values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
0x1 |
AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
0x2 |
AVC_ME_LUMA_PREDICTOR_MODE_DC_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
0x3 |
AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
0x4 |
AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
0x4 |
AVC_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
0x5 |
AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
0x6 |
AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
0x7 |
AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
0x8 |
AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL |
Chroma intra modes:
Chroma intra mode values | Enabling Capabilities | |
---|---|---|
0x0 |
AVC_ME_CHROMA_PREDICTOR_MODE_DC_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationChromaINTEL |
0x1 |
AVC_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationChromaINTEL |
0x2 |
AVC_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationChromaINTEL |
0x3 |
AVC_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL |
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationChromaINTEL |
Reference image select values:
Reference image select values | Enabling Capabilities | |
---|---|---|
0x1 |
SubgroupAvcMotionEstimationINTEL |
|
0x2 |
SubgroupAvcMotionEstimationINTEL |
|
0x3 |
SubgroupAvcMotionEstimationINTEL |
Instructions
Modify Section 3.32.7, Constant-Creation Instructions, amending the desciption of OpConstantNull as follow:
OpConstantNull The null value is type dependent, defined as follows:
Result Type must be one of the following types:
|
Modify Section 3.32.10, Image Instructions, amending the description of OpImage as follows:
OpImage Result Type must be OpTypeImage. Sampled Image must have type OpTypeSampledImage or OpTypeVmeImageINTEL whose Image Type is the same as Result Type.
|
Modify Section 3.32.10, Image Instructions, adding the description of OpVmeImageINTEL as follows:
OpVmeImageINTEL Result Type must be the OpTypeVmeImageINTEL type. Image is an object whose type is an OpTypeImage, whose Sampled operand is 0 or 1, and whose Dim operand is not SubpassData. Sampler must be an object whose type is OpTypeSampler.
|
Modify Section 3.32.21, Group Instructions, adding to the end of the list of instructions the following MCE instructions:
MCE instructions
A set of generic MCE operations which may be called for IME, REF, or SIC operations with the restrictions as stated in their descriptions. They can be called only during specific phases of these operations as indicated in the description of the instructions.
These instruction are only guaranteed to work correctly if placed strictly within uniform control flow within the Subgroup execution scope. This ensures that if any invocation executes it, all invocations will execute it. If placed elsewhere, the results are undefined.
Multi-reference cost configuration instructions:
These instructions enable multi-reference image costing. They allow for the configuration of the payloads to favorably bias the major partitions coming from reference images that are closer to the source image, than the ones coming from reference images that are further away. The distance of the reference images, in the timing order, from the source image is implied based on the order in which the reference images are declared in the kernel parameter operand list.
OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL Result Type must be an OpTypeInt with 8-bit Width and 0 Signedness in U4U4 format. Slice Type must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid slice type value as per Section 3, Binary Form. Qp must be a 8-bit scalar integer type and a valid quantization parameter value between 0 and 51. It is treated as an unsigned value. |
Capability: |
||||
5 |
5713 |
<id> Result Type |
Result <id> |
<id> Slice Type |
<id> Qp |
OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL Reference major partitions get associated with a penalty based on its distance from the source image. The Reference Base Penalty is scaled using a scaling factor based on the implied distance of the reference image from the source image as shown below.
Result Type must be the OpTypeAvcMcePayloadINTEL type. Reference Base Penalty must be 8-bit scalar integer type in U4U4 format and the decoded integer value must fit within 12 bits. It is treated as an unsigned value. Payload must be the OpTypeAvcMcePayloadINTEL type. |
Capability: |
||||||||||||
5 |
5714 |
<id> Result Type |
Result <id> |
<id> Reference Base Penalty |
<id> Payload |
Inter shape and direction cost configuration instructions
These instructions enable shape costing for inter estimation. They allow for the configuration of payloads for the biasing of certain shapes over others based on the configured parameters.
OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL Result Type must be an OpTypeInt with 64-bit Width and 0 Signedness. Slice Type must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid slice type value as per Section 3, Binary Form. Qp must be a 8-bit scalar integer type and a valid quantization parameter value between 0 and 51. It is treated as an unsigned value. |
Capability: |
||||
5 |
5715 |
<id> Result Type |
Result <id> |
<id> Slice Type |
<id> Qp |
OpSubgroupAvcMceSetInterShapePenaltyINTEL Result Type must be the OpTypeAvcMcePayloadINTEL type. Packed Shape Penalty must be 64-bit scalar integer type. It is treated as an unsigned value. The following bits specify the shape penalty in U4U4 format:
The U4U4 decoded integer values for byte 0 and byte 4 must bit fit in 12 bits, while the U4U4 decoded integer values for the other bytes must fit within 10 bits. Payload must be the OpTypeAvcMcePayloadINTEL type. |
Capability: |
||||||||||||||||
5 |
5716 |
<id> Result Type |
Result <id> |
<id> Packed Shape Penalty |
<id> Payload |
OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL Result Type must be an OpTypeInt with 8-bit Width and 0 Signedness. Slice Type must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid slice type value as per Section 3, Binary Form. Qp must be a 8-bit scalar integer type and a valid quantization parameter value between 0 and 51. It is treated as an unsigned value. |
Capability: |
||||
5 |
5717 |
<id> Result Type |
Result <id> |
<id> Slice Type |
<id> Qp |
OpSubgroupAvcMceSetInterDirectionPenaltyINTEL Result Type must be the OpTypeAvcMcePayloadINTEL type. Direction Cost must be 8-bit scalar integer type in U4U4 format and the decoded integer value must fit within 12 bits. It is treated as an unsigned value. Payload must be the OpTypeAvcMcePayloadINTEL type. |
Capability: |
||||
5 |
5718 |
<id> Result Type |
Result <id> |
<id> Direction Cost |
<id> Payload |
Intra shape cost configuration phase instructions
These instructions enable shape costing for intra estimation. They allow for the configuration of payloads for biasing of certain shapes over others based on the configured parameters. Only the instruction providing the default shape penalty is specified as an MCE instruction. The instruction which actually configures the payload for the intra estimation operation is specified as a SIC instruction.
OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL Result Type must be an OpTypeInt with 32-bit Width and 0 Signedness. Slice Type must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid slice type value as per Section 3, Binary Form. Qp must be a 8-bit scalar integer type and a valid quantization parameter value between 0 and 51. It is treated as an unsigned value. |
Capability: |
||||
5 |
5719 |
<id> Result Type |
Result <id> |
<id> Slice Type |
<id> Qp |
Inter motion vector cost configuration phase instructions
These instructions enable motion vector costing for inter estimation. The distortion measure is augmented to favor motion vectors closer to the cost-center considered in conjunction with the primary objective of minimizing the SAD between the source and reference blocks.
OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL Result Type must be a vector(2) of i32 values and 0 Signedness. Slice Type must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid slice type value as per Section 3, Binary Form. Qp must be a 8-bit scalar integer type and a valid quantization parameter value between 0 and 51. It is treated as an unsigned value. |
Capability: |
||||
5 |
5720 |
<id> Result Type |
Result <id> |
<id> Slice Type |
<id> Qp |
OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL Result Type must be a vector(2) of i32 values and 0 Signedness. |
Capability: |
||
3 |
5721 |
<id> Result Type |
Result <id> |
OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL Result Type must be a vector(2) of i32 values and 0 Signedness. |
Capability: |
||
3 |
5722 |
<id> Result Type |
Result <id> |
OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL Result Type must be a vector(2) of i32 values and 0 Signedness. |
Capability: |
||
3 |
5723 |
<id> Result Type |
Result <id> |
OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL Result Type must be the OpTypeAvcMcePayloadINTEL type. Packed Cost Center Delta must be an OpTypeInt with 64-bit Width and 0 Signedness. It is the packed bidirectional cost center delta value relative to the source macroblock, which specifies the 4 bidirectional cost centers of each of the 8x8 partitions of the reference image. If only unidirectional search is performed then the values of the backward reference cost centers must be zero. Work-item n provides the value of cost center n. It is specified in QPEL units. For 16x16 partitions work-item 0 provides the cost center. For 8x16 partitions work-items 0 and 1 provide the cost centers. For 16x8 partitions work-items 0 and 2 provide the cost centers. The X and Y coordinates of each cost center delta must be in the range [-2048, 2047] and [-512.00 to 511.75] respectively, otherwise the results are undefined. Packed Cost Table must be a vector(2) of i32 values and 0 Signedness and specifies the cost penalties for pre-defined control points in U4U4 format in the cost function curve. The first 7 bytes specify 7 control points representing consecutive powers-of-two delta units (20 to 26). Each delta unit, dx, is the distance of a motion vector, mv, from the specified cost center, cc (dx=abs(mv-cc)). The cost penalty values at in-between control points are linearly interpolated. The range of the cost function is defined to be from 20 to 26 delta units. The 8th byte of the packed cost table specifies the penalty base factor (over_cost) for dx distances that are out-of-range. The penalty of out-of-range cost dx distances is computed as min(over_cost + int(dx) - 64, 255). Cost Precision must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid cost precision value as per Section 3, Binary Form, and specifies the precision of the delta units from the cost center, dx. This effectively can be used to control the range of the cost function as follows:
The inter distortion for a block can be described by the following formula: Distortion = SAD(or HAAR) + MV_Cost_Penalty + Shape_Penalty + Direction_Cost + Multi_Reference_Penalty Payload must be the OpTypeAvcMcePayloadINTEL type. |
Capability: |
|||||||||||||||||||||
7 |
5724 |
<id> Result Type |
Result <id> |
<id> Packed Cost Center Delta |
<id> Packed Cost Table |
<id> Cost Precision |
<id> Payload |
Intra mode cost configuration phase instructions
These instructions enable mode costing for intra estimation. They allow for the configuration of payloads to bias the computed intra modes to be closer to their configured neighbor modes. This form of costing is similar to the inter motion vector costing. Only the instructions providing the defaults mode costs are specified as MCE instructions. The remaining instructions which actually configure the payload for the intra estimation operation is specified as SIC instruction.
OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL Result Type must be an OpTypeInt with 8-bit Width and 0 Signedness in U4U4 format. Slice Type must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid slice type value as per Section 3, Binary Form. Qp must be a 8-bit scalar integer type and a valid quantization parameter value between 0 and 51. It is treated as an unsigned value. |
Capability: |
||||
5 |
5725 |
<id> Result Type |
Result <id> |
<id> Slice Type |
<id> Qp |
OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL Result Type must be an OpTypeInt with 32-bit Width and 0 Signedness. |
Capability: |
||
3 |
5726 |
<id> Result Type |
Result <id> |
OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL Result Type must be an OpTypeInt with 8-bit Width and 0 Signedness in U4U4 format. |
Capability: |
||
3 |
5727 |
<id> Result Type |
Result <id> |
Miscellaneous property configuration phase instructions
These instructions enable miscellaneous MCE properties settings.
OpSubgroupAvcMceSetAcOnlyHaarINTEL Result Type must be the OpTypeAvcMcePayloadINTEL type. Payload must be the OpTypeAvcMcePayloadINTEL type. |
Capability: |
|||
4 |
5728 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL Result Type must be the OpTypeAvcMcePayloadINTEL type. Source Field Polarity must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid field polarity value as per Section 3, Binary Form indicating the field polarity for the source image. Payload must be the OpTypeAvcMcePayloadINTEL type. |
Capability: |
||||
5 |
5729 |
<id> Result Type |
Result <id> |
<id> Source Field Polarity |
<id> Payload |
OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL Result Type must be the OpTypeAvcMcePayloadINTEL type. Reference Field Polarity must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid field polarity value as per Section 3, Binary Form indicating the field polarity for the reference image. Payload must be the OpTypeAvcMcePayloadINTEL type. |
Capability: |
||||
5 |
5730 |
<id> Result Type |
Result <id> |
<id> Reference Field Polarity |
<id> Payload |
OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL Result Type must be the OpTypeAvcMcePayloadINTEL type. Forward Reference Field Polarity must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid field polarity value as per Section 3, Binary Form indicating the field polarity for the forward reference image. Backward Reference Field Polarity must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid field polarity value as per Section 3, Binary Form indicating the field polarity for the forward reference image. Payload must be the OpTypeAvcMcePayloadINTEL type. |
Capability: |
|||||
6 |
5731 |
<id> Result Type |
Result <id> |
<id> Forward Reference Field Polarity |
<id> Backward Reference Field Polarity |
<id> Payload |
Result processing phase instructions
These instructions facilitate the extraction of components of the result from VME unit.
OpSubgroupAvcMceGetMotionVectorsINTEL Up to 16 packed BMVs are returned, one per work-item. If the MCE search operation’s payload was setup for unidirectional search then only the forward packed MV will be valid in each BMV, otherwise both packed MVs will be valid. The BMVs have to be selected by their respective work-items based on the result block major and minor shapes. If the major shape is:
If the range of work-items for the 8x8 major partition is [n, n+3] and the minor shape is:
Result Type must be an OpTypeInt with 64-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultINTEL type. |
Capability: |
|||||
4 |
5738 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcMceGetInterDistortionsINTEL The distortions have to be selected by their respective work-items based on the result block major and minor shapes just as for the result MVs as described above. Result Type must be an OpTypeInt with 16-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultINTEL type. |
Capability: |
|||
4 |
5739 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcMceGetBestInterDistortionsINTEL Result Type must be an OpTypeInt with 16-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultINTEL type. |
Capability: |
|||
4 |
5740 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcMceGetInterMajorShapeINTEL The returned values are as per the inter-MB major shapes values as per Section 3, Binary Form. This can only be called as part of an IME or REF operation evaluation. Result Type must be an OpTypeInt with 8-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultINTEL type. |
Capability: |
|||
4 |
5741 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcMceGetInterMinorShapeINTEL It returns a bit field with the minor shapes for the 4 8x8 sub-partitions in traditional Z order. Two bits are reserved for each of the four sub-partitions in row-major order. The returned 2-bit values are as per the inter-MB minor shapes values as per Section 3, Binary Form. This instruction returns valid results only if the major shape is 8x8, otherwise the results are undefined. This can only be called as part of an IME or REF operation evaluation. Result Type must be an OpTypeInt with 8-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultINTEL type. |
Capability: |
|||
4 |
5742 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcMceGetInterDirectionsINTEL It returns a bit field with the direction for up to 4 major sub-partitions in traditional Z order. Two bits are reserved for each of the four sub-partitions. The returned 2-bit values are as per the inter-MB major shape direction values as per Section 3, Binary Form. If the major partition is:
The returned values are as per the inter direction values as per Section 3, Binary Form. This can only be called as part of an IME or REF operation evaluation. Result Type must be an OpTypeInt with 8-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultINTEL type. |
Capability: |
|||
4 |
5743 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcMceGetInterMotionVectorCountINTEL This can only be called as part of an IME or REF operation evaluation. Result Type must be an OpTypeInt with 8-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultINTEL type. |
Capability: |
|||
4 |
5744 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcMceGetInterReferenceIdsINTEL
The values of each individual 4-bit reference identifier range from 0 to 15, with each value identifying the distance of ordered pair of forward/backward reference images as declared in the VME kernel parameter operand list. If the dual-reference evaluation instructions are not used, then the values of the backward reference identifiers are undefined. The blocks are numbered using the traditional Z order. For larger block sizes, the sub-block reference identifier pairs are replicated. For example, for a 16x16 block all four pairs of reference identifiers are replicated to the value of the first pair for block 0.
Result Type must be an OpTypeInt with 32-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultINTEL type. |
Capability: |
|||||||||||||||||||||
4 |
5745 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL
If the dual-reference evaluation instructions are not used, then the values of the backward reference field polarities are undefined. The blocks are numbered using the traditional Z order. For larger block sizes, the sub-block reference field polarities are replicated. For example, for a 16x16 block all four pairs of reference field polarities are replicated to the value of the first pair for block 0.
Result Type must be an OpTypeInt with 8-bit Width and 0 Signedness. Packed Reference Ids must be an OpTypeInt with 32-bit Width and 0 Signedness, and is as defined by the return value of OpSubgroupAvcMceGetInterReferenceIdsINTEL. Packed Reference Parameter Field Polarities must be an OpTypeInt with 32-bit Width and 0 Signedness, and specifies the packed bit field of field polarities for each of the (up to 16) forward/backward interleaved pairs of reference images in the same order as specified in the kernel parameter operand list, as used for the inter search operation. If less than 16 pairs are used then the corresponding bit field values are ignored. Payload must be the OpTypeAvcImeResultINTEL type. |
Capability: |
|||||||||||||||||||||||
6 |
5746 |
<id> Result Type |
Result <id> |
<id> Packed Reference Ids |
<id> Packed Reference Parameter Field Polarities |
<id> Payload |
IME instructions
A set of ordered phases of instructions are required to be called to evaluate an integer motion estimation result.
These instruction are only guaranteed to work correctly if placed strictly within uniform control flow within the Subgroup execution scope. This ensures that if any invocation executes it, all invocations will execute it. If placed elsewhere, the results are undefined.
Initialization instructions
These instructions create a properly initialized payload that can be used for further configured for evaluating IME operations. This is a required initial phase.
OpSubgroupAvcImeInitializeINTEL The payload is initialized for progressive frame operations, and the cost configuration values and the miscellaneous property values are all initialized to zero. The cost configuration and the miscellaneous property configuration instructions must be used to override the initial configurations in the payload.
Result Type must be the OpTypeAvcImePayloadINTEL type. Src Coord must be a vector(2) of i16 values and 0 Signedness. It represents the 2D offset of the top left corner of the source MB in pixel units in the source image. Source MBs at the image borders are allowed to be partial, but the top-left corner must be within the image. Partition Mask must be an OpTypeInt with 8-bit Width and 0 Signedness. The legal values can be composed by setting the appropriate bit fields specified by partition mask values as per Section 3, Binary Form using OpBitwiseAnd. SAD Adjustment must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid SAD adjustment mode as per Section 3, Binary Form. If it is set to AVC_ME_SAD_ADJUST_MODE_HAAR_INTEL, a simple wavelet transform, Haar transform, is used to refine the distortion measure of SAD. Haar transform here is used as a coarse estimation of the integer transform. |
Capability: |
|||||||
6 |
5747 |
<id> Result Type |
Result <id> |
<id> Src Coord |
<id> Partition Mask |
<id> SAD Adjustment |
Configuration instructions
These instructions allow for configuration of the search window. A call to either OpSubgroupAvcImeSetSingleReferenceINTEL or OpSubgroupAvcImeSetDualReferenceINTEL is required. This is a required phase immediately following the initialization phase.
OpSubgroupAvcImeSetSingleReferenceINTEL
Result Type must be the OpTypeAvcImePayloadINTEL type. Ref Offset specifies the 2D reference window offset, and must be a vector(2) of i16 values and interpreted as signed values. The X and Y coordinates must be in the range [-2048, 2047], otherwise the results are undefined. The reference window is allowed to be partially outside the image. Pixel replication is applied to generate out-of-bound reference pixels. It is specified in PEL units. Results are undefined in the reference region is completely outside the image. Search Window Config must be an OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid unreserved search window configuration value as per Section 3, Binary Form. Payload must be the OpTypeAvcImePayloadINTEL type. |
Capability: |
|||||||
6 |
5748 |
<id> Result Type |
Result <id> |
<id> Ref Offset |
<id> Search Window Config |
<id> Payload |
OpSubgroupAvcImeSetDualReferenceINTEL
Result Type must be the OpTypeAvcImePayloadINTEL type. Fwd Ref Offset/Bwd Ref Offset specify the 2D forward/backward reference window offset, and must be a vector(2) of i16 values and interpreted as signed values. The X and Y coordinates must be in the range [-2048, 2047], otherwise the results are undefined. The reference window is allowed to be partially outside the image. Pixel replication is applied to generate out-of-bound reference pixels. It is specified in PEL units. Results are undefined in the reference region is completely outside the image. Search Window Config must be an OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid unreserved search window configuration value as per Section 3, Binary Form. Payload must be the OpTypeAvcImePayloadINTEL type. |
Capability: |
||||||||
7 |
5749 |
<id> Result Type |
Result <id> |
<id> Fwd Ref Offset |
<id> Bwd Ref Offset |
id> Search Window Config |
<id> Payload |
OpSubgroupAvcImeRefWindowSizeINTEL Result Type must be a vector(2) of i16 values and 0 Signedness. Search Window Config must be an OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid unreserved search window configuration value as per Section 3, Binary Form. Dual Ref must be a 8-bit scalar integer type and must evaluate to zero for a single reference search window and one for a dual-reference search window. It is treated as an unsigned value. |
Capability: |
||||
5 |
5750 |
<id> Result Type |
Result <id> |
<id> Search Window Config |
<id> Dual Ref |
OpSubgroupAvcImeAdjustRefOffsetINTEL
Result Type must be a vector(2) of i16 values and interpreted as signed values. Ref Offset must be a vector(2) of i16 values and interpreted as signed values. It specifies the 2D reference window offset. The X and Y coordinates must be in the range [-2048, 2047], otherwise the results are undefined. Src Coord must be a vector(2) of i16 values and 0 Signedness. It represents the 2D offset of the top left corner of the source MB in pixel units in the source image. Source MBs at the image borders are allowed to be partial, but the top-left corner must be within the image. Ref Window Size must be a vector(2) of i16 values and 0 Signedness. It specifies the 2D size of the reference window in pixel units. Image Size must be a vector(2) of i16 values and 0 Signedness. It specifies the 2D size of the progressive scan, or top or bottom fields, of the interlaced scan image in pixel units. |
Capability: |
||||||||||
7 |
5751 |
<id> Result Type |
Result <id> |
<id> Ref Offset |
<id> Src Coord |
<id> Ref Window Size |
<id> Image Size |
Payload type conversion instructions
These are optional instructions that may be called following the search configuration phase to convert IME payload to MCE payloads and vice-versa.
OpSubgroupAvcImeConvertToMcePayloadINTEL Result Type must be the OpTypeAvcMcePayloadINTEL type. Payload must be the OpTypeAvcImePayloadINTEL type. |
Capability: |
|||
4 |
5752 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcMceConvertToImePayloadINTEL Result Type must be the OpTypeAvcImePayloadINTEL type. Payload must be the OpTypeAvcMcePayloadINTEL type. |
Capability: |
|||
4 |
5732 |
<id> Result Type |
Result <id> |
<id> Payload |
Miscellaneous property configuration instructions
These are optional instructions that may be called following the search configuration phase to enable miscellaneous properties setting in the payload.
OpSubgroupAvcImeSetMaxMotionVectorCountINTEL
Result Type must be the OpTypeAvcImePayloadINTEL type. Max Motion Vector Count must be an OpTypeInt with 8-bit Width and 0 Signedness, and specifies the maximum number of motion vectors allowed for the current MB. It must be in the range [1, 32], otherwise the results are undefined. Payload must be the OpTypeAvcImePayloadINTEL type. |
Capability: |
||||||
5 |
5753 |
<id> Result Type |
Result <id> |
<id> Max Motion Vector Count |
<id> Payload |
OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL Default is to enable it. Result Type must be the OpTypeAvcImePayloadINTEL type. Payload must be the OpTypeAvcImePayloadINTEL type. |
Capability: |
|||
4 |
5754 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL The input payload must have been configured for a single-reference search with the 16x16 partition enabled for this threshold to be set, or else the results are undefined. Result Type must be an OpTypeInt with 8-bit Width and 0 Signedness. Threshold must be an OpTypeInt with 8-bit Width and 0 Signedness, and is specified in U4U4 format. Additionally, the integer value must fit within 14 bits. Payload must be the OpTypeAvcImePayloadINTEL type. |
Capability: |
||||
5 |
5755 |
<id> Result Type |
Result <id> |
<id> Threshold |
<id> Payload |
OpSubgroupAvcImeSetWeightedSadINTEL These values are used to decrease the SAD magnitude of each 4x4 sub-block by dividing the SAD of 4x4 sub-block of the source MB by its mapped weight. It requires a Partition Mask of 16x16 and forward Search Window Configuration. The weighting pattern used is the traditional Z order for each 4x4 block. Weighted-SAD Control Mapping: 0 1 4 5 2 3 6 7 8 9 C D A B E F A prior call to OpSubgroupAvcImeSetSingleReferenceINTEL to set up the forward reference image is required.
Packed Sad Weights must be an OpTypeInt with 32-bit Width and 0 Signedness. Each weight is of 2 bits represented in a packed format for each of the 4x4 blocks in Z order. Payload must be the OpTypeAvcImePayloadINTEL type. |
Capability: |
||||||
5 |
5756 |
<id> Result Type |
Result <id> |
<id> Packed Sad Weights |
<id> Payload |
Evaluation instructions
These instructions perform the evaluation of the IME operation configured in the payload with a VME media sampler and return the results.
OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL Result Type must be the OpTypeAvcImeResultINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a forward reference image. Payload must be the OpTypeAvcImePayloadINTEL type. |
Capability: |
|||||
6 |
5757 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Ref Image |
<id> Payload |
OpSubgroupAvcImeEvaluateWithDualReferenceINTEL Result Type must be the OpTypeAvcImeResultINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Fwd Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a forward reference image. Bwd Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a backward reference image. Payload must be the OpTypeAvcImePayloadINTEL type. |
Capability: |
||||||
7 |
5758 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Fwd Ref Image |
<id> Bwd Ref Image |
<id> Payload |
OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL Result Type must be the OpTypeAvcImeResultSingleReferenceStreamoutINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a forward reference image. Payload must be the OpTypeAvcImePayloadINTEL type. |
Capability: |
|||||
6 |
5761 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Ref Image |
<id> Payload |
OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL Result Type must be the OpTypeAvcImeResultDualReferenceStreamoutINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Fwd Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a forward reference image. Bwd Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a backward reference image. Payload must be the OpTypeAvcImePayloadINTEL type. |
Capability: |
||||||
7 |
5762 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Fwd Ref Image |
<id> Bwd Ref Image |
<id> Payload |
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL Result Type must be the OpTypeAvcImeResultINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a forward reference image. Payload must be the OpTypeAvcImePayloadINTEL type. Streamin Components must be the OpTypeAvcImeSingleReferenceStreaminINTEL type. |
Capability: |
||||||
7 |
5759 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Ref Image |
<id> Payload |
<id> Streamin Components |
OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL Result Type must be the OpTypeAvcImeResultINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Fwd Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a forward reference image. Bwd Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a backward reference image. Payload must be the OpTypeAvcImePayloadINTEL type. Streamin Components must be the OpTypeAvcImeDualReferenceStreaminINTEL type. |
Capability: |
|||||||
8 |
5760 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Fwd Ref Image |
<id> Bwd Ref Image |
<id> Payload |
<id> Streamin Components |
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL Result Type must be the OpTypeAvcImeResultSingleReferenceStreamoutINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a forward reference image.+ Payload must be the OpTypeAvcImePayloadINTEL type. Streamin Components must be the OpTypeAvcImeSingleReferenceStreaminINTEL type. |
Capability: |
||||||
7 |
5763 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Ref Image |
<id> Payload |
<id> Streamin Components |
OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL Result Type must be the OpTypeAvcImeResultDualReferenceStreamoutINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Fwd Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a forward reference image. Bwd Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a backward reference image. Payload must be the OpTypeAvcImePayloadINTEL type. Streamin Components must be the OpTypeAvcImeDualReferenceStreaminINTEL type. |
Capability: |
|||||||
8 |
5764 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Fwd Ref Image |
<id> Bwd Ref Image |
<id> Payload |
<id> Streamin Components |
Result type conversion instructions
These are optional instructions that may be called following the evaluation phase to convert IME results to MCE results and vice-versa.
OpSubgroupAvcImeConvertToMceResultINTEL Result Type must be the OpTypeAvcMceResultINTEL type. Payload must be the OpTypeAvcImeResultINTEL type. |
Capability: |
|||
4 |
5765 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcMceConvertToImeResultINTEL Result Type must be the OpTypeAvcImeResultINTEL type. Payload must be the OpTypeAvcMceResultINTEL type. |
Capability: |
|||
4 |
5733 |
<id> Result Type |
Result <id> |
<id> Payload |
Result processing instructions
These instructions are called following the evaluation phase to extract the various result components from an IME evaluation result.
OpSubgroupAvcImeGetSingleReferenceStreaminINTEL Result Type must be the OpTypeAvcImeSingleReferenceStreaminINTEL type. Payload must be the OpTypeAvcImeResultSingleReferenceStreamoutINTEL type. |
Capability: |
|||
4 |
5766 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcImeGetDualReferenceStreaminINTEL Result Type must be the OpTypeAvcImeDualReferenceStreaminINTEL type. Payload must be the OpTypeAvcImeResultDualReferenceStreamoutINTEL type. |
Capability: |
|||
4 |
5767 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL Result Type must be the OpTypeAvcImeResultINTEL type. Payload must be the OpTypeAvcImeResultSingleReferenceStreamoutINTEL type. |
Capability: |
|||
4 |
5768 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcImeStripDualReferenceStreamoutINTEL Result Type must be the OpTypeAvcImeResultINTEL type. Payload must be the OpTypeAvcImeResultDualReferenceStreamoutINTEL type. |
Capability: |
|||
4 |
5769 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL Up to 4 packed MVs are returned, one per work-item. If the major shape is:
Result Type must be a OpTypeInt with 32-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultSingleReferenceStreamoutINTEL type. Major Shape must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major shape value as per Section 3, Binary Form. |
Capability: |
||||
5 |
5770 |
<id> Result Type |
Result <id> |
<id> Payload |
<id> Major Shape |
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL Up to 4 packed MVs are returned, one per work-item in the same format as for motion vectors for single reference streamout as described in OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL. Result Type must be a OpTypeInt with 32-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultDualReferenceStreamoutINTEL type. Major Shape must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major shape value as per Section 3, Binary Form. Direction must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major direction value as per Section 3, Binary Form. |
Capability: |
|||||
6 |
5773 |
<id> Result Type |
Result <id> |
<id> Payload |
<id> Major Shape |
<id> Direction |
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL Up to 4 distortions are returned, one per work-item in the same format as for motion vectors as described in OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL. Result Type must be a OpTypeInt with 16-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultSingleReferenceStreamoutINTEL type. Major Shape must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major shape value as per Section 3, Binary Form. |
Capability: |
||||
5 |
5771 |
<id> Result Type |
Result <id> |
<id> Payload |
<id> Major Shape |
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL Up to 4 distortion are returned, one per work-item in the same format as for motion vectors for single reference streamout as described in OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL. Result Type must be a OpTypeInt with 16-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultDualReferenceStreamoutINTEL type. Major Shape must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major shape value as per Section 3, Binary Form. Direction must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major direction value as per Section 3, Binary Form. |
Capability: |
|||||
6 |
5774 |
<id> Result Type |
Result <id> |
<id> Payload |
<id> Major Shape |
<id> Direction |
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL Up to 4 reference identifiers are returned, one per work-item in the same format as for motion vectors as described in OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL. Result Type must be a OpTypeInt with 8-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultSingleReferenceStreamoutINTEL type. Major Shape must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major shape value as per Section 3, Binary Form. |
Capability: |
||||
5 |
5772 |
<id> Result Type |
Result <id> |
<id> Payload |
<id> Major Shape |
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL Up to 4 reference identifiers are returned, one per work-item in the same format as for motion vectors for single reference streamout as described in OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL. Result Type must be a OpTypeInt with 8-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultDualReferenceStreamoutINTEL type. Major Shape must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major shape value as per Section 3, Binary Form. Direction must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major direction value as per Section 3, Binary Form. |
Capability: |
|||||
6 |
5775 |
<id> Result Type |
Result <id> |
<id> Payload |
<id> Major Shape |
<id> Direction |
OpSubgroupAvcImeGetBorderReachedINTEL The search window must have been configured for a forward reference if image_select is set as AVC_ME_FRAME_FORWARD_INTEL and with a backward reference if image_select is set as AVC_ME_FRAME_BACKWARD_INTEL. Result Type must be a OpTypeInt with 8-bit Width and 0 Signedness. Image Select must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is either AVC_ME_FRAME_FORWARD_INTEL or AVC_ME_FRAME_BACKWARD_INTEL. Payload must be the OpTypeAvcImeResultINTEL type. |
Capability: |
||||
5 |
5776 |
<id> Result Type |
Result <id> |
<id> Image Select |
<id> Payload |
OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL Result Type must be a OpTypeInt with 8-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultINTEL type. |
Capability: |
|||
4 |
5777 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL Result Type must be a OpTypeInt with 8-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultINTEL type. |
Capability: |
|||
4 |
5778 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL
Result Type must be a OpTypeInt with 32-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultINTEL type. |
Capability: |
|||||
4 |
5779 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL Result Type must be a OpTypeInt with 16-bit Width and 0 Signedness. Payload must be the OpTypeAvcImeResultINTEL type. |
Capability: |
|||
4 |
5780 |
<id> Result Type |
Result <id> |
<id> Payload |
REF instructions
These instruction are only guaranteed to work correctly if placed strictly within uniform control flow within the Subgroup execution scope. This ensures that if any invocation executes it, all invocations will execute it. If placed elsewhere, the results are undefined.
Initialization instructions
These instructions create a properly initialized payload that can be used for further configured for evaluating REF operations. This is a required initial phase. A call to either OpSubgroupAvcFmeInitializeINTEL or OpSubgroupAvcBmeInitializeINTEL is required.
OpSubgroupAvcFmeInitializeINTEL The payload is initialized for progressive frame operations, and the cost configuration values and the miscellaneous property values are all initialized to zero. The cost configuration and the miscellaneous property configuration instructions must be used to override the initial configurations in the payload. Result Type must be the OpTypeAvcRefPayloadINTEL type. Src Coord must be a vector(2) of i16 values and 0 Signedness, and represents the 2D offset of the top left corner of the source MB in pixel units in the source image.
Motion Vectors must be an OpTypeInt with 64-bit Width and 0 Signedness. It represents the BMVs returned by an IME in the same format as returned by OpSubgroupAvcMceGetMotionVectorsINTEL. The MVs are in QPEL units. The X and Y coordinates of each MV must be in the range [-2048.00, 2047.75), otherwise the results are undefined.
Major Shapes must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values and format for it are as per the return value of OpSubgroupAvcMceGetInterMajorShapeINTEL. Minor Shapes must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values and format for it are as per the return value of OpSubgroupAvcMceGetInterMajorShapeINTEL. Directions must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values and format for it are as per the return value of OpSubgroupAvcMceGetInterDirectionsINTEL. Pixel Resolution must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values for it are either AVC_ME_SUBPIXEL_MODE_HPEL_INTEL or AVC_ME_SUBPIXEL_MODE_QPEL_INTEL. Sad Adjustment must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid sad adjustment value as per Section 3, Binary Form. |
Capability: |
|||||||||||||
10 |
5781 |
<id> Result Type |
Result <id> |
<id> Src Coord |
<id> Motion Vectors |
<id> Major Shapes |
<id> Minor Shapes |
<id> Direction |
<id> Pixel Resolution |
<id> Sad Adjustment |
OpSubgroupAvcBmeInitializeINTEL The payload is initialized for progressive frame operations, and the cost configuration values and the miscellaneous property values are all initialized to zero. The cost configuration and the miscellaneous property configuration instructions must be used to override the initial configurations in the payload. Result Type must be the OpTypeAvcRefPayloadINTEL type. Src Coord must be a vector(2) of i16 values and 0 Signedness, and represents the 2D offset of the top left corner of the source MB in pixel units in the source image.
Motion Vectors must be an OpTypeInt with 64-bit Width and 0 Signedness. It represents the BMVs returned by an IME in the same format as returned by OpSubgroupAvcMceGetMotionVectorsINTEL. The MVs are in QPEL units. The X and Y coordinates of each MV must be in the range [-2048.00, 2047.75), otherwise the results are undefined.
Major Shapes must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values and format for it are as per the return value of OpSubgroupAvcMceGetInterMajorShapeINTEL. Minor Shapes must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values and format for it are as per the return value of OpSubgroupAvcMceGetInterMajorShapeINTEL. Directions must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values and format for it are as per the return value of OpSubgroupAvcMceGetInterDirectionsINTEL. Pixel Resolution must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values for it are either AVC_ME_SUBPIXEL_MODE_HPEL_INTEL or AVC_ME_SUBPIXEL_MODE_QPEL_INTEL. Bidirectional Weight must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid bidirectional weight value as per Section 3, Binary Form. Sad Adjustment must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid sad adjustment value as per Section 3, Binary Form. |
Capability: |
||||||||||||||
11 |
5782 |
<id> Result Type |
Result <id> |
<id> Src Coord |
<id> Motion Vectors |
<id> Major Shapes |
<id> Minor Shapes |
<id> Direction |
<id> Pixel Resolution |
<id> Bidirectional Weight |
<id> Sad Adjustment |
Payload type conversion instructions
These are optional instructions that may be called following the initialization phase to convert REF payload to MCE payloads and vice-versa.
OpSubgroupAvcRefConvertToMcePayloadINTEL Result Type must be the OpTypeAvcMcePayloadINTEL type. Payload must be the OpTypeAvcRefPayloadINTEL type. |
Capability: |
|||
4 |
5783 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcMceConvertToRefPayloadINTEL Result Type must be the OpTypeAvcRefPayloadINTEL type. Payload must be the OpTypeAvcMcePayloadINTEL type. |
Capability: |
|||
4 |
5734 |
<id> Result Type |
Result <id> |
<id> Payload |
Miscellaneous property configuration instructions
These are optional instructions that may be called following the initialization phase to enable miscellaneous properties setting in the payload.
OpSubgroupAvcRefSetBidirectionalMixDisableINTEL Default is to enable it. Result Type must be the OpTypeAvcRefPayloadINTEL type. Payload must be the OpTypeAvcRefPayloadINTEL type. |
Capability: |
|||
4 |
5784 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcRefSetBilinearFilterEnableINTEL
Default is to enable it. Result Type must be the OpTypeAvcRefPayloadINTEL type. Payload must be the OpTypeAvcRefPayloadINTEL type. |
Capability: |
|||||
4 |
5785 |
<id> Result Type |
Result <id> |
<id> Payload |
Evaluation instructions
These instructions perform the evaluation of the REF operation configured in the payload with a VME media sampler and return the results.
OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL Result Type must be the OpTypeAvcRefResultINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a forward reference image. Payload must be the OpTypeAvcRefPayloadINTEL type. |
Capability: |
|||||
6 |
5786 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Ref Image |
<id> Payload |
OpSubgroupAvcRefEvaluateWithDualReferenceINTEL Result Type must be the OpTypeAvcRefResultINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Fwd Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a forward reference image. Bwd Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a backward reference image. Payload must be the OpTypeAvcRefPayloadINTEL type. |
Capability: |
||||||
7 |
5787 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Fwd Ref Image |
<id> Bwd Ref Image |
<id> Payload |
OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL Result Type must be the OpTypeAvcRefResultINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Packed Reference Ids must be an OpTypeInt with 32-bit Width and 0 Signedness, with the following bits specifying the values for the pair of reference images for each major partition.
A forward[backward] reference identifier value of n indicates the forward[backward] image from the nth pair of forward/backward reference images, with the value of n ranging from 0 to 15. If the REF operation is configured with only forward reference images then, the values of the backward reference identifiers are not used. The blocks are numbered using the traditional Z order. For larger block sizes, the sub-block reference identifier pairs must be replicated. For example, for a 16x16 block, all four pair of reference identifiers must be replicated to the value of the first pair for block 0.
Payload must be the OpTypeAvcRefPayloadINTEL type. |
Capability: |
|||||||||||||||||||||||
6 |
5788 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Packed Reference Ids |
<id> Payload |
OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL Result Type must be the OpTypeAvcRefResultINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Packed Reference Ids must be an OpTypeInt with 32-bit Width and 0 Signedness, with the following bits specifying the values for the pair of reference images for each major partition.
A forward[backward] reference identifier value of n indicates the forward[backward] image from the nth pair of forward/backward reference images, with the value of n ranging from 0 to 15. If the REF operation is configured with only forward reference images then, the values of the backward reference identifiers are not used. The blocks are numbered using the traditional Z order. For larger block sizes, the sub-block reference identifier pairs must be replicated. For example, for a 16x16 block, all four pair of reference identifiers must be replicated to the value of the first pair for block 0.
Packed Reference Field Polarities must be an OpTypeInt with 8-bit Width and 0 Signedness. Reference field polarities for forward and backward reference images are specified for each of the allowed major partitions using it, with the following bits specifying the reference field polarities for the major partitions.
If the dual-reference evaluation instructions are not used, then the values of the backward reference field polarities are not used. The blocks are numbered using the traditional Z order. For larger block sizes, the sub-block reference field polarities are replicated. For example, for a 16x16 block all four pairs of reference field polarities are replicated to the value of the first pair for block 0. Payload must be the OpTypeAvcRefPayloadINTEL type. |
Capability: |
||||||||||||||||||||||||||||||||||||||||
7 |
5789 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Packed Reference Ids |
<id> Packed Reference Field Polarities |
<id> Payload |
Result type conversion instructions
These are optional instructions that may be called following the evaluation phase to convert REF results to MCE results and vice-versa.
OpSubgroupAvcRefConvertToMceResultINTEL Result Type must be the OpTypeAvcMceResultINTEL type. Payload must be the OpTypeAvcRefResultINTEL type. |
Capability: |
|||
4 |
5790 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcMceConvertToRefResultINTEL Result Type must be the OpTypeAvcRefResultINTEL type. Payload must be the OpTypeAvcMceResultINTEL type. |
Capability: |
|||
4 |
5735 |
<id> Result Type |
Result <id> |
<id> Payload |
SIC instructions
These instruction are only guaranteed to work correctly if placed strictly within uniform control flow within the Subgroup execution scope. This ensures that if any invocation executes it, all invocations will execute it. If placed elsewhere, the results are undefined.
Initialization instructions
These instructions create a properly initialized payload that can be used for further configured for evaluating SIC operations. This is a required initial phase.
OpSubgroupAvcSicInitializeINTEL Result Type must be the OpTypeAvcSicPayloadINTEL type. Src Coord must be a vector(2) of i16 values and 0 Signedness. It represents the 2D offset of the top left corner of the source MB in pixel units in the source image. Source MBs at the image borders are allowed to be partial, but the top-left corner must be within the image.
|
Capability: |
|||||
4 |
5791 |
<id> Result Type |
Result <id> |
<id> Src Coord |
Configuration instructions
OpSubgroupAvcSicConfigureSkcINTEL Result Type must be the OpTypeAvcSicPayloadINTEL type. Skip Block Partition Type must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to one of the specified partition mask values as per Section 3, Binary Form. Skip Motion Vector Mask must be an OpTypeInt with 32-bit Width and 0 Signedness. Legal values for it can be composed using the OpBitwiseOr instruction from the values defined for it as per Section 3, Binary Form; both unidirectional and bidirectional skip vectors can be specified uniquely for each major partition (16x16 or 8x8) by an appropriate selection of the skip motion vector mask enumeration values. If the 16x16 Skip Block Partition Type is specified, then only the 16x16 enumeration values may be used, else only the 8x8 enumeration values may be used.
Motion Vectors must be an OpTypeInt with 64-bit Width and 0 Signedness, and specifies the input packed BMVs. Either the forward or backward is ignored if the setting in Skip Motion Vector Mask is backward or forward respectively. If the setting is bidirectional, then both the forward and backward motion vectors will be used. If the Skip Block Partition Type is 16x16, work-item 0 in the subgroup provides the BMV, and if the Skip Block Partition Type is 8x8, work-items 0 to 4 in the subgroup provide the four BMVs. The MVs are in QPEL units. The X and Y coordinates of each MV must be in the range [-2048.00, 2047.75] and [-512.00 to 511.75] respectively, otherwise the results are undefined. Bidirectional Weight must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid bidirectional weight value as per Section 3, Binary Form. If the setting is unidirectional, then the this parameter value is ignored and can be set to the value 0. Sad Adjustment must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid sad adjustment value as per Section 3, Binary Form. |
Capability: |
||||||||||
9 |
5792 |
<id> Result Type |
Result <id> |
<id> Skip Block Partition Type |
<id> Skip Motion Vector Mask |
<id> Motion Vectors |
<id> Bidirectional Weight |
<id> Sad Adjustment |
<id> Payload |
OpSubgroupAvcSicConfigureIpeLumaINTEL Result Type must be the OpTypeAvcSicPayloadINTEL type. Luma Intra Partition Mask must be an OpTypeInt with 8-bit Width and 0 Signedness, which can be composed from their respective values as per Section 3, Binary Form using the OpBitwiseAnd instruction. Intra Neighbour Availabilty must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid intra neighbour availabilty value as per Section 3, Binary Form. Left Edge Luma Pixels, Upper Left Corner Luma Pixel, Upper Edge Luma Pixels, Upper Right Edge Luma Pixels must be an OpTypeInt with 8-bit Width and 0 Signedness, and specify the neighbor edge pixels for the left, top-left corner, top and top right edges with each work-item providing each pixel value. These pixels values are used to perform the intra mode estimation. For the left and top edge pixels, successive subgroup work-items 0 to 15 provide the successive edge pixels. For the top-right edge, successive work-items 0 to 7 provide the successive edge pixels; the pixel values in work-items 8 to 15 are ignored. The top-left corner pixel is a uniform pixel value with each work-item providing the same corner pixel. Sad Adjustment must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid sad adjustment value as per Section 3, Binary Form. |
Capability: |
||||||||||
11 |
5793 |
<id> Result Type |
Result <id> |
<id> Luma Intra Partition Mask |
<id> Intra Neighbour Availabilty |
<id> Left Edge Luma Pixels |
<id> Upper Left Corner Luma Pixel |
<id> Upper Edge Luma Pixels |
<id> Upper Right Edge Luma Pixels |
<id> Sad Adjustment |
<id> Payload |
OpSubgroupAvcSicConfigureIpeLumaChromaINTEL Result Type must be the OpTypeAvcSicPayloadINTEL type. Luma Intra Partition Mask must be an OpTypeInt with 8-bit Width and 0 Signedness, which can be composed from their respective values as per Section 3, Binary Form using the OpBitwiseAnd instruction. Intra Neighbour Availabilty must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid intra neighbour availabilty value as per Section 3, Binary Form. Left Edge Luma Pixels, Upper Left Corner Luma Pixel, Upper Edge Luma Pixels, Upper Right Edge Luma Pixels, Left Edge Chroma Pixels, Upper Left Corner Chroma Pixel, Upper Edge Chroma Pixels must be an OpTypeInt with 8-bit Width and 0 Signedness, and specify the neighbor luma and chroma edge pixels for the left, top-left corner, top and top-right (luma only) edges with each work-item providing each pixel value. These pixels values are used to perform the intra mode estimation. For the left and top edge pixels, successive subgroup work-items 0 to 15 provide the successive edge pixels. For the top-right edge, successive work-items 0 to 7 provide the successive edge pixels; the pixel values in work-items 8 to 15 are ignored. The top-left corner pixel is a uniform pixel value with each work-item providing the same corner pixel. For the left and top chroma CbCr pixels, successive subgroup work-items 0 to 7 provide the successive CbCr pixels; the pixel values in work-items 8 to 15 are ignored. The top-left corner pixel is a uniform CbCr pixel value with each work-item providing the same corner CbCr pixel. Sad Adjustment must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid sad adjustment value as per Section 3, Binary Form. |
Capability: |
|||||||||||||
14 |
5794 |
<id> Result Type |
Result <id> |
<id> Luma Intra Partition Mask |
<id> Intra Neighbour Availabilty |
<id> Left Edge Luma Pixels |
<id> Upper Left Corner Luma Pixel |
<id> Upper Edge Luma Pixels |
<id> Upper Right Edge Luma Pixels |
<id> Left Edge Chroma Pixels |
<id> Upper Left Corner Chroma Pixel |
<id> Upper Edge Chroma Pixels |
<id> Sad Adjustment |
<id> Payload |
OpSubgroupAvcSicGetMotionVectorMaskINTEL Result Type must be an OpTypeInt with 32-bit Width and 0 Signedness. Skip Block Partition Type must be an OpTypeInt with 32-bit Width and 0 Signedness, which must evaluate to valid partition mask values for either 16x16 or 8x8 as per Section 3, Binary Form. Direction must be an OpTypeInt with 8-bit Width and 0 Signedness. It is a bit field with the directions for the 4 8x8 sub-partitions in traditional Z order, or for only the 16x16 partition. Two bits are reserved for each of the four sub-partitions in row-major order. The 2-bit values are as per the inter macro-block major direction values. If the Skip Block Partition Type indicates a 16x16 shape, then only the 1st 2 bits contains the direction, and other bits must be zeroed. |
Capability: |
||||
5 |
5795 |
<id> Result Type |
Result <id> |
<id> Skip Block Partition Type |
<id> Direction |
Payload type conversion instructions
These are optional instructions that may be called following the search configuration phase to convert SIC payload to MCE payloads and vice-versa.
OpSubgroupAvcSicConvertToMcePayloadINTEL Result Type must be the OpTypeAvcMcePayloadINTEL type. Payload must be the OpTypeAvcSicPayloadINTEL type. |
Capability: |
|||
4 |
5796 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcMceConvertToSicPayloadINTEL Result Type must be the OpTypeAvcSicPayloadINTEL type. Payload must be the OpTypeAvcMcePayloadINTEL type. |
Capability: |
|||
4 |
5736 |
<id> Result Type |
Result <id> |
<id> Payload |
Intra shape cost configuration instructions
OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL Result Type must be the OpTypeAvcSicPayloadINTEL type. Packed Shape Penalty must be a 32-bit scalar integer type. It is treated as an unsigned value. The following bits specify the shape penalty in U4U4 format:
The U4U4 decoded integer values for each of the bytes must fit within 12 bits. Payload must be the OpTypeAvcSicPayloadINTEL type. |
Capability: |
||||||||||||
5 |
5797 |
<id> Result Type |
Result <id> |
<id> Packed Shape Penalty |
<id> Payload |
Intra mode cost configuration instructions
OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL Result Type must be the OpTypeAvcSicPayloadINTEL type. Luma Mode Penalty specifies the penalty to be applied to the estimated luma mode if it differs from its predicted luma mode (based on its neighbor intra modes). It is specified in U4U4 format and must bit in 10 bits. Luma Packed Neighbor Modes specifies the values of the already computed top and left neighbor modes for the bordering 4x4 blocks, with the 4x4 blocks numbered in the traditional Z-order as shown below. 0 1 4 5 2 3 6 7 8 9 C D A B E F The following bits specify the neighbor modes.
Luma Packed Non Dc Penalty specifies the penalty to be applied for any computed non-DC luma mode for each of the 16x16, 8x8, and 4x4 shapes, with the following bits specifying the penalties.
The component byte values are specified in 8-bit integer format. Payload must be the OpTypeAvcSicPayloadINTEL type. The intra distortion for each intra luma block can be described by the following formulas: Intra_4x4_SAD(or Haar) + Luma_Shape_Penalty_4x4 + Luma_Non_Dc_4x4_Penalty(if not DC) + Luma_Mode_Penalty(if computed mode is not the same predicted mode from neighbor modes) Intra_8x8_SAD(or Haar) + Luma_Shape_Penalty_8x8 + Luma_Non_Dc_8x8_Penalty(if not DC) + Luma_Mode_Penalty(if computed mode is not the same predicted mode from neighbor modes) end{gather} Intra_16x16_SAD(or Haar) + Luma_Shape_Penalty_16x16 + Luma_Non_Dc_16x16_Penalty(if not DC) |
Capability: |
||||||||||||||||||||||||||||||
7 |
5798 |
<id> Result Type |
Result <id> |
<id> Luma Mode Penalty |
<id> Luma Packed Neighbor Modes |
<id> Luma Packed Non Dc Penalty |
<id> Payload |
OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL Result Type must be the OpTypeAvcSicPayloadINTEL type. Chroma Mode Base Penalty is the base penalty to be applied to the computed intra chroma modes. This penalty is in U4U4 format. The U4U4 decoded integer value must fit in 12 bits. The base penalty is scaled based on the computed mode as defined below.
The component byte values are specified in 8-bit integer format. Payload must be the OpTypeAvcSicPayloadINTEL type. The intra distortion for each intra 8x8 chroma block can be described by the following formula: Distortion = SAD(or Haar) + Chroma_Mode_Base_Penalty (scaled based on computed mode) |
Capability: |
||||||||||||
7 |
5799 |
<id> Result Type |
Result <id> |
<id> Chroma Mode Base Penalty |
<id> Payload |
Miscellaneous property configuration instructions
These are optional instructions that may be called following the configuration phase to enable miscellaneous properties setting in the payload.
OpSubgroupAvcSicSetBilinearFilterEnableINTEL
Default is to enable it. Result Type must be the OpTypeAvcSicPayloadINTEL type. Payload must be the OpTypeAvcSicPayloadINTEL type. |
Capability: |
|||||
4 |
5800 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL The skip decision will be enhanced to include an accurate AVC forward transform for skip estimation. This feature is in addition to the previous SAD or HAAR skip estimation. The results of the forward transform are compared one coefficient at a time against a user-specified threshold, in the input argument packed_sad_coefficients, to emulate quantization’s zeroing effect. The user is returned the count of coefficients that exceeded their threshold along with a sum of the amount exceeded, both grouped at the 8x8 block level (i.e. for each 8x8 block). This is valid only for SKC operations. Result Type must be the OpTypeAvcSicPayloadINTEL type. Packed Sad Coefficients must be an OpTypeInt with 64-bit Width and 0 Signedness, and spoecifies the SAD coefficient threshold matrix. The SAD coefficient threshold matrix for a 4x4 transform as shown in the table below is packed into a 64-bit integer. The low 16 bits contains the larger DC threshold. The coefficient thresholds for the remaining 6 AC thresholds in the order of increasing frequency are provided by the successive 8-bit bit ranges.
Payload must be the OpTypeAvcSicPayloadINTEL type. |
Capability: |
||||||||||||||||||||
5 |
5801 |
<id> Result Type |
Result <id> |
<id> Packed Sad Coefficients |
<id> Payload |
OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL It is valid to call this function only if the payload is configured for a skip check operation by a prior call to [blue]#OpSubgroupAvcSicConfigureSkcINTEL. Result Type must be the OpTypeAvcSicPayloadINTEL type. Block Based Skip Type must be an OpTypeInt with 8-bit Width and 0 Signedness, that must evaluate to a valid block based skip type value as per Section 3, Binary Form. Payload must be the OpTypeAvcSicPayloadINTEL type. |
Capability: |
||||
5 |
5802 |
<id> Result Type |
Result <id> |
<id> Block Based Skip Type |
<id> Payload |
Evaluation instructions
These instructions perform the evaluation of the SIC operation configured in the payload with a VME media sampler and return the results.
OpSubgroupAvcSicEvaluateIPEINTEL Result Type must be the OpTypeAvcSicResultINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Payload must be the OpTypeAvcSicPayloadINTEL type. |
Capability: |
||||
5 |
5803 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Payload |
OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL Result Type must be the OpTypeAvcSicResultINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a forward reference image. Payload must be the OpTypeAvcSicPayloadINTEL type. |
Capability: |
|||||
6 |
5804 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Ref Image |
<id> Payload |
OpSubgroupAvcSicEvaluateWithDualReferenceINTEL Result Type must be the OpTypeAvcSicResultINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Fwd Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a forward reference image. Bwd Ref Image is an object whose type is an OpTypeVmeImageINTEL, and specifies a backward reference image. Payload must be the OpTypeAvcSicPayloadINTEL type. |
Capability: |
||||||
7 |
5805 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Fwd Ref Image |
<id> Bwd Ref Image |
<id> Payload |
OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL Result Type must be the OpTypeAvcSicResultINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Packed Reference Ids must be an OpTypeInt with 32-bit Width and 0 Signedness, with the following bits specifying the values for the pair of reference images for each major partition.
A forward[backward] reference identifier value of n indicates the forward[backward] image from the nth pair of forward/backward reference images, with the value of n ranging from 0 to 15. If the SIC operation is configured with only forward reference images then, the values of the backward reference identifiers are not used. The blocks are numbered using the traditional Z order. For larger block sizes, the sub-block reference identifier pairs must be replicated. For example, for a 16x16 block, all four pair of reference identifiers must be replicated to the value of the first pair for block 0. Payload must be the OpTypeAvcSicPayloadINTEL type. |
Capability: |
|||||||||||||||||||||
6 |
5806 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Packed Reference Ids |
<id> Payload |
OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL Result Type must be the OpTypeAvcSicResultINTEL type. Src Image is an object whose type is an OpTypeVmeImageINTEL, and specifies the source image. Packed Reference Ids must be an OpTypeInt with 32-bit Width and 0 Signedness, with the following bits specifying the values for the pair of reference images for each major partition.
A forward[backward] reference identifier value of n indicates the forward[backward] image from the nth pair of forward/backward reference images, with the value of n ranging from 0 to 15. If the SIC operation is configured with only forward reference images then, the values of the backward reference identifiers are not used. The blocks are numbered using the traditional Z order. For larger block sizes, the sub-block reference identifier pairs must be replicated. For example, for a 16x16 block, all four pair of reference identifiers must be replicated to the value of the first pair for block 0.
Packed Reference Field Polarities must be an OpTypeInt with 8-bit Width and 0 Signedness. Reference field polarities for forward and backward reference images are specified for each of the allowed major partitions using it, with the following bits specifying the reference field polarities for the major partitions.
If the dual-reference evaluation instructions are not used, then the values of the backward reference field polarities are not used. The blocks are numbered using the traditional Z order. For larger block sizes, the sub-block reference field polarities are replicated. For example, for a 16x16 block all four pairs of reference field polarities are replicated to the value of the first pair for block 0. Payload must be the OpTypeAvcSicPayloadINTEL type. |
Capability: |
||||||||||||||||||||||||||||||||||||||||
7 |
5807 |
<id> Result Type |
Result <id> |
<id> Src Image |
<id> Packed Reference Ids |
<id> Packed Reference Field Polarities |
<id> Payload |
Result type conversion instructions
These are optional instructions that may be called following the evaluation phase to convert SIC results to MCE results and vice-versa.
OpSubgroupAvcSicConvertToMceResultINTEL Result Type must be the OpTypeAvcMceResultINTEL type. Payload must be the OpTypeAvcSicResultINTEL type. |
Capability: |
|||
4 |
5808 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcMceConvertToSicResultINTEL Result Type must be the OpTypeAvcSicResultINTEL type. Payload must be the OpTypeAvcMceResultINTEL type. |
Capability: |
|||
4 |
5737 |
<id> Result Type |
Result <id> |
<id> Payload |
Result processing instructions
These instructions are called following the evaluation phase to extract the various result components from an SIC evaluation result.
OpSubgroupAvcSicGetIpeLumaShapeINTEL The returned values are valid intra-MB shapes as per Section 3, Binary Form. Result Type must be a OpTypeInt with 8-bit Width and 0 Signedness. Payload must be the OpTypeAvcSicResultINTEL type. |
Capability: |
|||
4 |
5809 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL Result Type must be a OpTypeInt with 16-bit Width and 0 Signedness. Payload must be the OpTypeAvcSicResultINTEL type. |
Capability: |
|||
4 |
5810 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL Result Type must be a OpTypeInt with 16-bit Width and 0 Signedness. Payload must be the OpTypeAvcSicResultINTEL type. |
Capability: |
|||
4 |
5811 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcSicGetPackedIpeLumaModesINTEL Return the packed intra luma modes for all blocks from the SIC result. There are four bits per luma mode for a block and legal values are valid intra luma modes as per Section 3, Binary Form. The number of blocks is based on the result of OpSubgroupAvcSicGetIpeLumaShapeINTEL. If the luma shape is:
Result Type must be a OpTypeInt with 64-bit Width and 0 Signedness. Payload must be the OpTypeAvcSicResultINTEL type. |
Capability: |
|||
4 |
5812 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcSicGetIpeChromaModeINTEL The returned values are valid intra chroma modes as per Section 3, Binary Form. Result Type must be a OpTypeInt with 8-bit Width and 0 Signedness. Payload must be the OpTypeAvcSicResultINTEL type. |
Capability: |
|||
4 |
5813 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL The format of the results is as follows:
The results are only valid if the SIC operation was configured with frequency domain SAD transform coefficients using OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL . Result Type must be a OpTypeInt with 32-bit Width and 0 Signedness. Payload must be the OpTypeAvcSicResultINTEL type. |
Capability: |
|||
4 |
5814 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL The format of the results is as follows:
The results are only valid if the SIC operation was configured with frequency domain SAD transform coefficients using OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL . Result Type must be a OpTypeInt with 64-bit Width and 0 Signedness. Payload must be the OpTypeAvcSicResultINTEL type. |
Capability: |
|||
4 |
5815 |
<id> Result Type |
Result <id> |
<id> Payload |
OpSubgroupAvcSicGetInterRawSadsINTEL Result Type must be a OpTypeInt with 16-bit Width and 0 Signedness. Payload must be the OpTypeAvcSicResultINTEL type. |
Capability: |
|||
4 |
5816 |
<id> Result Type |
Result <id> |
<id> Payload |
Validation Rules
Modify Section 2.16.1, Universal Validation Rules, adding the following under the "Data Rules" bullet:
All OpVmeImageINTEL instructions must be in the same block in which their Result <id> are consumed. Result <id> from OpVmeImageINTEL instructions must not appear as operands to OpPhi instructions or OpSelect instructions, or any instructions other than the image lookup and query instructions specified to take an operand whose type is OpTypeVmeImageINTEL.
Issues
None.
Revision History
Rev | Date | Author | Changes |
---|---|---|---|
1 |
2018-10-29 |
Biju George |
Initial version |