On 06/02/2015 11:25 AM, Kenneth Graunke wrote:
> On Tuesday, June 02, 2015 12:58:29 AM Kenneth Graunke wrote:
>> As I mentioned in my reply to patch 3, I think you need some sort of
>> "did the buffer fill up?" check. Perhaps make a function to reserve
>> space, advancing next_offset and returning the offset to use:
>>
>> static uint32_t
>> reserve_hw_bt_space(struct brw_context *brw, unsigned bytes)
>> {
>> if (brw->hw_bt_pool.next_offset + bytes >= hw_bt_pool.bo->size) {
>> gen7_reset_hw_bt_pool_offsets();
>> }
>>
>> uint32_t offset = brw->hw_bt_pool.next_offset;
>>
>> brw->hw_bt_pool.next_offset += ALIGN(bytes, 64);
>>
>> return offset;
>> }
>>
>> That would reduce the number of if (brw->has_resource_streamer) checks a
>> bit too...
>
> By the way, you'll probably also want to implement this workaround:
>
> "WaStateBindingTableOverfetch: HW over fetches two cachelines of binding
> table indices. When using the resource streamer, SW needs to pad
> binding table pointer updates with an additional two cache lines."
>
> So you actually need to check:
> if (next_offset + bytes >= hw_bt_pool.bo->size - 128)
>
> Which reminds me. Your earlier patches had all kinds of workarounds
> for Haswell resource streamer hardware errata. Dummy 3DPRIMITIVE
> commands come to mind. What happened to those? Surely they're still
> necessary?
Dummy 3d primitives are only needed when gather constants are enabled.
However, I haven't experienced any lock-ups either since I skipped them
out. Things are running quite smoothly now. Although spec mentions that
we may need them when programming null push constants, I found out by
trial and error that even those can be skipped when using this approach
instead:
http://lists.freedesktop.org/archives/mesa-dev/2015-April/083012.html
-Abdiel
>
> --Ken
>
>
>
> _______________________________________________
> mesa-dev mailing list
> [email protected]
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev