[PATCH v2 3/6] d3d9: Use wined3d_stateblock_get_state() in d3d9_device_GetRenderState().

Zebediah Figura z.figura12 at gmail.com
Tue Dec 10 12:13:14 CST 2019


On 12/10/19 2:34 AM, Matteo Bruni wrote:
> On Thu, Nov 28, 2019 at 6:54 AM Zebediah Figura <z.figura12 at gmail.com> wrote:
>>
>> Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
>> ---
>>   dlls/d3d9/device.c | 4 +++-
>>   1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c
>> index 2d66c569938..51b7f4d6f59 100644
>> --- a/dlls/d3d9/device.c
>> +++ b/dlls/d3d9/device.c
>> @@ -2329,6 +2329,7 @@ static HRESULT WINAPI d3d9_device_GetRenderState(IDirect3DDevice9Ex *iface,
>>           D3DRENDERSTATETYPE state, DWORD *value)
>>   {
>>       struct d3d9_device *device = impl_from_IDirect3DDevice9Ex(iface);
>> +    const struct wined3d_stateblock_state *device_state;
>>       struct wined3d_color factor;
>>
>>       TRACE("iface %p, state %#x, value %p.\n", iface, state, value);
>> @@ -2344,7 +2345,8 @@ static HRESULT WINAPI d3d9_device_GetRenderState(IDirect3DDevice9Ex *iface,
>>       }
>>
>>       wined3d_mutex_lock();
>> -    *value = wined3d_device_get_render_state(device->wined3d_device, state);
>> +    device_state = wined3d_stateblock_get_state(device->state);
>> +    *value = device_state->rs[state];
>>       wined3d_mutex_unlock();
>>
>>       return D3D_OK;
> 
> Just a couple of comments WRT potential future improvements. Obviously
> they apply to the other d3d* versions too.
> 
> The state for the stateblock isn't going to change from underneath so
> it could be stored in the d3d9 device once and for all instead of
> getting it from wined3d every time it's needed. It doesn't matter a
> lot I guess (and it's certainly not urgent anyway), especially for
> those Get*() methods, but it would be one less inter-module function
> call per API call.
> 

Good point, thanks. I hadn't thought of that.



More information about the wine-devel mailing list