[Mesa-dev] [PATCH 02/18] anv: Add a new block-based batch emit macro
Ian Romanick
idr at freedesktop.org
Tue Apr 19 00:27:20 UTC 2016
On 04/18/2016 05:19 PM, Ian Romanick wrote:
> On 04/18/2016 05:10 PM, Jason Ekstrand wrote:
>> This new macro uses a for loop to create an actual code block in which to
>> place the macro setup code. One advantage of this is that you syntatically
> syntactically
>
>> use braces instead of parentheses. Another is that the code in the block
>> doesn't even get executed if anv_batch_emit_dwords fails.
>
> Is the old anv_batch_emit eventually removed?
Yes, you fool. That's patch 17.
>> ---
>> src/intel/vulkan/anv_private.h | 9 +++++++++
>> 1 file changed, 9 insertions(+)
>>
>> diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
>> index ae2e08d..d59b7ed 100644
>> --- a/src/intel/vulkan/anv_private.h
>> +++ b/src/intel/vulkan/anv_private.h
>> @@ -861,6 +861,15 @@ __gen_combine_address(struct anv_batch *batch, void *location,
>> VG(VALGRIND_CHECK_MEM_IS_DEFINED(dw, ARRAY_SIZE(dwords0) * 4));\
>> } while (0)
>>
>> +#define anv_batch_emit_blk(batch, cmd, name) \
>> + for (struct cmd name = { __anv_cmd_header(cmd) }, \
>> + *_dst = anv_batch_emit_dwords(batch, __anv_cmd_length(cmd)); \
>> + __builtin_expect(_dst != NULL, 1); \
>> + ({ __anv_cmd_pack(cmd)(batch, _dst, &name); \
>> + VG(VALGRIND_CHECK_MEM_IS_DEFINED(_dst, __anv_cmd_length(cmd) * 4)); \
>> + _dst = NULL; \
>> + }))
>> +
>> #define anv_state_pool_emit(pool, cmd, align, ...) ({ \
>> const uint32_t __size = __anv_cmd_length(cmd) * 4; \
>> struct anv_state __state = \
>>
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list