I'm planning to rework masking for v9 so it's a great time to figure what are the goals with it. It's very important to clarify what "mask" means. What do you think? the drawing tasks are built up? Please note that because the sub-takes have already established a dependency chain, so the dispatcher can handle the dependency in a generic manner (which we can discuss later). In the backend, on receiving a task group, if no existing PE (except for the local SW PE) matches the combined capability, then the task group will be "destroyed" and the sub-tasks will be handled based on the existing PE capabilities, in the worst case, they will be handled in one by one manner (During this process, a temporary FB will be provided of course.) how many tasks are required to form a work for "copy image with transform, mask and opa" etc). The size of TASK POOL should be properly prepared (we can discuss this later) depends on the number of PEs and the complexity of the drawing requirements (i.e. In the frontend, the drawing-task-generator generates tasks or task groups depending on the requirement and sends them to the backend. A task group instance contains the combination of the capability descriptions of the sub-tasks it contains.All tasks in the Task Group are considered having-dependency, which means they work in the same area.A Task Group contains a list of Tasks so that complex operations can be expressed as a list of tasks + a Task Group instance.So an instance of a task group is an instance of a task. It is a derived class that inherits from Task.It contains a pointer points to the task that current one depends.It must be as simple as possible, for example, fill colour, copy image, alpha-blending (opa), transform, involving-mask etc. a descriptor about a simple 2D work building block.Well, there must be a solution in the backend only - I have no doubt about this.īut I think this problem can be solved more easily when we have a different design for the drawing-task. How to handle the sub-tasks dependency issue (because they almost always draw the same area)?.Divide the original task into sub-tasks (according to the PEs we found) ?.In the backend, when receiving a task and no PE (except the default Local software PE) can do all the works described in that task, how can the backend: Let me rephrase this question in tech terms: YEAH, problem solved, but here comes a question: How to elegantly makes such a workaround happen in the backend? use the temporary FB as image and perform a "copy image with opa" operation.Let the 2D GPU do the "transform with mask and opa" and save the result to a temporary frame-buffer.Obviously, for the later scenario, we see there is a workaround to take advantage of the less powerful 2D GPU: If a less powerful 2D GPU that can only do "copy image with transform and mask" but no "opa" as its hardware design can only do transform with mask together (but no extra opacity), then the PE's capability mismatch what the "task" wants and it is considered as "incapable".If a powerful 2D GPU can do all those "building-blocks", then it is the ideal scenario - the PE takes the task as long as it is not busy."copy image with transform, mask and opa": To achieve our goal, one instance of this drawing-task will be created in the frontend and passed to the backend.Īt the backend, on receiving such task, based on our capability-based-dispatching scheme, ALL PEs will be checked and see whether they are capable of doing such a operation, i.e. we design the data structure of the drawing-task and let it be able to represent the meaning of "copy image with transform, mask and opa".If we want to do "copy image with transform, mask and opa", immediately we can come with an idea about the design of the drawing-task: For example, "copy image with transform, mask and opa" is obviously a complex operation, it is a combination of the building blocks aforementioned. I won't exhaust this list but you might already notice that: there are building blocks in the list, for example, fill colour, copy image, mask, transform, opa etc. copy image with transform, mask and opa.fill colour with a mask and a given opa.Suppose we have defined a set of simple operations, such as: Tasks are descriptors of low-level 2D operations. 2D GPU, 2D capable DMA, CPU etc) are different: some as powerful as 2D GPU can do all kinds of 2D operations, and some can only do simple works such as 2D-copy with/without alpha-blending etc. Proposal 1: task and task-group Background
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |