(D3D11) Cleanups - use less inlined functions

This commit is contained in:
twinaphex 2022-04-23 16:25:59 +02:00
parent 0888297f31
commit 8973f2ae01
5 changed files with 62 additions and 129 deletions

View File

@ -173,8 +173,8 @@ void d3d11_update_texture(
if (!texture || !texture->staging)
return;
D3D11MapTexture2D(ctx, texture->staging,
0, D3D11_MAP_WRITE, 0, &mapped_texture);
ctx->lpVtbl->Map(
ctx, (D3D11Resource)texture->staging, 0, D3D11_MAP_WRITE, 0, &mapped_texture);
#if 0
conv_rgb565_argb8888(mapped_texture.pData, data, width, height,
@ -186,10 +186,10 @@ void d3d11_update_texture(
mapped_texture.pData);
#endif
D3D11UnmapTexture2D(ctx, texture->staging, 0);
ctx->lpVtbl->Unmap(ctx, (D3D11Resource)texture->staging, 0);
D3D11CopyTexture2DSubresourceRegion(
ctx, texture->handle, 0, 0, 0, 0, texture->staging, 0, &frame_box);
ctx->lpVtbl->CopySubresourceRegion(
ctx, (D3D11Resource)texture->handle, 0, 0, 0, 0, (D3D11Resource)texture->staging, 0, &frame_box);
if (texture->desc.MiscFlags & D3D11_RESOURCE_MISC_GENERATE_MIPS)
D3D11GenerateMips(ctx, texture->view);

View File

@ -319,14 +319,6 @@ static INLINE void D3D11SetVShaderResources(
device_context, start_slot, num_views, shader_resource_views);
}
static INLINE void D3D11Begin(D3D11DeviceContext device_context, D3D11Asynchronous async)
{
device_context->lpVtbl->Begin(device_context, async);
}
static INLINE void D3D11End(D3D11DeviceContext device_context, D3D11Asynchronous async)
{
device_context->lpVtbl->End(device_context, async);
}
static INLINE HRESULT D3D11GetData(
D3D11DeviceContext device_context,
D3D11Asynchronous async,
@ -382,13 +374,6 @@ static INLINE void D3D11SetRenderTargetsAndUnorderedAccessViews(
unordered_access_views, uavinitial_counts);
}
static INLINE void D3D11SetDepthStencilState(
D3D11DeviceContext device_context,
D3D11DepthStencilState depth_stencil_state,
UINT stencil_ref)
{
device_context->lpVtbl->OMSetDepthStencilState(device_context, depth_stencil_state, stencil_ref);
}
static INLINE void D3D11SOSetTargets(
D3D11DeviceContext device_context,
UINT num_buffers,
@ -477,13 +462,7 @@ static INLINE void D3D11CopyStructureCount(
device_context->lpVtbl->CopyStructureCount(
device_context, dst_buffer, dst_aligned_byte_offset, src_view);
}
static INLINE void D3D11ClearRenderTargetView(
D3D11DeviceContext device_context,
D3D11RenderTargetView render_target_view,
FLOAT color_rgba[4])
{
device_context->lpVtbl->ClearRenderTargetView(device_context, render_target_view, color_rgba);
}
static INLINE void D3D11ClearUnorderedAccessViewUint(
D3D11DeviceContext device_context,
D3D11UnorderedAccessView unordered_access_view,
@ -671,15 +650,7 @@ static INLINE void D3D11GetPShaderResources(
device_context->lpVtbl->PSGetShaderResources(
device_context, start_slot, num_views, shader_resource_views);
}
static INLINE void D3D11GetPShader(
D3D11DeviceContext device_context,
D3D11PixelShader* pixel_shader,
D3D11ClassInstance* class_instances,
UINT* num_class_instances)
{
device_context->lpVtbl->PSGetShader(
device_context, pixel_shader, class_instances, num_class_instances);
}
static INLINE void D3D11GetPShaderSamplers(
D3D11DeviceContext device_context,
UINT start_slot,
@ -688,15 +659,7 @@ static INLINE void D3D11GetPShaderSamplers(
{
device_context->lpVtbl->PSGetSamplers(device_context, start_slot, num_samplers, samplers);
}
static INLINE void D3D11GetVShader(
D3D11DeviceContext device_context,
D3D11VertexShader* vertex_shader,
D3D11ClassInstance* class_instances,
UINT* num_class_instances)
{
device_context->lpVtbl->VSGetShader(
device_context, vertex_shader, class_instances, num_class_instances);
}
static INLINE void D3D11GetPShaderConstantBuffers(
D3D11DeviceContext device_context,
UINT start_slot,
@ -814,14 +777,7 @@ static INLINE void D3D11GetRenderTargetsAndUnorderedAccessViews(
device_context, num_rtvs, render_target_views, depth_stencil_view, uavstart_slot, num_uavs,
unordered_access_views);
}
static INLINE void D3D11GetBlendState(
D3D11DeviceContext device_context,
D3D11BlendState* blend_state,
FLOAT blend_factor[4],
UINT* sample_mask)
{
device_context->lpVtbl->OMGetBlendState(device_context, blend_state, blend_factor, sample_mask);
}
static INLINE void D3D11GetDepthStencilState(
D3D11DeviceContext device_context,
D3D11DepthStencilState* depth_stencil_state,
@ -2275,37 +2231,6 @@ static INLINE BOOL D3D11GetMuteDebugOutput(D3D11InfoQueue info_queue)
/* end of auto-generated */
static INLINE HRESULT D3D11MapTexture2D(
D3D11DeviceContext device_context,
D3D11Texture2D texture,
UINT subresource,
D3D11_MAP map_type,
UINT map_flags,
D3D11_MAPPED_SUBRESOURCE* mapped_resource)
{
return device_context->lpVtbl->Map(
device_context, (D3D11Resource)texture, subresource, map_type, map_flags, mapped_resource);
}
static INLINE void
D3D11UnmapTexture2D(D3D11DeviceContext device_context, D3D11Texture2D texture, UINT subresource)
{
device_context->lpVtbl->Unmap(device_context, (D3D11Resource)texture, subresource);
}
static INLINE void D3D11CopyTexture2DSubresourceRegion(
D3D11DeviceContext device_context,
D3D11Texture2D dst_texture,
UINT dst_subresource,
UINT dst_x,
UINT dst_y,
UINT dst_z,
D3D11Texture2D src_texture,
UINT src_subresource,
D3D11_BOX* src_box)
{
device_context->lpVtbl->CopySubresourceRegion(
device_context, (D3D11Resource)dst_texture, dst_subresource, dst_x, dst_y, dst_z,
(D3D11Resource)src_texture, src_subresource, src_box);
}
static INLINE HRESULT D3D11CreateTexture2DRenderTargetView(
D3D11Device device,
D3D11Texture2D texture,
@ -2334,11 +2259,6 @@ static INLINE HRESULT D3D11MapBuffer(
return device_context->lpVtbl->Map(
device_context, (D3D11Resource)buffer, subresource, map_type, map_flags, mapped_resource);
}
static INLINE void
D3D11UnmapBuffer(D3D11DeviceContext device_context, D3D11Buffer buffer, UINT subresource)
{
device_context->lpVtbl->Unmap(device_context, (D3D11Resource)buffer, subresource);
}
#endif
/* internal */

View File

@ -115,8 +115,8 @@ static void d3d11_overlay_vertex_geom(
if (!d3d11)
return;
D3D11MapBuffer(
d3d11->context, d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo);
d3d11->context->lpVtbl->Map(
d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo);
{
d3d11_sprite_t* sprites = (d3d11_sprite_t*)mapped_vbo.pData;
sprites[index].pos.x = x;
@ -124,7 +124,7 @@ static void d3d11_overlay_vertex_geom(
sprites[index].pos.w = w;
sprites[index].pos.h = h;
}
D3D11UnmapBuffer(d3d11->context, d3d11->overlays.vbo, 0);
d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0);
}
static void d3d11_overlay_tex_geom(
@ -137,8 +137,8 @@ static void d3d11_overlay_tex_geom(
if (!d3d11)
return;
D3D11MapBuffer(
d3d11->context, d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo);
d3d11->context->lpVtbl->Map(
d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo);
{
d3d11_sprite_t* sprites = (d3d11_sprite_t*)mapped_vbo.pData;
sprites[index].coords.u = u;
@ -146,7 +146,7 @@ static void d3d11_overlay_tex_geom(
sprites[index].coords.w = w;
sprites[index].coords.h = h;
}
D3D11UnmapBuffer(d3d11->context, d3d11->overlays.vbo, 0);
d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0);
}
static void d3d11_overlay_set_alpha(void* data, unsigned index, float mod)
@ -157,8 +157,8 @@ static void d3d11_overlay_set_alpha(void* data, unsigned index, float mod)
if (!d3d11)
return;
D3D11MapBuffer(
d3d11->context, d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo);
d3d11->context->lpVtbl->Map(
d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo);
{
d3d11_sprite_t* sprites = (d3d11_sprite_t*)mapped_vbo.pData;
sprites[index].colors[0] = DXGI_COLOR_RGBA(0xFF, 0xFF, 0xFF, mod * 0xFF);
@ -166,7 +166,7 @@ static void d3d11_overlay_set_alpha(void* data, unsigned index, float mod)
sprites[index].colors[2] = sprites[index].colors[0];
sprites[index].colors[3] = sprites[index].colors[0];
}
D3D11UnmapBuffer(d3d11->context, d3d11->overlays.vbo, 0);
d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0);
}
static bool d3d11_overlay_load(void* data, const void* image_data, unsigned num_images)
@ -194,7 +194,8 @@ static bool d3d11_overlay_load(void* data, const void* image_data, unsigned num_
desc.StructureByteStride = 0;
D3D11CreateBuffer(d3d11->device, &desc, NULL, &d3d11->overlays.vbo);
D3D11MapBuffer(d3d11->context, d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_vbo);
d3d11->context->lpVtbl->Map(
d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_vbo);
sprites = (d3d11_sprite_t*)mapped_vbo.pData;
for (i = 0; i < num_images; i++)
@ -229,7 +230,7 @@ static bool d3d11_overlay_load(void* data, const void* image_data, unsigned num_
sprites[i].colors[2] = sprites[i].colors[0];
sprites[i].colors[3] = sprites[i].colors[0];
}
D3D11UnmapBuffer(d3d11->context, d3d11->overlays.vbo, 0);
d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0);
return true;
}
@ -314,13 +315,13 @@ static void d3d11_set_hdr_max_nits(void *data, float max_nits)
d3d11->hdr.max_output_nits = max_nits;
d3d11->hdr.ubo_values.max_nits = max_nits;
D3D11MapBuffer(d3d11->context, d3d11->hdr.ubo,
0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_ubo);
d3d11->context->lpVtbl->Map(
d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_ubo);
{
dxgi_hdr_uniform_t *ubo = (dxgi_hdr_uniform_t*)mapped_ubo.pData;
*ubo = d3d11->hdr.ubo_values;
}
D3D11UnmapBuffer(d3d11->context, d3d11->hdr.ubo, 0);
d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0);
dxgi_set_hdr_metadata(
d3d11->swapChain,
@ -341,11 +342,11 @@ static void d3d11_set_hdr_paper_white_nits(void* data, float paper_white_nits)
d3d11->hdr.ubo_values.paper_white_nits = paper_white_nits;
D3D11MapBuffer(d3d11->context, d3d11->hdr.ubo,
0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
d3d11->context->lpVtbl->Map(
d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
ubo = (dxgi_hdr_uniform_t*)mapped_ubo.pData;
*ubo = d3d11->hdr.ubo_values;
D3D11UnmapBuffer(d3d11->context, d3d11->hdr.ubo, 0);
d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0);
}
static void d3d11_set_hdr_contrast(void* data, float contrast)
@ -356,11 +357,11 @@ static void d3d11_set_hdr_contrast(void* data, float contrast)
d3d11->hdr.ubo_values.contrast = contrast;
D3D11MapBuffer(d3d11->context, d3d11->hdr.ubo,
0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
d3d11->context->lpVtbl->Map(
d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
ubo = (dxgi_hdr_uniform_t*)mapped_ubo.pData;
*ubo = d3d11->hdr.ubo_values;
D3D11UnmapBuffer(d3d11->context, d3d11->hdr.ubo, 0);
d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0);
}
static void d3d11_set_hdr_expand_gamut(void* data, bool expand_gamut)
@ -371,10 +372,11 @@ static void d3d11_set_hdr_expand_gamut(void* data, bool expand_gamut)
d3d11->hdr.ubo_values.expand_gamut = expand_gamut ? 1.0f : 0.0f;
D3D11MapBuffer(d3d11->context, d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
d3d11->context->lpVtbl->Map(
d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
ubo = (dxgi_hdr_uniform_t*)mapped_ubo.pData;
*ubo = d3d11->hdr.ubo_values;
D3D11UnmapBuffer(d3d11->context, d3d11->hdr.ubo, 0);
d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0);
}
static void d3d11_set_hdr_inverse_tonemap(d3d11_video_t* d3d11, bool inverse_tonemap)
@ -384,10 +386,11 @@ static void d3d11_set_hdr_inverse_tonemap(d3d11_video_t* d3d11, bool inverse_ton
d3d11->hdr.ubo_values.inverse_tonemap = inverse_tonemap ? 1.0f : 0.0f;
D3D11MapBuffer(d3d11->context, d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
d3d11->context->lpVtbl->Map(
d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
ubo = (dxgi_hdr_uniform_t*)mapped_ubo.pData;
*ubo = d3d11->hdr.ubo_values;
D3D11UnmapBuffer(d3d11->context, d3d11->hdr.ubo, 0);
d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0);
}
static void d3d11_set_hdr10(d3d11_video_t* d3d11, bool hdr10)
@ -397,10 +400,11 @@ static void d3d11_set_hdr10(d3d11_video_t* d3d11, bool hdr10)
d3d11->hdr.ubo_values.hdr10 = hdr10 ? 1.0f : 0.0f;
D3D11MapBuffer(d3d11->context, d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
d3d11->context->lpVtbl->Map(
d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
ubo = (dxgi_hdr_uniform_t*)mapped_ubo.pData;
*ubo = d3d11->hdr.ubo_values;
D3D11UnmapBuffer(d3d11->context, d3d11->hdr.ubo, 0);
d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0);
}
#endif
@ -435,9 +439,10 @@ static void d3d11_gfx_set_rotation(void* data, unsigned rotation)
matrix_4x4_rotate_z(rot, rotation * (M_PI / 2.0f));
matrix_4x4_multiply(d3d11->mvp, rot, d3d11->ubo_values.mvp);
D3D11MapBuffer(d3d11->context, d3d11->frame.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
d3d11->context->lpVtbl->Map(
d3d11->context, (D3D11Resource)d3d11->frame.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
*(math_matrix_4x4*)mapped_ubo.pData = d3d11->mvp;
D3D11UnmapBuffer(d3d11->context, d3d11->frame.ubo, 0);
d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->frame.ubo, 0);
}
static void d3d11_update_viewport(void* data, bool force_full)
@ -1972,8 +1977,12 @@ uuidof(ID3D11Texture2D), (void**)&back_buffer);
if (hw_texture)
{
D3D11_BOX frame_box = { 0, 0, 0, width, height, 1 };
D3D11CopyTexture2DSubresourceRegion(
context, d3d11->frame.texture[0].handle, 0, 0, 0, 0, hw_texture, 0, &frame_box);
context->lpVtbl->CopySubresourceRegion(
context,
(D3D11Resource)d3d11->frame.texture[0].handle,
0, 0, 0, 0,
(D3D11Resource)hw_texture, 0, &frame_box);
Release(hw_texture);
hw_texture = NULL;
}
@ -1983,7 +1992,8 @@ uuidof(ID3D11Texture2D), (void**)&back_buffer);
}
context->lpVtbl->RSSetState(context, d3d11->scissor_disabled);
d3d11->context->lpVtbl->OMSetBlendState(d3d11->context, d3d11->blend_disable,
d3d11->context->lpVtbl->OMSetBlendState(
d3d11->context, d3d11->blend_disable,
NULL, D3D11_DEFAULT_SAMPLE_MASK);
context->lpVtbl->IASetPrimitiveTopology(context, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
{
@ -2041,14 +2051,15 @@ uuidof(ID3D11Texture2D), (void**)&back_buffer);
D3D11_MAPPED_SUBRESOURCE res;
uniform_sem_t* uniform = buffer_sem->uniforms;
D3D11MapBuffer(context, buffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &res);
d3d11->context->lpVtbl->Map(
d3d11->context, (D3D11Resource)buffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &res);
while (uniform->size)
{
if (uniform->data)
memcpy((uint8_t*)res.pData + uniform->offset, uniform->data, uniform->size);
uniform++;
}
D3D11UnmapBuffer(context, buffer, 0);
context->lpVtbl->Unmap(context, (D3D11Resource)buffer, 0);
if (buffer_sem->stage_mask & SLANG_STAGE_VERTEX_MASK)
D3D11SetVShaderConstantBuffers(context, buffer_sem->binding, 1, &buffer);

View File

@ -97,8 +97,8 @@ static void gfx_display_d3d11_draw(gfx_display_ctx_draw_t *draw,
D3D11_MAPPED_SUBRESOURCE mapped_vbo;
d3d11_sprite_t* sprite = NULL;
D3D11MapBuffer(
d3d11->context, d3d11->sprites.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo);
d3d11->context->lpVtbl->Map(
d3d11->context, (D3D11Resource)d3d11->sprites.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo);
sprite = (d3d11_sprite_t*)mapped_vbo.pData + d3d11->sprites.offset;
@ -167,7 +167,7 @@ static void gfx_display_d3d11_draw(gfx_display_ctx_draw_t *draw,
d3d11->context->lpVtbl->IASetPrimitiveTopology(d3d11->context, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
}
D3D11UnmapBuffer(d3d11->context, d3d11->sprites.vbo, 0);
d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->sprites.vbo, 0);
}
{
@ -254,9 +254,10 @@ static void gfx_display_d3d11_draw_pipeline(gfx_display_ctx_draw_t *draw,
{
D3D11_MAPPED_SUBRESOURCE mapped_ubo;
D3D11MapBuffer(d3d11->context, d3d11->ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
d3d11->context->lpVtbl->Map(
d3d11->context, (D3D11Resource)d3d11->ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
*(d3d11_uniform_t*)mapped_ubo.pData = d3d11->ubo_values;
D3D11UnmapBuffer(d3d11->context, d3d11->ubo, 0);
d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->ubo, 0);
}
}

View File

@ -153,7 +153,8 @@ static void d3d11_font_render_line(
break;
}
D3D11MapBuffer(d3d11->context, d3d11->sprites.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo);
d3d11->context->lpVtbl->Map(
d3d11->context, (D3D11Resource)d3d11->sprites.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo);
v = (d3d11_sprite_t*)mapped_vbo.pData + d3d11->sprites.offset;
for (i = 0; i < msg_len; i++)
@ -199,7 +200,7 @@ static void d3d11_font_render_line(
}
count = v - ((d3d11_sprite_t*)mapped_vbo.pData + d3d11->sprites.offset);
D3D11UnmapBuffer(d3d11->context, d3d11->sprites.vbo, 0);
d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->sprites.vbo, 0);
if (!count)
return;