/* Pointer to the shader records. * *Shaderrecordsarethestructuresreadbythehardwarethatcontain *pointerstouniforms,shaders,andvertexattributes.The *referencetotheshaderrecordhasenoughinformationtodetermine *howmanypointersarenecessary(fixednumberforshaders/uniforms, *andanattributecount),sothoseBOindicesintobo_handlesare *juststoredas__u32sbeforeeachshaderrecordpassedin.
*/
__u64 shader_rec;
/* Pointer to uniform data and texture handles for the textures *referencedbytheshader. * *Foreachshaderstaterecord,thereisasetofuniformdatainthe *orderreferencedbytherecord(FS,VS,thenCS).Eachsetof *uniformdatahasa__u32indexintobo_handlespertexture *sampleoperation,intheordertheQPU_W_TMUn_Swritesappearin *theprogram.FollowingthetextureBOhandleindicesistheactual *uniformdata. * *Theindividualuniformstateblocksdon'thavesizespassedin, *becausethekernelhastodeterminethesizesanywayduringshader *codevalidation.
*/
__u64 uniforms;
__u64 bo_handles;
/* Size in bytes of the binner command list. */
__u32 bin_cl_size; /* Size in bytes of the set of shader records. */
__u32 shader_rec_size; /* Number of shader records. * *Thiscouldjustbecomputedfromthecontentsofshader_recordsand *theaddressbitsofreferencestothemfromthebinCL,butit *keepsthekernelfromhavingtoresizesomeallocationsitmakes.
*/
__u32 shader_rec_count; /* Size in bytes of the uniform state. */
__u32 uniforms_size;
/* Number of BO handles passed in (size is that times 4). */
__u32 bo_handle_count;
#define VC4_SUBMIT_CL_USE_CLEAR_COLOR (1 << 0) /* By default, the kernel gets to choose the order that the tiles are *renderedin.Ifthisisset,thenthetileswillberenderedina *rasterorder,withtheright-to-leftvsleft-to-rightand *top-to-bottomvsbottom-to-topdictatedby *VC4_SUBMIT_CL_RCL_ORDER_INCREASING_*.Thisallowsoverlapping *blitstobeimplementedusingthe3Dengine.
*/ #define VC4_SUBMIT_CL_FIXED_RCL_ORDER (1 << 1) #define VC4_SUBMIT_CL_RCL_ORDER_INCREASING_X (1 << 2) #define VC4_SUBMIT_CL_RCL_ORDER_INCREASING_Y (1 << 3)
__u32 flags;
/* Returned value of the seqno of this render job (for the *waitioctl).
*/
__u64 seqno;
/* ID of the perfmon to attach to this job. 0 means no perfmon. */
__u32 perfmonid;
/* Syncobj handle to wait on. If set, processing of this render job *willnotstartuntilthesyncobjissignaled.0meansignore.
*/
__u32 in_sync;
/* Syncobj handle to export fence to. If set, the fence in the syncobj *willbereplacedwithafencethatsignalsuponcompletionofthis *renderjob.0meansignore.
*/
__u32 out_sync;
/** *structdrm_vc4_create_bo-ioctlargumentforcreatingVC4BOs. * *Therearecurrentlynovaluesfortheflagsargument,butitmaybe *usedinafutureextension.
*/ struct drm_vc4_create_bo {
__u32 size;
__u32 flags; /** Returned GEM handle for the BO. */
__u32 handle;
__u32 pad;
};
/** *structdrm_vc4_mmap_bo-ioctlargumentformappingVC4BOs. * *Thisdoesn'tactuallyperformanmmap.Instead,itreturnsthe *offsetyouneedtouseinanmmapontheDRMdevicenode.This *meansthattoolslikevalgrindendupknowingaboutthemapped *memory. * *Therearecurrentlynovaluesfortheflagsargument,butitmaybe *usedinafutureextension.
*/ struct drm_vc4_mmap_bo { /** Handle for the object being mapped. */
__u32 handle;
__u32 flags; /** offset into the drm node to use for subsequent mmap call. */
__u64 offset;
};
/** *structdrm_vc4_create_shader_bo-ioctlargumentforcreatingVC4 *shaderBOs. * *Sinceallowingashadertobeoverwrittenwhileit'salsobeing *executedfromwouldallowprivlegeescalation,shadersmustbe *createdusingthisioctl,andtheycan'tbemmappedlater.
*/ struct drm_vc4_create_shader_bo { /* Size of the data argument. */
__u32 size; /* Flags, currently must be 0. */
__u32 flags;
/* Pointer to the data. */
__u64 data;
/** Returned GEM handle for the BO. */
__u32 handle; /* Pad, must be 0. */
__u32 pad;
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.