mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 22:20:21 +00:00
(D3D11) Get rid of some inlined functions
This commit is contained in:
parent
7eb9f6b49b
commit
de4bfa0805
@ -128,7 +128,8 @@ void d3d11_init_texture(D3D11Device device, d3d11_texture_t* texture)
|
||||
|
||||
texture->desc.Format = d3d11_get_closest_match(device, texture->desc.Format, format_support);
|
||||
|
||||
D3D11CreateTexture2D(device, &texture->desc, NULL, &texture->handle);
|
||||
device->lpVtbl->CreateTexture2D(device, &texture->desc, NULL,
|
||||
&texture->handle);
|
||||
|
||||
{
|
||||
D3D11_SHADER_RESOURCE_VIEW_DESC view_desc;
|
||||
@ -136,11 +137,13 @@ void d3d11_init_texture(D3D11Device device, d3d11_texture_t* texture)
|
||||
view_desc.ViewDimension = D3D_SRV_DIMENSION_TEXTURE2D;
|
||||
view_desc.Texture2D.MostDetailedMip = 0;
|
||||
view_desc.Texture2D.MipLevels = -1;
|
||||
D3D11CreateTexture2DShaderResourceView(device, texture->handle, &view_desc, &texture->view);
|
||||
device->lpVtbl->CreateShaderResourceView(device,
|
||||
(D3D11Resource)texture->handle, &view_desc, &texture->view);
|
||||
}
|
||||
|
||||
if (is_render_target)
|
||||
D3D11CreateTexture2DRenderTargetView(device, texture->handle, NULL, &texture->rt_view);
|
||||
device->lpVtbl->CreateRenderTargetView(device,
|
||||
(D3D11Resource)texture->handle, NULL, &texture->rt_view);
|
||||
else
|
||||
{
|
||||
D3D11_TEXTURE2D_DESC desc = texture->desc;
|
||||
@ -149,7 +152,7 @@ void d3d11_init_texture(D3D11Device device, d3d11_texture_t* texture)
|
||||
desc.MiscFlags = 0;
|
||||
desc.Usage = D3D11_USAGE_STAGING;
|
||||
desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
|
||||
D3D11CreateTexture2D(device, &desc, NULL, &texture->staging);
|
||||
device->lpVtbl->CreateTexture2D(device, &desc, NULL, &texture->staging);
|
||||
}
|
||||
|
||||
texture->size_data.x = texture->desc.Width;
|
||||
@ -195,7 +198,7 @@ void d3d11_update_texture(
|
||||
(D3D11Resource)texture->staging, 0, &frame_box);
|
||||
|
||||
if (texture->desc.MiscFlags & D3D11_RESOURCE_MISC_GENERATE_MIPS)
|
||||
D3D11GenerateMips(ctx, texture->view);
|
||||
ctx->lpVtbl->GenerateMips(ctx, texture->view);
|
||||
}
|
||||
|
||||
DXGI_FORMAT
|
||||
@ -210,7 +213,8 @@ d3d11_get_closest_match(D3D11Device device, DXGI_FORMAT desired_format, UINT des
|
||||
while (*format != DXGI_FORMAT_UNKNOWN)
|
||||
{
|
||||
UINT format_support;
|
||||
if (SUCCEEDED(D3D11CheckFormatSupport(device, *format, &format_support)) &&
|
||||
if (SUCCEEDED(device->lpVtbl->CheckFormatSupport(device, *format,
|
||||
&format_support)) &&
|
||||
((format_support & desired_format_support) == desired_format_support))
|
||||
break;
|
||||
format++;
|
||||
@ -279,19 +283,22 @@ bool d3d11_init_shader(
|
||||
}
|
||||
|
||||
if (vs_code)
|
||||
D3D11CreateVertexShader(
|
||||
device, D3DGetBufferPointer(vs_code), D3DGetBufferSize(vs_code), NULL, &out->vs);
|
||||
device->lpVtbl->CreateVertexShader(
|
||||
device, D3DGetBufferPointer(vs_code), D3DGetBufferSize(vs_code),
|
||||
NULL, &out->vs);
|
||||
|
||||
if (ps_code)
|
||||
D3D11CreatePixelShader(
|
||||
device, D3DGetBufferPointer(ps_code), D3DGetBufferSize(ps_code), NULL, &out->ps);
|
||||
device->lpVtbl->CreatePixelShader(
|
||||
device, D3DGetBufferPointer(ps_code), D3DGetBufferSize(ps_code),
|
||||
NULL, &out->ps);
|
||||
|
||||
if (gs_code)
|
||||
D3D11CreateGeometryShader(
|
||||
device, D3DGetBufferPointer(gs_code), D3DGetBufferSize(gs_code), NULL, &out->gs);
|
||||
device->lpVtbl->CreateGeometryShader(
|
||||
device, D3DGetBufferPointer(gs_code), D3DGetBufferSize(gs_code),
|
||||
NULL, &out->gs);
|
||||
|
||||
if (vs_code && input_element_descs)
|
||||
D3D11CreateInputLayout(
|
||||
device->lpVtbl->CreateInputLayout(
|
||||
device, input_element_descs, num_elements, D3DGetBufferPointer(vs_code),
|
||||
D3DGetBufferSize(vs_code), &out->layout);
|
||||
|
||||
|
@ -295,171 +295,6 @@ typedef struct
|
||||
d3d11_texture_t luts[GFX_MAX_TEXTURES];
|
||||
} d3d11_video_t;
|
||||
|
||||
#if !defined(__cplusplus) || defined(CINTERFACE)
|
||||
static INLINE void D3D11GetTexture2DDesc(D3D11Texture2D texture2d, D3D11_TEXTURE2D_DESC* desc)
|
||||
{
|
||||
texture2d->lpVtbl->GetDesc(texture2d, desc);
|
||||
}
|
||||
|
||||
static INLINE void D3D11GetShaderResourceViewResource(
|
||||
D3D11ShaderResourceView shader_resource_view, D3D11Resource* resource)
|
||||
{
|
||||
shader_resource_view->lpVtbl->GetResource(shader_resource_view, resource);
|
||||
}
|
||||
|
||||
static INLINE void D3D11GetShaderResourceViewTexture2D(
|
||||
D3D11ShaderResourceView shader_resource_view, D3D11Texture2D* texture2d)
|
||||
{
|
||||
shader_resource_view->lpVtbl->GetResource(shader_resource_view, (D3D11Resource*)texture2d);
|
||||
}
|
||||
|
||||
static INLINE void D3D11GetShaderResourceViewDesc(
|
||||
D3D11ShaderResourceView shader_resource_view, D3D11_SHADER_RESOURCE_VIEW_DESC* desc)
|
||||
{
|
||||
shader_resource_view->lpVtbl->GetDesc(shader_resource_view, desc);
|
||||
}
|
||||
|
||||
static INLINE void D3D11SetPShaderResources(
|
||||
D3D11DeviceContext device_context,
|
||||
UINT start_slot,
|
||||
UINT num_views,
|
||||
ID3D11ShaderResourceView* const* shader_resource_views)
|
||||
{
|
||||
device_context->lpVtbl->PSSetShaderResources(
|
||||
device_context, start_slot, num_views,
|
||||
shader_resource_views);
|
||||
}
|
||||
|
||||
static INLINE void
|
||||
D3D11GenerateMips(D3D11DeviceContext device_context, D3D11ShaderResourceView shader_resource_view)
|
||||
{
|
||||
device_context->lpVtbl->GenerateMips(device_context, shader_resource_view);
|
||||
}
|
||||
|
||||
static INLINE void
|
||||
D3D11GetState(D3D11DeviceContext device_context, D3D11RasterizerState* rasterizer_state)
|
||||
{
|
||||
device_context->lpVtbl->RSGetState(device_context, rasterizer_state);
|
||||
}
|
||||
|
||||
static INLINE HRESULT D3D11CreateBuffer(
|
||||
D3D11Device device,
|
||||
D3D11_BUFFER_DESC* desc,
|
||||
D3D11_SUBRESOURCE_DATA* initial_data,
|
||||
D3D11Buffer* buffer)
|
||||
{
|
||||
return device->lpVtbl->CreateBuffer(device, desc, initial_data, buffer);
|
||||
}
|
||||
|
||||
static INLINE HRESULT D3D11CreateTexture2D(
|
||||
D3D11Device device,
|
||||
D3D11_TEXTURE2D_DESC* desc,
|
||||
D3D11_SUBRESOURCE_DATA* initial_data,
|
||||
D3D11Texture2D* texture2d)
|
||||
{
|
||||
return device->lpVtbl->CreateTexture2D(device, desc, initial_data, texture2d);
|
||||
}
|
||||
static INLINE HRESULT D3D11CreateShaderResourceView(
|
||||
D3D11Device device,
|
||||
D3D11Resource resource,
|
||||
D3D11_SHADER_RESOURCE_VIEW_DESC* desc,
|
||||
D3D11ShaderResourceView* srview)
|
||||
{
|
||||
return device->lpVtbl->CreateShaderResourceView(device, resource, desc, srview);
|
||||
}
|
||||
static INLINE HRESULT D3D11CreateRenderTargetView(
|
||||
D3D11Device device,
|
||||
D3D11Resource resource,
|
||||
D3D11_RENDER_TARGET_VIEW_DESC* desc,
|
||||
D3D11RenderTargetView* rtview)
|
||||
{
|
||||
return device->lpVtbl->CreateRenderTargetView(device, resource, desc, rtview);
|
||||
}
|
||||
static INLINE HRESULT D3D11CreateDepthStencilView(
|
||||
D3D11Device device,
|
||||
D3D11Resource resource,
|
||||
D3D11_DEPTH_STENCIL_VIEW_DESC* desc,
|
||||
D3D11DepthStencilView* depth_stencil_view)
|
||||
{
|
||||
return device->lpVtbl->CreateDepthStencilView(device, resource, desc, depth_stencil_view);
|
||||
}
|
||||
static INLINE HRESULT D3D11CreateInputLayout(
|
||||
D3D11Device device,
|
||||
const D3D11_INPUT_ELEMENT_DESC* input_element_descs,
|
||||
UINT num_elements,
|
||||
void* shader_bytecode_with_input_signature,
|
||||
SIZE_T bytecode_length,
|
||||
D3D11InputLayout* input_layout)
|
||||
{
|
||||
return device->lpVtbl->CreateInputLayout(
|
||||
device, input_element_descs, num_elements, shader_bytecode_with_input_signature,
|
||||
bytecode_length, input_layout);
|
||||
}
|
||||
static INLINE HRESULT D3D11CreateVertexShader(
|
||||
D3D11Device device,
|
||||
void* shader_bytecode,
|
||||
SIZE_T bytecode_length,
|
||||
D3D11ClassLinkage class_linkage,
|
||||
D3D11VertexShader* vertex_shader)
|
||||
{
|
||||
return device->lpVtbl->CreateVertexShader(
|
||||
device, shader_bytecode, bytecode_length, class_linkage, vertex_shader);
|
||||
}
|
||||
static INLINE HRESULT D3D11CreateGeometryShader(
|
||||
D3D11Device device,
|
||||
void* shader_bytecode,
|
||||
SIZE_T bytecode_length,
|
||||
D3D11ClassLinkage class_linkage,
|
||||
D3D11GeometryShader* geometry_shader)
|
||||
{
|
||||
return device->lpVtbl->CreateGeometryShader(
|
||||
device, shader_bytecode, bytecode_length, class_linkage, geometry_shader);
|
||||
}
|
||||
static INLINE HRESULT D3D11CreatePixelShader(
|
||||
D3D11Device device,
|
||||
void* shader_bytecode,
|
||||
SIZE_T bytecode_length,
|
||||
D3D11ClassLinkage class_linkage,
|
||||
D3D11PixelShader* pixel_shader)
|
||||
{
|
||||
return device->lpVtbl->CreatePixelShader(
|
||||
device, shader_bytecode, bytecode_length, class_linkage, pixel_shader);
|
||||
}
|
||||
|
||||
static INLINE HRESULT
|
||||
D3D11CheckFormatSupport(D3D11Device device, DXGI_FORMAT format, UINT* format_support)
|
||||
{
|
||||
return device->lpVtbl->CheckFormatSupport(device, format, format_support);
|
||||
}
|
||||
|
||||
static INLINE D3D_FEATURE_LEVEL D3D11GetFeatureLevel(D3D11Device device)
|
||||
{
|
||||
return device->lpVtbl->GetFeatureLevel(device);
|
||||
}
|
||||
|
||||
/* end of auto-generated */
|
||||
|
||||
static INLINE HRESULT D3D11CreateTexture2DRenderTargetView(
|
||||
D3D11Device device,
|
||||
D3D11Texture2D texture,
|
||||
D3D11_RENDER_TARGET_VIEW_DESC* desc,
|
||||
D3D11RenderTargetView* rtview)
|
||||
{
|
||||
return device->lpVtbl->CreateRenderTargetView(device, (D3D11Resource)texture, desc, rtview);
|
||||
}
|
||||
|
||||
static INLINE HRESULT D3D11CreateTexture2DShaderResourceView(
|
||||
D3D11Device device,
|
||||
D3D11Texture2D texture,
|
||||
D3D11_SHADER_RESOURCE_VIEW_DESC* desc,
|
||||
D3D11ShaderResourceView* srview)
|
||||
{
|
||||
return device->lpVtbl->CreateShaderResourceView(device, (D3D11Resource)texture, desc, srview);
|
||||
}
|
||||
#endif
|
||||
|
||||
void d3d11_init_texture(D3D11Device device, d3d11_texture_t* texture);
|
||||
|
||||
static INLINE void d3d11_release_texture(d3d11_texture_t* texture)
|
||||
{
|
||||
Release(texture->handle);
|
||||
@ -468,6 +303,8 @@ static INLINE void d3d11_release_texture(d3d11_texture_t* texture)
|
||||
Release(texture->rt_view);
|
||||
}
|
||||
|
||||
void d3d11_init_texture(D3D11Device device, d3d11_texture_t* texture);
|
||||
|
||||
void d3d11_update_texture(
|
||||
D3D11DeviceContext ctx,
|
||||
unsigned width,
|
||||
@ -492,11 +329,3 @@ bool d3d11_init_shader(
|
||||
UINT num_elements,
|
||||
d3d11_shader_t* out,
|
||||
enum d3d11_feature_level_hint hint);
|
||||
|
||||
static INLINE void d3d11_release_shader(d3d11_shader_t* shader)
|
||||
{
|
||||
Release(shader->layout);
|
||||
Release(shader->vs);
|
||||
Release(shader->ps);
|
||||
Release(shader->gs);
|
||||
}
|
||||
|
@ -82,6 +82,14 @@ static D3D11Device cached_device_d3d11;
|
||||
static D3D_FEATURE_LEVEL cached_supportedFeatureLevel;
|
||||
static D3D11DeviceContext cached_context_d3d11;
|
||||
|
||||
static INLINE void d3d11_release_shader(d3d11_shader_t* shader)
|
||||
{
|
||||
Release(shader->layout);
|
||||
Release(shader->vs);
|
||||
Release(shader->ps);
|
||||
Release(shader->gs);
|
||||
}
|
||||
|
||||
static uint32_t d3d11_get_flags(void *data)
|
||||
{
|
||||
uint32_t flags = 0;
|
||||
@ -192,7 +200,8 @@ static bool d3d11_overlay_load(void* data, const void* image_data, unsigned num_
|
||||
desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
|
||||
desc.MiscFlags = 0;
|
||||
desc.StructureByteStride = 0;
|
||||
D3D11CreateBuffer(d3d11->device, &desc, NULL, &d3d11->overlays.vbo);
|
||||
d3d11->device->lpVtbl->CreateBuffer(d3d11->device, &desc, NULL,
|
||||
&d3d11->overlays.vbo);
|
||||
|
||||
d3d11->context->lpVtbl->Map(
|
||||
d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_vbo);
|
||||
@ -665,7 +674,7 @@ static bool d3d11_gfx_set_shader(void* data, enum rarch_shader_type type, const
|
||||
if (!desc.ByteWidth)
|
||||
continue;
|
||||
|
||||
D3D11CreateBuffer(d3d11->device, &desc, NULL, &d3d11->pass[i].buffers[j]);
|
||||
d3d11->device->lpVtbl->CreateBuffer(d3d11->device, &desc, NULL, &d3d11->pass[i].buffers[j]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1223,8 +1232,10 @@ static void *d3d11_gfx_init(const video_info_t* video,
|
||||
ubo_data.SysMemPitch = 0;
|
||||
ubo_data.SysMemSlicePitch = 0;
|
||||
|
||||
D3D11CreateBuffer(d3d11->device, &desc, &ubo_data, &d3d11->ubo);
|
||||
D3D11CreateBuffer(d3d11->device, &desc, NULL, &d3d11->frame.ubo);
|
||||
d3d11->device->lpVtbl->CreateBuffer(d3d11->device, &desc, &ubo_data,
|
||||
&d3d11->ubo);
|
||||
d3d11->device->lpVtbl->CreateBuffer(d3d11->device, &desc, NULL,
|
||||
&d3d11->frame.ubo);
|
||||
}
|
||||
|
||||
d3d11_gfx_set_rotation(d3d11, 0);
|
||||
@ -1260,7 +1271,8 @@ static void *d3d11_gfx_init(const video_info_t* video,
|
||||
ubo_data.SysMemPitch = 0;
|
||||
ubo_data.SysMemSlicePitch = 0;
|
||||
|
||||
D3D11CreateBuffer(d3d11->device, &desc, &ubo_data, &d3d11->hdr.ubo);
|
||||
d3d11->device->lpVtbl->CreateBuffer(d3d11->device, &desc, &ubo_data,
|
||||
&d3d11->hdr.ubo);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1330,14 +1342,17 @@ static void *d3d11_gfx_init(const video_info_t* video,
|
||||
desc.MiscFlags = 0;
|
||||
desc.StructureByteStride = 0;
|
||||
|
||||
D3D11CreateBuffer(d3d11->device, &desc, &vertex_data, &d3d11->frame.vbo);
|
||||
d3d11->device->lpVtbl->CreateBuffer(d3d11->device, &desc, &vertex_data,
|
||||
&d3d11->frame.vbo);
|
||||
desc.Usage = D3D11_USAGE_DYNAMIC;
|
||||
desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
|
||||
D3D11CreateBuffer(d3d11->device, &desc, &vertex_data, &d3d11->menu.vbo);
|
||||
d3d11->device->lpVtbl->CreateBuffer(d3d11->device, &desc, &vertex_data,
|
||||
&d3d11->menu.vbo);
|
||||
|
||||
d3d11->sprites.capacity = 16 * 1024;
|
||||
desc.ByteWidth = sizeof(d3d11_sprite_t) * d3d11->sprites.capacity;
|
||||
D3D11CreateBuffer(d3d11->device, &desc, NULL, &d3d11->sprites.vbo);
|
||||
d3d11->device->lpVtbl->CreateBuffer(d3d11->device, &desc, NULL,
|
||||
&d3d11->sprites.vbo);
|
||||
}
|
||||
|
||||
#ifdef HAVE_DXGI_HDR
|
||||
@ -1895,8 +1910,9 @@ static bool d3d11_gfx_frame(
|
||||
{
|
||||
D3D11Texture2D back_buffer;
|
||||
d3d11->swapChain->lpVtbl->GetBuffer(d3d11->swapChain, 0,
|
||||
uuidof(ID3D11Texture2D), (void**)&back_buffer);
|
||||
D3D11CreateTexture2DRenderTargetView(d3d11->device, back_buffer, NULL, &rtv);
|
||||
uuidof(ID3D11Texture2D), (void**)&back_buffer);
|
||||
d3d11->device->lpVtbl->CreateRenderTargetView(d3d11->device,
|
||||
(D3D11Resource)back_buffer, NULL, &rtv);
|
||||
Release(back_buffer);
|
||||
}
|
||||
|
||||
@ -1914,8 +1930,8 @@ uuidof(ID3D11Texture2D), (void**)&back_buffer);
|
||||
D3D11_SHADER_RESOURCE_VIEW_DESC hw_desc;
|
||||
D3D11ShaderResourceView hw_view = NULL;
|
||||
context->lpVtbl->PSGetShaderResources(context, 0, 1, &hw_view);
|
||||
D3D11GetShaderResourceViewDesc(hw_view, &hw_desc);
|
||||
D3D11GetShaderResourceViewTexture2D(hw_view, &hw_texture);
|
||||
hw_view->lpVtbl->GetDesc(hw_view, &hw_desc);
|
||||
hw_view->lpVtbl->GetResource(hw_view, (D3D11Resource*)&hw_texture);
|
||||
|
||||
if (d3d11->frame.texture[0].desc.Format != hw_desc.Format)
|
||||
{
|
||||
|
@ -173,7 +173,8 @@ static void gfx_display_d3d11_draw(gfx_display_ctx_draw_t *draw,
|
||||
|
||||
{
|
||||
d3d11_texture_t *texture = (d3d11_texture_t*)draw->texture;
|
||||
D3D11SetPShaderResources(d3d11->context, 0, 1, &texture->view);
|
||||
d3d11->context->lpVtbl->PSSetShaderResources(
|
||||
d3d11->context, 0, 1, &texture->view);
|
||||
d3d11->context->lpVtbl->PSSetSamplers(
|
||||
d3d11->context, 0, 1, (D3D11SamplerState*)&texture->sampler);
|
||||
}
|
||||
@ -224,7 +225,8 @@ static void gfx_display_d3d11_draw_pipeline(gfx_display_ctx_draw_t *draw,
|
||||
vertex_data.pSysMem = ca->coords.vertex;
|
||||
vertex_data.SysMemPitch = 0;
|
||||
vertex_data.SysMemSlicePitch = 0;
|
||||
D3D11CreateBuffer(d3d11->device, &desc, &vertex_data, &d3d11->menu_pipeline_vbo);
|
||||
d3d11->device->lpVtbl->CreateBuffer(d3d11->device, &desc, &vertex_data,
|
||||
&d3d11->menu_pipeline_vbo);
|
||||
}
|
||||
}
|
||||
{
|
||||
|
@ -219,7 +219,8 @@ static void d3d11_font_render_line(
|
||||
|
||||
{
|
||||
d3d11_texture_t *texture = (d3d11_texture_t*)&font->texture;
|
||||
D3D11SetPShaderResources(d3d11->context, 0, 1, &texture->view);
|
||||
d3d11->context->lpVtbl->PSSetShaderResources(
|
||||
d3d11->context, 0, 1, &texture->view);
|
||||
d3d11->context->lpVtbl->PSSetSamplers(
|
||||
d3d11->context, 0, 1,
|
||||
(D3D11SamplerState*)&texture->sampler);
|
||||
|
Loading…
x
Reference in New Issue
Block a user