mirror of
https://github.com/libretro/RetroArch
synced 2025-03-26 02:37:23 +00:00
C89_BUILD fixes
This commit is contained in:
parent
50e902f2ea
commit
dac1f10708
@ -37,9 +37,10 @@
|
|||||||
|
|
||||||
static void d3d11_set_filtering(void* data, unsigned index, bool smooth)
|
static void d3d11_set_filtering(void* data, unsigned index, bool smooth)
|
||||||
{
|
{
|
||||||
|
unsigned i;
|
||||||
d3d11_video_t* d3d11 = (d3d11_video_t*)data;
|
d3d11_video_t* d3d11 = (d3d11_video_t*)data;
|
||||||
|
|
||||||
for (int i = 0; i < RARCH_WRAP_MAX; i++)
|
for (i = 0; i < RARCH_WRAP_MAX; i++)
|
||||||
{
|
{
|
||||||
if (smooth)
|
if (smooth)
|
||||||
d3d11->samplers[RARCH_FILTER_UNSPEC][i] = d3d11->samplers[RARCH_FILTER_LINEAR][i];
|
d3d11->samplers[RARCH_FILTER_UNSPEC][i] = d3d11->samplers[RARCH_FILTER_LINEAR][i];
|
||||||
@ -92,11 +93,14 @@ static void d3d11_update_viewport(void* data, bool force_full)
|
|||||||
|
|
||||||
static void d3d11_free_shader_preset(d3d11_video_t* d3d11)
|
static void d3d11_free_shader_preset(d3d11_video_t* d3d11)
|
||||||
{
|
{
|
||||||
|
unsigned i;
|
||||||
if (!d3d11->shader_preset)
|
if (!d3d11->shader_preset)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (int i = 0; i < d3d11->shader_preset->passes; i++)
|
for (i = 0; i < d3d11->shader_preset->passes; i++)
|
||||||
{
|
{
|
||||||
|
unsigned j;
|
||||||
|
|
||||||
free(d3d11->shader_preset->pass[i].source.string.vertex);
|
free(d3d11->shader_preset->pass[i].source.string.vertex);
|
||||||
free(d3d11->shader_preset->pass[i].source.string.fragment);
|
free(d3d11->shader_preset->pass[i].source.string.fragment);
|
||||||
free(d3d11->pass[i].semantics.textures);
|
free(d3d11->pass[i].semantics.textures);
|
||||||
@ -104,7 +108,7 @@ static void d3d11_free_shader_preset(d3d11_video_t* d3d11)
|
|||||||
d3d11_release_texture(&d3d11->pass[i].rt);
|
d3d11_release_texture(&d3d11->pass[i].rt);
|
||||||
d3d11_release_texture(&d3d11->pass[i].feedback);
|
d3d11_release_texture(&d3d11->pass[i].feedback);
|
||||||
|
|
||||||
for (int j = 0; j < SLANG_CBUFFER_MAX; j++)
|
for (j = 0; j < SLANG_CBUFFER_MAX; j++)
|
||||||
{
|
{
|
||||||
free(d3d11->pass[i].semantics.cbuffers[j].uniforms);
|
free(d3d11->pass[i].semantics.cbuffers[j].uniforms);
|
||||||
Release(d3d11->pass[i].buffers[j]);
|
Release(d3d11->pass[i].buffers[j]);
|
||||||
@ -114,14 +118,14 @@ static void d3d11_free_shader_preset(d3d11_video_t* d3d11)
|
|||||||
memset(d3d11->pass, 0, sizeof(d3d11->pass));
|
memset(d3d11->pass, 0, sizeof(d3d11->pass));
|
||||||
|
|
||||||
/* only free the history textures here */
|
/* only free the history textures here */
|
||||||
for (int i = 1; i <= d3d11->shader_preset->history_size; i++)
|
for (i = 1; i <= d3d11->shader_preset->history_size; i++)
|
||||||
d3d11_release_texture(&d3d11->frame.texture[i]);
|
d3d11_release_texture(&d3d11->frame.texture[i]);
|
||||||
|
|
||||||
memset(
|
memset(
|
||||||
&d3d11->frame.texture[1], 0,
|
&d3d11->frame.texture[1], 0,
|
||||||
sizeof(d3d11->frame.texture[1]) * d3d11->shader_preset->history_size);
|
sizeof(d3d11->frame.texture[1]) * d3d11->shader_preset->history_size);
|
||||||
|
|
||||||
for (int i = 0; i < d3d11->shader_preset->luts; i++)
|
for (i = 0; i < d3d11->shader_preset->luts; i++)
|
||||||
d3d11_release_texture(&d3d11->luts[i]);
|
d3d11_release_texture(&d3d11->luts[i]);
|
||||||
|
|
||||||
memset(d3d11->luts, 0, sizeof(d3d11->luts));
|
memset(d3d11->luts, 0, sizeof(d3d11->luts));
|
||||||
@ -134,6 +138,7 @@ static void d3d11_free_shader_preset(d3d11_video_t* d3d11)
|
|||||||
|
|
||||||
static bool d3d11_gfx_set_shader(void* data, enum rarch_shader_type type, const char* path)
|
static bool d3d11_gfx_set_shader(void* data, enum rarch_shader_type type, const char* path)
|
||||||
{
|
{
|
||||||
|
unsigned i;
|
||||||
d3d11_video_t* d3d11 = (d3d11_video_t*)data;
|
d3d11_video_t* d3d11 = (d3d11_video_t*)data;
|
||||||
|
|
||||||
if (!d3d11)
|
if (!d3d11)
|
||||||
@ -165,79 +170,76 @@ static bool d3d11_gfx_set_shader(void* data, enum rarch_shader_type type, const
|
|||||||
|
|
||||||
d3d11_texture_t* source = &d3d11->frame.texture[0];
|
d3d11_texture_t* source = &d3d11->frame.texture[0];
|
||||||
|
|
||||||
for (int i = 0; i < d3d11->shader_preset->passes; source = &d3d11->pass[i++].rt)
|
for (i = 0; i < d3d11->shader_preset->passes; source = &d3d11->pass[i++].rt)
|
||||||
{
|
{
|
||||||
{
|
unsigned j;
|
||||||
texture_map_t texture_map
|
texture_map_t texture_map
|
||||||
[3 + GFX_MAX_FRAME_HISTORY + 1 + GFX_MAX_SHADERS * 2 + GFX_MAX_TEXTURES + 1] = {
|
[3 + GFX_MAX_FRAME_HISTORY + 1 + GFX_MAX_SHADERS * 2 + GFX_MAX_TEXTURES + 1] = {
|
||||||
SL_TEXTURE_MAP(
|
SL_TEXTURE_MAP(
|
||||||
SLANG_TEXTURE_SEMANTIC_ORIGINAL, d3d11->frame.texture[0].view,
|
SLANG_TEXTURE_SEMANTIC_ORIGINAL, d3d11->frame.texture[0].view,
|
||||||
d3d11->pass[i].sampler, d3d11->frame.texture[0].size_data),
|
d3d11->pass[i].sampler, d3d11->frame.texture[0].size_data),
|
||||||
SL_TEXTURE_MAP(
|
SL_TEXTURE_MAP(
|
||||||
SLANG_TEXTURE_SEMANTIC_SOURCE, source->view, d3d11->pass[i].sampler,
|
SLANG_TEXTURE_SEMANTIC_SOURCE, source->view, d3d11->pass[i].sampler,
|
||||||
source->size_data),
|
source->size_data),
|
||||||
};
|
|
||||||
|
|
||||||
{
|
|
||||||
texture_map_t* ptr = texture_map;
|
|
||||||
while (ptr->texture_data)
|
|
||||||
ptr++;
|
|
||||||
|
|
||||||
for (int j = 0; j < GFX_MAX_FRAME_HISTORY + 1; j++)
|
|
||||||
{
|
|
||||||
*ptr = (texture_map_t)SL_TEXTURE_MAP_ARRAY(
|
|
||||||
SLANG_TEXTURE_SEMANTIC_ORIGINAL_HISTORY, j, d3d11->frame.texture[j].view,
|
|
||||||
d3d11->pass[i].sampler, d3d11->frame.texture[j].size_data);
|
|
||||||
ptr++;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int j = 0; j < i; j++)
|
|
||||||
{
|
|
||||||
*ptr = (texture_map_t)SL_TEXTURE_MAP_ARRAY(
|
|
||||||
SLANG_TEXTURE_SEMANTIC_PASS_OUTPUT, j, d3d11->pass[j].rt.view,
|
|
||||||
d3d11->pass[i].sampler, d3d11->pass[j].rt.size_data);
|
|
||||||
ptr++;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int j = 0; j < GFX_MAX_SHADERS; j++)
|
|
||||||
{
|
|
||||||
*ptr = (texture_map_t)SL_TEXTURE_MAP_ARRAY(
|
|
||||||
SLANG_TEXTURE_SEMANTIC_PASS_FEEDBACK, j, d3d11->pass[j].feedback.view,
|
|
||||||
d3d11->pass[i].sampler, d3d11->pass[j].rt.size_data);
|
|
||||||
ptr++;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int j = 0; j < d3d11->shader_preset->luts; j++)
|
|
||||||
{
|
|
||||||
*ptr = (texture_map_t)SL_TEXTURE_MAP_ARRAY(
|
|
||||||
SLANG_TEXTURE_SEMANTIC_USER, j, d3d11->luts[j].view, d3d11->luts[j].sampler,
|
|
||||||
d3d11->luts[j].size_data);
|
|
||||||
ptr++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform_map_t uniform_map[] = {
|
|
||||||
SL_UNIFORM_MAP(SLANG_SEMANTIC_MVP, d3d11->mvp),
|
|
||||||
SL_UNIFORM_MAP(SLANG_SEMANTIC_OUTPUT, d3d11->pass[i].rt.size_data),
|
|
||||||
SL_UNIFORM_MAP(SLANG_SEMANTIC_FRAME_COUNT, d3d11->pass[i].frame_count),
|
|
||||||
SL_UNIFORM_MAP(SLANG_SEMANTIC_FINAL_VIEWPORT, d3d11->frame.output_size),
|
|
||||||
{ 0 }
|
|
||||||
};
|
};
|
||||||
|
texture_map_t* ptr = texture_map;
|
||||||
|
|
||||||
semantics_map_t semantics_map = { texture_map, uniform_map };
|
while (ptr->texture_data)
|
||||||
|
ptr++;
|
||||||
|
|
||||||
if (!slang_process(
|
for (j = 0; j < GFX_MAX_FRAME_HISTORY + 1; j++)
|
||||||
d3d11->shader_preset, i, RARCH_SHADER_HLSL, 50, &semantics_map,
|
{
|
||||||
&d3d11->pass[i].semantics))
|
*ptr = (texture_map_t)SL_TEXTURE_MAP_ARRAY(
|
||||||
goto error;
|
SLANG_TEXTURE_SEMANTIC_ORIGINAL_HISTORY, j, d3d11->frame.texture[j].view,
|
||||||
|
d3d11->pass[i].sampler, d3d11->frame.texture[j].size_data);
|
||||||
|
ptr++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (j = 0; j < i; j++)
|
||||||
|
{
|
||||||
|
*ptr = (texture_map_t)SL_TEXTURE_MAP_ARRAY(
|
||||||
|
SLANG_TEXTURE_SEMANTIC_PASS_OUTPUT, j, d3d11->pass[j].rt.view,
|
||||||
|
d3d11->pass[i].sampler, d3d11->pass[j].rt.size_data);
|
||||||
|
ptr++;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j = 0; j < GFX_MAX_SHADERS; j++)
|
||||||
|
{
|
||||||
|
*ptr = (texture_map_t)SL_TEXTURE_MAP_ARRAY(
|
||||||
|
SLANG_TEXTURE_SEMANTIC_PASS_FEEDBACK, j, d3d11->pass[j].feedback.view,
|
||||||
|
d3d11->pass[i].sampler, d3d11->pass[j].rt.size_data);
|
||||||
|
ptr++;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j = 0; j < d3d11->shader_preset->luts; j++)
|
||||||
|
{
|
||||||
|
*ptr = (texture_map_t)SL_TEXTURE_MAP_ARRAY(
|
||||||
|
SLANG_TEXTURE_SEMANTIC_USER, j, d3d11->luts[j].view, d3d11->luts[j].sampler,
|
||||||
|
d3d11->luts[j].size_data);
|
||||||
|
ptr++;
|
||||||
|
}
|
||||||
|
|
||||||
|
uniform_map_t uniform_map[] = {
|
||||||
|
SL_UNIFORM_MAP(SLANG_SEMANTIC_MVP, d3d11->mvp),
|
||||||
|
SL_UNIFORM_MAP(SLANG_SEMANTIC_OUTPUT, d3d11->pass[i].rt.size_data),
|
||||||
|
SL_UNIFORM_MAP(SLANG_SEMANTIC_FRAME_COUNT, d3d11->pass[i].frame_count),
|
||||||
|
SL_UNIFORM_MAP(SLANG_SEMANTIC_FINAL_VIEWPORT, d3d11->frame.output_size),
|
||||||
|
{ 0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
semantics_map_t semantics_map = { texture_map, uniform_map };
|
||||||
|
|
||||||
|
if (!slang_process(
|
||||||
|
d3d11->shader_preset, i, RARCH_SHADER_HLSL, 50, &semantics_map,
|
||||||
|
&d3d11->pass[i].semantics))
|
||||||
|
goto error;
|
||||||
|
|
||||||
{
|
{
|
||||||
static const D3D11_INPUT_ELEMENT_DESC desc[] = {
|
static const D3D11_INPUT_ELEMENT_DESC desc[] = {
|
||||||
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, offsetof(d3d11_vertex_t, position),
|
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, offsetof(d3d11_vertex_t, position),
|
||||||
D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||||
{ "TEXCOORD", 1, DXGI_FORMAT_R32G32_FLOAT, 0, offsetof(d3d11_vertex_t, texcoord),
|
{ "TEXCOORD", 1, DXGI_FORMAT_R32G32_FLOAT, 0, offsetof(d3d11_vertex_t, texcoord),
|
||||||
D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||||
};
|
};
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
bool save_hlsl = true;
|
bool save_hlsl = true;
|
||||||
@ -262,13 +264,13 @@ static bool d3d11_gfx_set_shader(void* data, enum rarch_shader_type type, const
|
|||||||
strncpy(ps_path + base_len, ps_ext, sizeof(ps_ext));
|
strncpy(ps_path + base_len, ps_ext, sizeof(ps_ext));
|
||||||
|
|
||||||
if (!d3d11_init_shader(
|
if (!d3d11_init_shader(
|
||||||
d3d11->device, vs_src, 0, vs_path, "main", NULL, NULL, desc, countof(desc),
|
d3d11->device, vs_src, 0, vs_path, "main", NULL, NULL, desc, countof(desc),
|
||||||
&d3d11->pass[i].shader))
|
&d3d11->pass[i].shader))
|
||||||
save_hlsl = true;
|
save_hlsl = true;
|
||||||
|
|
||||||
if (!d3d11_init_shader(
|
if (!d3d11_init_shader(
|
||||||
d3d11->device, ps_src, 0, ps_path, NULL, "main", NULL, NULL, 0,
|
d3d11->device, ps_src, 0, ps_path, NULL, "main", NULL, NULL, 0,
|
||||||
&d3d11->pass[i].shader))
|
&d3d11->pass[i].shader))
|
||||||
save_hlsl = true;
|
save_hlsl = true;
|
||||||
|
|
||||||
if (save_hlsl)
|
if (save_hlsl)
|
||||||
@ -292,7 +294,7 @@ static bool d3d11_gfx_set_shader(void* data, enum rarch_shader_type type, const
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int j = 0; j < SLANG_CBUFFER_MAX; j++)
|
for (j = 0; j < SLANG_CBUFFER_MAX; j++)
|
||||||
{
|
{
|
||||||
D3D11_BUFFER_DESC desc = {
|
D3D11_BUFFER_DESC desc = {
|
||||||
.ByteWidth = d3d11->pass[i].semantics.cbuffers[j].size,
|
.ByteWidth = d3d11->pass[i].semantics.cbuffers[j].size,
|
||||||
@ -308,7 +310,7 @@ static bool d3d11_gfx_set_shader(void* data, enum rarch_shader_type type, const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < d3d11->shader_preset->luts; i++)
|
for (i = 0; i < d3d11->shader_preset->luts; i++)
|
||||||
{
|
{
|
||||||
struct texture_image image = { 0 };
|
struct texture_image image = { 0 };
|
||||||
image.supports_rgba = true;
|
image.supports_rgba = true;
|
||||||
@ -350,6 +352,7 @@ error:
|
|||||||
|
|
||||||
static void d3d11_gfx_free(void* data)
|
static void d3d11_gfx_free(void* data)
|
||||||
{
|
{
|
||||||
|
unsigned i;
|
||||||
d3d11_video_t* d3d11 = (d3d11_video_t*)data;
|
d3d11_video_t* d3d11 = (d3d11_video_t*)data;
|
||||||
|
|
||||||
if (!d3d11)
|
if (!d3d11)
|
||||||
@ -384,7 +387,7 @@ static void d3d11_gfx_free(void* data)
|
|||||||
Release(d3d11->blend_enable);
|
Release(d3d11->blend_enable);
|
||||||
Release(d3d11->blend_disable);
|
Release(d3d11->blend_disable);
|
||||||
|
|
||||||
for (int i = 0; i < RARCH_WRAP_MAX; i++)
|
for (i = 0; i < RARCH_WRAP_MAX; i++)
|
||||||
{
|
{
|
||||||
Release(d3d11->samplers[RARCH_FILTER_LINEAR][i]);
|
Release(d3d11->samplers[RARCH_FILTER_LINEAR][i]);
|
||||||
Release(d3d11->samplers[RARCH_FILTER_NEAREST][i]);
|
Release(d3d11->samplers[RARCH_FILTER_NEAREST][i]);
|
||||||
@ -407,6 +410,7 @@ static void d3d11_gfx_free(void* data)
|
|||||||
static void*
|
static void*
|
||||||
d3d11_gfx_init(const video_info_t* video, const input_driver_t** input, void** input_data)
|
d3d11_gfx_init(const video_info_t* video, const input_driver_t** input, void** input_data)
|
||||||
{
|
{
|
||||||
|
unsigned i;
|
||||||
WNDCLASSEX wndclass = { 0 };
|
WNDCLASSEX wndclass = { 0 };
|
||||||
MONITORINFOEX current_mon;
|
MONITORINFOEX current_mon;
|
||||||
HMONITOR hm_to_use;
|
HMONITOR hm_to_use;
|
||||||
@ -521,7 +525,7 @@ d3d11_gfx_init(const video_info_t* video, const input_driver_t** input, void** i
|
|||||||
.MaxLOD = D3D11_FLOAT32_MAX,
|
.MaxLOD = D3D11_FLOAT32_MAX,
|
||||||
};
|
};
|
||||||
/* Initialize samplers */
|
/* Initialize samplers */
|
||||||
for (int i = 0; i < RARCH_WRAP_MAX; i++)
|
for (i = 0; i < RARCH_WRAP_MAX; i++)
|
||||||
{
|
{
|
||||||
switch (i)
|
switch (i)
|
||||||
{
|
{
|
||||||
@ -749,12 +753,14 @@ error:
|
|||||||
|
|
||||||
static void d3d11_init_history(d3d11_video_t* d3d11, unsigned width, unsigned height)
|
static void d3d11_init_history(d3d11_video_t* d3d11, unsigned width, unsigned height)
|
||||||
{
|
{
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
/* todo: should we init history to max_width/max_height instead ?
|
/* todo: should we init history to max_width/max_height instead ?
|
||||||
* to prevent out of memory errors happening several frames later
|
* to prevent out of memory errors happening several frames later
|
||||||
* and to reduce memory fragmentation */
|
* and to reduce memory fragmentation */
|
||||||
|
|
||||||
assert(d3d11->shader_preset);
|
assert(d3d11->shader_preset);
|
||||||
for (int i = 0; i < d3d11->shader_preset->history_size + 1; i++)
|
for (i = 0; i < d3d11->shader_preset->history_size + 1; i++)
|
||||||
{
|
{
|
||||||
d3d11->frame.texture[i].desc.Width = width;
|
d3d11->frame.texture[i].desc.Width = width;
|
||||||
d3d11->frame.texture[i].desc.Height = height;
|
d3d11->frame.texture[i].desc.Height = height;
|
||||||
@ -767,9 +773,11 @@ static void d3d11_init_history(d3d11_video_t* d3d11, unsigned width, unsigned he
|
|||||||
}
|
}
|
||||||
static void d3d11_init_render_targets(d3d11_video_t* d3d11, unsigned width, unsigned height)
|
static void d3d11_init_render_targets(d3d11_video_t* d3d11, unsigned width, unsigned height)
|
||||||
{
|
{
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
assert(d3d11->shader_preset);
|
assert(d3d11->shader_preset);
|
||||||
|
|
||||||
for (int i = 0; i < d3d11->shader_preset->passes; i++)
|
for (i = 0; i < d3d11->shader_preset->passes; i++)
|
||||||
{
|
{
|
||||||
struct video_shader_pass* pass = &d3d11->shader_preset->pass[i];
|
struct video_shader_pass* pass = &d3d11->shader_preset->pass[i];
|
||||||
|
|
||||||
@ -875,6 +883,8 @@ static bool d3d11_gfx_frame(
|
|||||||
const char* msg,
|
const char* msg,
|
||||||
video_frame_info_t* video_info)
|
video_frame_info_t* video_info)
|
||||||
{
|
{
|
||||||
|
unsigned i;
|
||||||
|
d3d11_texture_t* texture = NULL;
|
||||||
d3d11_video_t* d3d11 = (d3d11_video_t*)data;
|
d3d11_video_t* d3d11 = (d3d11_video_t*)data;
|
||||||
D3D11DeviceContext context = d3d11->context;
|
D3D11DeviceContext context = d3d11->context;
|
||||||
|
|
||||||
@ -923,7 +933,7 @@ static bool d3d11_gfx_frame(
|
|||||||
if (d3d11->resize_render_targets)
|
if (d3d11->resize_render_targets)
|
||||||
{
|
{
|
||||||
/* release all render targets first to avoid memory fragmentation */
|
/* release all render targets first to avoid memory fragmentation */
|
||||||
for (int i = 0; i < d3d11->shader_preset->passes; i++)
|
for (i = 0; i < d3d11->shader_preset->passes; i++)
|
||||||
d3d11_release_texture(&d3d11->pass[i].rt);
|
d3d11_release_texture(&d3d11->pass[i].rt);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -933,11 +943,12 @@ static bool d3d11_gfx_frame(
|
|||||||
d3d11_init_history(d3d11, width, height);
|
d3d11_init_history(d3d11, width, height);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
int k;
|
||||||
/* todo: what about frame-duping ?
|
/* todo: what about frame-duping ?
|
||||||
* maybe clone d3d11_texture_t with AddRef */
|
* maybe clone d3d11_texture_t with AddRef */
|
||||||
d3d11_texture_t tmp = d3d11->frame.texture[d3d11->shader_preset->history_size];
|
d3d11_texture_t tmp = d3d11->frame.texture[d3d11->shader_preset->history_size];
|
||||||
for (int i = d3d11->shader_preset->history_size; i > 0; i--)
|
for (k = d3d11->shader_preset->history_size; k > 0; k--)
|
||||||
d3d11->frame.texture[i] = d3d11->frame.texture[i - 1];
|
d3d11->frame.texture[k] = d3d11->frame.texture[k - 1];
|
||||||
d3d11->frame.texture[0] = tmp;
|
d3d11->frame.texture[0] = tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -962,11 +973,11 @@ static bool d3d11_gfx_frame(
|
|||||||
D3D11SetVertexBuffer(context, 0, d3d11->frame.vbo, sizeof(d3d11_vertex_t), 0);
|
D3D11SetVertexBuffer(context, 0, d3d11->frame.vbo, sizeof(d3d11_vertex_t), 0);
|
||||||
D3D11SetBlendState(context, d3d11->blend_disable, NULL, D3D11_DEFAULT_SAMPLE_MASK);
|
D3D11SetBlendState(context, d3d11->blend_disable, NULL, D3D11_DEFAULT_SAMPLE_MASK);
|
||||||
|
|
||||||
d3d11_texture_t* texture = d3d11->frame.texture;
|
texture = d3d11->frame.texture;
|
||||||
|
|
||||||
if (d3d11->shader_preset)
|
if (d3d11->shader_preset)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < d3d11->shader_preset->passes; i++)
|
for (i = 0; i < d3d11->shader_preset->passes; i++)
|
||||||
{
|
{
|
||||||
if (d3d11->shader_preset->pass[i].feedback)
|
if (d3d11->shader_preset->pass[i].feedback)
|
||||||
{
|
{
|
||||||
@ -976,8 +987,10 @@ static bool d3d11_gfx_frame(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < d3d11->shader_preset->passes; i++)
|
for (i = 0; i < d3d11->shader_preset->passes; i++)
|
||||||
{
|
{
|
||||||
|
unsigned j;
|
||||||
|
|
||||||
d3d11_set_shader(context, &d3d11->pass[i].shader);
|
d3d11_set_shader(context, &d3d11->pass[i].shader);
|
||||||
|
|
||||||
if (d3d11->shader_preset->pass[i].frame_count_mod)
|
if (d3d11->shader_preset->pass[i].frame_count_mod)
|
||||||
@ -986,7 +999,7 @@ static bool d3d11_gfx_frame(
|
|||||||
else
|
else
|
||||||
d3d11->pass[i].frame_count = frame_count;
|
d3d11->pass[i].frame_count = frame_count;
|
||||||
|
|
||||||
for (int j = 0; j < SLANG_CBUFFER_MAX; j++)
|
for (j = 0; j < SLANG_CBUFFER_MAX; j++)
|
||||||
{
|
{
|
||||||
D3D11Buffer buffer = d3d11->pass[i].buffers[j];
|
D3D11Buffer buffer = d3d11->pass[i].buffers[j];
|
||||||
cbuffer_sem_t* buffer_sem = &d3d11->pass[i].semantics.cbuffers[j];
|
cbuffer_sem_t* buffer_sem = &d3d11->pass[i].semantics.cbuffers[j];
|
||||||
@ -1244,7 +1257,10 @@ static uintptr_t d3d11_gfx_load_texture(
|
|||||||
if (!d3d11)
|
if (!d3d11)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
texture = (d3d11_texture_t*)calloc(1, sizeof(*texture));
|
texture = (d3d11_texture_t*)calloc(1, sizeof(*texture));
|
||||||
|
|
||||||
|
if (!texture)
|
||||||
|
return 0;
|
||||||
|
|
||||||
switch (filter_type)
|
switch (filter_type)
|
||||||
{
|
{
|
||||||
|
@ -80,9 +80,12 @@ static void menu_display_d3d11_draw(void* data)
|
|||||||
|
|
||||||
{
|
{
|
||||||
D3D11_MAPPED_SUBRESOURCE mapped_vbo;
|
D3D11_MAPPED_SUBRESOURCE mapped_vbo;
|
||||||
|
d3d11_sprite_t *v = NULL;
|
||||||
|
|
||||||
D3D11MapBuffer(
|
D3D11MapBuffer(
|
||||||
d3d11->context, d3d11->sprites.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo);
|
d3d11->context, d3d11->sprites.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo);
|
||||||
d3d11_sprite_t* v = (d3d11_sprite_t*)mapped_vbo.pData + d3d11->sprites.offset;
|
|
||||||
|
v = (d3d11_sprite_t*)mapped_vbo.pData + d3d11->sprites.offset;
|
||||||
|
|
||||||
v->pos.x = draw->x / (float)d3d11->viewport.Width;
|
v->pos.x = draw->x / (float)d3d11->viewport.Width;
|
||||||
v->pos.y = (d3d11->viewport.Height - draw->y - draw->height) / (float)d3d11->viewport.Height;
|
v->pos.y = (d3d11->viewport.Height - draw->y - draw->height) / (float)d3d11->viewport.Height;
|
||||||
@ -128,8 +131,6 @@ static void menu_display_d3d11_draw_pipeline(void* data)
|
|||||||
menu_display_ctx_draw_t* draw = (menu_display_ctx_draw_t*)data;
|
menu_display_ctx_draw_t* draw = (menu_display_ctx_draw_t*)data;
|
||||||
d3d11_video_t* d3d11 = (d3d11_video_t*)video_driver_get_ptr(false);
|
d3d11_video_t* d3d11 = (d3d11_video_t*)video_driver_get_ptr(false);
|
||||||
|
|
||||||
video_coord_array_t* ca = NULL;
|
|
||||||
|
|
||||||
if (!d3d11 || !draw)
|
if (!d3d11 || !draw)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -138,7 +139,7 @@ static void menu_display_d3d11_draw_pipeline(void* data)
|
|||||||
case VIDEO_SHADER_MENU:
|
case VIDEO_SHADER_MENU:
|
||||||
case VIDEO_SHADER_MENU_2:
|
case VIDEO_SHADER_MENU_2:
|
||||||
{
|
{
|
||||||
ca = menu_display_get_coords_array();
|
video_coord_array_t *ca = menu_display_get_coords_array();
|
||||||
|
|
||||||
if (!d3d11->menu_pipeline_vbo)
|
if (!d3d11->menu_pipeline_vbo)
|
||||||
{
|
{
|
||||||
@ -170,6 +171,7 @@ static void menu_display_d3d11_draw_pipeline(void* data)
|
|||||||
D3D11SetPrimitiveTopology(d3d11->context, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
|
D3D11SetPrimitiveTopology(d3d11->context, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
|
||||||
|
|
||||||
d3d11->ubo_values.time += 0.01f;
|
d3d11->ubo_values.time += 0.01f;
|
||||||
|
|
||||||
{
|
{
|
||||||
D3D11_MAPPED_SUBRESOURCE mapped_ubo;
|
D3D11_MAPPED_SUBRESOURCE mapped_ubo;
|
||||||
D3D11MapBuffer(d3d11->context, d3d11->ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
|
D3D11MapBuffer(d3d11->context, d3d11->ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user