mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-12-15 08:03:30 -08:00
tests: Replace test_ps_viewport_index() with a shader runner test.
Mainly to allow testing the functionality in question with DXIL shaders as well.
This commit is contained in:
committed by
Henri Verbeet
parent
55fe8df979
commit
cd8cea6913
Notes:
Henri Verbeet
2025-07-31 15:06:45 +02:00
Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1663
@@ -815,10 +815,12 @@ static bool d3d12_runner_draw(struct shader_runner *r,
|
||||
|
||||
ID3D10Blob *vs_code, *ps_code, *hs_code = NULL, *ds_code = NULL, *gs_code = NULL;
|
||||
D3D12_CPU_DESCRIPTOR_HANDLE rtvs[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT] = {0};
|
||||
unsigned int uniform_index, fb_width, fb_height, rtv_count = 0, viewport_count;
|
||||
ID3D12GraphicsCommandList1 *command_list1 = test_context->list1;
|
||||
unsigned int uniform_index, fb_width, fb_height, rtv_count = 0;
|
||||
ID3D12GraphicsCommandList *command_list = test_context->list;
|
||||
D3D12_VIEWPORT viewports[ARRAY_SIZE(r->viewports)];
|
||||
ID3D12CommandQueue *queue = test_context->queue;
|
||||
RECT scissor_rects[ARRAY_SIZE(r->viewports)];
|
||||
ID3D12Device *device = test_context->device;
|
||||
D3D12_CPU_DESCRIPTOR_HANDLE dsv = {0};
|
||||
ID3D12PipelineState *pso;
|
||||
@@ -941,14 +943,28 @@ static bool d3d12_runner_draw(struct shader_runner *r,
|
||||
}
|
||||
}
|
||||
|
||||
set_rect(&test_context->scissor_rect, 0, 0, fb_width, fb_height);
|
||||
set_viewport(&test_context->viewport, 0.0f, 0.0f, fb_width, fb_height, 0.0f, 1.0f);
|
||||
viewports[0] = test_context->viewport;
|
||||
scissor_rects[0] = test_context->scissor_rect;
|
||||
viewport_count = max(r->viewport_count, 1);
|
||||
for (i = 0; i < r->viewport_count; ++i)
|
||||
{
|
||||
viewports[i].TopLeftX = r->viewports[i].x;
|
||||
viewports[i].TopLeftY = r->viewports[i].y;
|
||||
viewports[i].Width = r->viewports[i].width;
|
||||
viewports[i].Height = r->viewports[i].height;
|
||||
viewports[i].MinDepth = 0.0f;
|
||||
viewports[i].MaxDepth = 1.0f;
|
||||
scissor_rects[i] = test_context->scissor_rect;
|
||||
}
|
||||
|
||||
ID3D12GraphicsCommandList_OMSetRenderTargets(command_list, rtv_count, rtvs, false, dsv.ptr ? &dsv : NULL);
|
||||
|
||||
if (runner->r.depth_bounds)
|
||||
ID3D12GraphicsCommandList1_OMSetDepthBounds(command_list1, runner->r.depth_min, runner->r.depth_max);
|
||||
set_rect(&test_context->scissor_rect, 0, 0, fb_width, fb_height);
|
||||
ID3D12GraphicsCommandList_RSSetScissorRects(command_list, 1, &test_context->scissor_rect);
|
||||
set_viewport(&test_context->viewport, 0.0f, 0.0f, fb_width, fb_height, 0.0f, 1.0f);
|
||||
ID3D12GraphicsCommandList_RSSetViewports(command_list, 1, &test_context->viewport);
|
||||
ID3D12GraphicsCommandList_RSSetScissorRects(command_list, viewport_count, scissor_rects);
|
||||
ID3D12GraphicsCommandList_RSSetViewports(command_list, viewport_count, viewports);
|
||||
ID3D12GraphicsCommandList_IASetPrimitiveTopology(command_list, primitive_topology);
|
||||
ID3D12GraphicsCommandList_SetPipelineState(command_list, pso);
|
||||
ID3D12GraphicsCommandList_DrawInstanced(command_list, vertex_count, instance_count, 0, 0);
|
||||
|
||||
Reference in New Issue
Block a user