mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-29 19:50:40 +00:00
d3d11shader: Allow drawing without shader resource view
... for the case that we are rendering on target without input texture. For example, we might want to draw arbitrary shape on render target view without shader resource view. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1323>
This commit is contained in:
parent
eecb130bd9
commit
36f7966a5e
1 changed files with 10 additions and 8 deletions
|
@ -274,7 +274,6 @@ gst_d3d11_quad_new (GstD3D11Device * device, ID3D11PixelShader * pixel_shader,
|
|||
g_return_val_if_fail (pixel_shader != NULL, NULL);
|
||||
g_return_val_if_fail (vertex_shader != NULL, NULL);
|
||||
g_return_val_if_fail (layout != NULL, NULL);
|
||||
g_return_val_if_fail (sampler != NULL, NULL);
|
||||
g_return_val_if_fail (vertex_buffer != NULL, NULL);
|
||||
g_return_val_if_fail (vertex_stride > 0, NULL);
|
||||
g_return_val_if_fail (index_buffer != NULL, NULL);
|
||||
|
@ -298,7 +297,8 @@ gst_d3d11_quad_new (GstD3D11Device * device, ID3D11PixelShader * pixel_shader,
|
|||
ID3D11PixelShader_AddRef (pixel_shader);
|
||||
ID3D11VertexShader_AddRef (vertex_shader);
|
||||
ID3D11InputLayout_AddRef (layout);
|
||||
ID3D11SamplerState_AddRef (sampler);
|
||||
if (sampler)
|
||||
ID3D11SamplerState_AddRef (sampler);
|
||||
|
||||
if (blend)
|
||||
ID3D11BlendState_AddRef (blend);
|
||||
|
@ -380,8 +380,6 @@ gst_d3d11_draw_quad_unlocked (GstD3D11Quad * quad,
|
|||
g_return_val_if_fail (quad != NULL, FALSE);
|
||||
g_return_val_if_fail (viewport != NULL, FALSE);
|
||||
g_return_val_if_fail (num_viewport <= GST_VIDEO_MAX_PLANES, FALSE);
|
||||
g_return_val_if_fail (srv != NULL, FALSE);
|
||||
g_return_val_if_fail (num_srv <= GST_VIDEO_MAX_PLANES, FALSE);
|
||||
g_return_val_if_fail (rtv != NULL, FALSE);
|
||||
g_return_val_if_fail (num_rtv <= GST_VIDEO_MAX_PLANES, FALSE);
|
||||
|
||||
|
@ -395,7 +393,8 @@ gst_d3d11_draw_quad_unlocked (GstD3D11Quad * quad,
|
|||
ID3D11DeviceContext_IASetIndexBuffer (context_handle,
|
||||
quad->index_buffer, quad->index_format, 0);
|
||||
|
||||
ID3D11DeviceContext_PSSetSamplers (context_handle, 0, 1, &quad->sampler);
|
||||
if (quad->sampler)
|
||||
ID3D11DeviceContext_PSSetSamplers (context_handle, 0, 1, &quad->sampler);
|
||||
ID3D11DeviceContext_VSSetShader (context_handle, quad->vs, NULL, 0);
|
||||
ID3D11DeviceContext_PSSetShader (context_handle, quad->ps, NULL, 0);
|
||||
ID3D11DeviceContext_RSSetViewports (context_handle, num_viewport, viewport);
|
||||
|
@ -404,7 +403,8 @@ gst_d3d11_draw_quad_unlocked (GstD3D11Quad * quad,
|
|||
ID3D11DeviceContext_PSSetConstantBuffers (context_handle,
|
||||
0, 1, &quad->const_buffer);
|
||||
|
||||
ID3D11DeviceContext_PSSetShaderResources (context_handle, 0, num_srv, srv);
|
||||
if (srv)
|
||||
ID3D11DeviceContext_PSSetShaderResources (context_handle, 0, num_srv, srv);
|
||||
ID3D11DeviceContext_OMSetRenderTargets (context_handle, num_rtv, rtv, dsv);
|
||||
if (!blend_state)
|
||||
blend_state = quad->blend;
|
||||
|
@ -415,8 +415,10 @@ gst_d3d11_draw_quad_unlocked (GstD3D11Quad * quad,
|
|||
|
||||
ID3D11DeviceContext_DrawIndexed (context_handle, quad->index_count, 0, 0);
|
||||
|
||||
ID3D11DeviceContext_PSSetShaderResources (context_handle,
|
||||
0, num_srv, clear_view);
|
||||
if (srv) {
|
||||
ID3D11DeviceContext_PSSetShaderResources (context_handle,
|
||||
0, num_srv, clear_view);
|
||||
}
|
||||
ID3D11DeviceContext_OMSetRenderTargets (context_handle, 0, NULL, NULL);
|
||||
|
||||
return TRUE;
|
||||
|
|
Loading…
Reference in a new issue