[Mesa-dev] [PATCH 2/6] st/mesa: overhaul vertex setup for clearing, glDrawPixels, glBitmap
Marek Olšák
maraeo at gmail.com
Tue Feb 16 00:17:21 UTC 2016
On Sun, Feb 14, 2016 at 3:47 PM, Brian Paul <brianp at vmware.com> wrote:
> On 02/13/2016 01:03 PM, Ilia Mirkin wrote:
>>
>> On Fri, Feb 12, 2016 at 10:43 AM, Brian Paul <brianp at vmware.com> wrote:
>>>
>>> diff --git a/src/mesa/state_tracker/st_context.c
>>> b/src/mesa/state_tracker/st_context.c
>>> index 9016846..cb2c390 100644
>>> --- a/src/mesa/state_tracker/st_context.c
>>> +++ b/src/mesa/state_tracker/st_context.c
>>> @@ -241,16 +241,23 @@ st_create_context_priv( struct gl_context *ctx,
>>> struct pipe_context *pipe,
>>> else
>>> st->internal_target = PIPE_TEXTURE_RECT;
>>>
>>> - /* Vertex element objects used for drawing rectangles for glBitmap,
>>> - * glDrawPixels, glClear, etc.
>>> + /* Setup vertex element info for 'struct st_util_vertex'.
>>> */
>>> - for (i = 0; i < ARRAY_SIZE(st->velems_util_draw); i++) {
>>> - memset(&st->velems_util_draw[i], 0, sizeof(struct
>>> pipe_vertex_element));
>>> - st->velems_util_draw[i].src_offset = i * 4 * sizeof(float);
>>> - st->velems_util_draw[i].instance_divisor = 0;
>>> - st->velems_util_draw[i].vertex_buffer_index =
>>> - cso_get_aux_vertex_buffer_slot(st->cso_context);
>>> - st->velems_util_draw[i].src_format =
>>> PIPE_FORMAT_R32G32B32A32_FLOAT;
>>> + {
>>> + const unsigned slot =
>>> cso_get_aux_vertex_buffer_slot(st->cso_context);
>>
>>
>> Can the aux vertex buffer slot change over time? If so, you need some
>> logic to update the vertex_buffer_index for these. From what I can
>> tell it's always 0, not sure what the intention behind it is... seems
>> like it'll be a very annoying problem to debug down the line should it
>> ever change. Thoughts?
>
>
> It's hard-wired to zero as you say but I imagine it could be computed by
> examining the current vertex buffer bindings state to find a free slot such
> that we might be able to avoid saving/restoring all the vertex buffer
> bindings. I believe Marek wrote the code in question.
Initially, I wanted to hardcode the aux vertex buffer slot to 15, but
it broke Draw. Setting it to 0 worked.
I don't think it's important as long as only one vertex buffer is
saved/restored and not all of them.
Marek
More information about the mesa-dev
mailing list