mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-05 18:22:23 +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 (pixel_shader != NULL, NULL);
|
||||||
g_return_val_if_fail (vertex_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 (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_buffer != NULL, NULL);
|
||||||
g_return_val_if_fail (vertex_stride > 0, NULL);
|
g_return_val_if_fail (vertex_stride > 0, NULL);
|
||||||
g_return_val_if_fail (index_buffer != NULL, 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);
|
ID3D11PixelShader_AddRef (pixel_shader);
|
||||||
ID3D11VertexShader_AddRef (vertex_shader);
|
ID3D11VertexShader_AddRef (vertex_shader);
|
||||||
ID3D11InputLayout_AddRef (layout);
|
ID3D11InputLayout_AddRef (layout);
|
||||||
ID3D11SamplerState_AddRef (sampler);
|
if (sampler)
|
||||||
|
ID3D11SamplerState_AddRef (sampler);
|
||||||
|
|
||||||
if (blend)
|
if (blend)
|
||||||
ID3D11BlendState_AddRef (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 (quad != NULL, FALSE);
|
||||||
g_return_val_if_fail (viewport != 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 (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 (rtv != NULL, FALSE);
|
||||||
g_return_val_if_fail (num_rtv <= GST_VIDEO_MAX_PLANES, 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,
|
ID3D11DeviceContext_IASetIndexBuffer (context_handle,
|
||||||
quad->index_buffer, quad->index_format, 0);
|
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_VSSetShader (context_handle, quad->vs, NULL, 0);
|
||||||
ID3D11DeviceContext_PSSetShader (context_handle, quad->ps, NULL, 0);
|
ID3D11DeviceContext_PSSetShader (context_handle, quad->ps, NULL, 0);
|
||||||
ID3D11DeviceContext_RSSetViewports (context_handle, num_viewport, viewport);
|
ID3D11DeviceContext_RSSetViewports (context_handle, num_viewport, viewport);
|
||||||
|
@ -404,7 +403,8 @@ gst_d3d11_draw_quad_unlocked (GstD3D11Quad * quad,
|
||||||
ID3D11DeviceContext_PSSetConstantBuffers (context_handle,
|
ID3D11DeviceContext_PSSetConstantBuffers (context_handle,
|
||||||
0, 1, &quad->const_buffer);
|
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);
|
ID3D11DeviceContext_OMSetRenderTargets (context_handle, num_rtv, rtv, dsv);
|
||||||
if (!blend_state)
|
if (!blend_state)
|
||||||
blend_state = quad->blend;
|
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_DrawIndexed (context_handle, quad->index_count, 0, 0);
|
||||||
|
|
||||||
ID3D11DeviceContext_PSSetShaderResources (context_handle,
|
if (srv) {
|
||||||
0, num_srv, clear_view);
|
ID3D11DeviceContext_PSSetShaderResources (context_handle,
|
||||||
|
0, num_srv, clear_view);
|
||||||
|
}
|
||||||
ID3D11DeviceContext_OMSetRenderTargets (context_handle, 0, NULL, NULL);
|
ID3D11DeviceContext_OMSetRenderTargets (context_handle, 0, NULL, NULL);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
Loading…
Reference in a new issue