mirror of
https://github.com/libretro/RetroArch
synced 2025-03-03 04:14:00 +00:00
Dehardcode LPDIRECT3DDEVICE usage
This commit is contained in:
parent
4dc6eb0ae4
commit
bc81a9dc88
File diff suppressed because it is too large
Load Diff
@ -30,9 +30,9 @@ typedef struct d3d_texture
|
||||
D3DPOOL pool;
|
||||
} d3d_texture_t;
|
||||
|
||||
bool d3d_swap(void *data, LPDIRECT3DDEVICE dev);
|
||||
bool d3d_swap(void *data, void *dev);
|
||||
|
||||
LPDIRECT3DVERTEXBUFFER d3d_vertex_buffer_new(LPDIRECT3DDEVICE dev,
|
||||
LPDIRECT3DVERTEXBUFFER d3d_vertex_buffer_new(void *dev,
|
||||
unsigned length, unsigned usage, unsigned fvf,
|
||||
D3DPOOL pool, void *handle);
|
||||
|
||||
@ -47,45 +47,45 @@ bool d3d_texture_get_level_desc(LPDIRECT3DTEXTURE tex,
|
||||
bool d3d_texture_get_surface_level(LPDIRECT3DTEXTURE tex,
|
||||
unsigned idx, void **_ppsurface_level);
|
||||
|
||||
LPDIRECT3DTEXTURE d3d_texture_new(LPDIRECT3DDEVICE dev,
|
||||
LPDIRECT3DTEXTURE d3d_texture_new(void *dev,
|
||||
const char *path, unsigned width, unsigned height,
|
||||
unsigned miplevels, unsigned usage, D3DFORMAT format,
|
||||
D3DPOOL pool, unsigned filter, unsigned mipfilter,
|
||||
D3DCOLOR color_key, void *src_info,
|
||||
PALETTEENTRY *palette, bool want_mipmap);
|
||||
|
||||
void d3d_set_stream_source(LPDIRECT3DDEVICE dev, unsigned stream_no,
|
||||
void d3d_set_stream_source(void *dev, unsigned stream_no,
|
||||
void *stream_vertbuf, unsigned offset_bytes,
|
||||
unsigned stride);
|
||||
|
||||
void d3d_texture_free(LPDIRECT3DTEXTURE tex);
|
||||
|
||||
void d3d_set_transform(LPDIRECT3DDEVICE dev,
|
||||
void d3d_set_transform(void *dev,
|
||||
D3DTRANSFORMSTATETYPE state, CONST D3DMATRIX *matrix);
|
||||
|
||||
void d3d_set_sampler_address_u(LPDIRECT3DDEVICE dev,
|
||||
void d3d_set_sampler_address_u(void *dev,
|
||||
unsigned sampler, unsigned value);
|
||||
|
||||
void d3d_set_sampler_address_v(LPDIRECT3DDEVICE dev,
|
||||
void d3d_set_sampler_address_v(void *dev,
|
||||
unsigned sampler, unsigned value);
|
||||
|
||||
void d3d_set_sampler_minfilter(LPDIRECT3DDEVICE dev,
|
||||
void d3d_set_sampler_minfilter(void *dev,
|
||||
unsigned sampler, unsigned value);
|
||||
|
||||
void d3d_set_sampler_magfilter(LPDIRECT3DDEVICE dev,
|
||||
void d3d_set_sampler_magfilter(void *dev,
|
||||
unsigned sampler, unsigned value);
|
||||
|
||||
void d3d_set_sampler_mipfilter(LPDIRECT3DDEVICE dev,
|
||||
void d3d_set_sampler_mipfilter(void *dev,
|
||||
unsigned sampler, unsigned value);
|
||||
|
||||
bool d3d_begin_scene(LPDIRECT3DDEVICE dev);
|
||||
bool d3d_begin_scene(void *dev);
|
||||
|
||||
void d3d_end_scene(LPDIRECT3DDEVICE dev);
|
||||
void d3d_end_scene(void *dev);
|
||||
|
||||
void d3d_draw_primitive(LPDIRECT3DDEVICE dev,
|
||||
void d3d_draw_primitive(void *dev,
|
||||
D3DPRIMITIVETYPE type, unsigned start, unsigned count);
|
||||
|
||||
void d3d_clear(LPDIRECT3DDEVICE dev,
|
||||
void d3d_clear(void *dev,
|
||||
unsigned count, const D3DRECT *rects, unsigned flags,
|
||||
D3DCOLOR color, float z, unsigned stencil);
|
||||
|
||||
@ -99,25 +99,25 @@ void d3d_lock_rectangle_clear(LPDIRECT3DTEXTURE tex,
|
||||
|
||||
void d3d_unlock_rectangle(LPDIRECT3DTEXTURE tex);
|
||||
|
||||
void d3d_set_texture(LPDIRECT3DDEVICE dev, unsigned sampler,
|
||||
void d3d_set_texture(void *dev, unsigned sampler,
|
||||
void *tex_data);
|
||||
|
||||
bool d3d_create_vertex_shader(LPDIRECT3DDEVICE dev,
|
||||
bool d3d_create_vertex_shader(void *dev,
|
||||
const DWORD *a, void **b);
|
||||
|
||||
bool d3d_create_pixel_shader(LPDIRECT3DDEVICE dev,
|
||||
bool d3d_create_pixel_shader(void *dev,
|
||||
const DWORD *a, void **b);
|
||||
|
||||
void d3d_free_pixel_shader(LPDIRECT3DDEVICE dev, void *data);
|
||||
void d3d_free_pixel_shader(void *dev, void *data);
|
||||
|
||||
void d3d_free_vertex_shader(LPDIRECT3DDEVICE dev, void *data);
|
||||
void d3d_free_vertex_shader(void *dev, void *data);
|
||||
|
||||
bool d3d_set_pixel_shader(LPDIRECT3DDEVICE dev, void *data);
|
||||
bool d3d_set_pixel_shader(void *dev, void *data);
|
||||
|
||||
bool d3d_set_vertex_shader(LPDIRECT3DDEVICE dev, unsigned index,
|
||||
bool d3d_set_vertex_shader(void *dev, unsigned index,
|
||||
void *data);
|
||||
|
||||
bool d3d_set_vertex_shader_constantf(LPDIRECT3DDEVICE dev,
|
||||
bool d3d_set_vertex_shader_constantf(void *dev,
|
||||
UINT start_register,const float* constant_data, unsigned vector4f_count);
|
||||
|
||||
void d3d_texture_blit(unsigned pixel_size,
|
||||
@ -125,12 +125,12 @@ void d3d_texture_blit(unsigned pixel_size,
|
||||
D3DLOCKED_RECT *lr, const void *frame,
|
||||
unsigned width, unsigned height, unsigned pitch);
|
||||
|
||||
bool d3d_vertex_declaration_new(LPDIRECT3DDEVICE dev,
|
||||
bool d3d_vertex_declaration_new(void *dev,
|
||||
const void *vertex_data, void **decl_data);
|
||||
|
||||
void d3d_vertex_declaration_free(void *data);
|
||||
|
||||
void d3d_set_viewports(LPDIRECT3DDEVICE dev, D3DVIEWPORT *vp);
|
||||
void d3d_set_viewports(void *dev, D3DVIEWPORT *vp);
|
||||
|
||||
void d3d_enable_blend_func(void *data);
|
||||
|
||||
@ -144,13 +144,13 @@ void d3d_frame_postprocess(void *data);
|
||||
|
||||
void d3d_surface_free(void *data);
|
||||
|
||||
bool d3d_device_get_render_target_data(LPDIRECT3DDEVICE dev,
|
||||
bool d3d_device_get_render_target_data(void *dev,
|
||||
void *_src, void *_dst);
|
||||
|
||||
bool d3d_device_get_render_target(LPDIRECT3DDEVICE dev,
|
||||
bool d3d_device_get_render_target(void *dev,
|
||||
unsigned idx, void **data);
|
||||
|
||||
void d3d_device_set_render_target(LPDIRECT3DDEVICE dev, unsigned idx,
|
||||
void d3d_device_set_render_target(void *dev, unsigned idx,
|
||||
void *data);
|
||||
|
||||
bool d3d_get_render_state(void *data,
|
||||
@ -159,11 +159,11 @@ bool d3d_get_render_state(void *data,
|
||||
void d3d_set_render_state(void *data,
|
||||
D3DRENDERSTATETYPE state, DWORD value);
|
||||
|
||||
void d3d_device_set_render_target(LPDIRECT3DDEVICE dev, unsigned idx,
|
||||
void d3d_device_set_render_target(void *dev, unsigned idx,
|
||||
void *data);
|
||||
|
||||
bool d3d_device_create_offscreen_plain_surface(
|
||||
LPDIRECT3DDEVICE dev,
|
||||
void *dev,
|
||||
unsigned width,
|
||||
unsigned height,
|
||||
unsigned format,
|
||||
@ -191,19 +191,19 @@ bool d3d_get_adapter_display_mode(LPDIRECT3D d3d,
|
||||
unsigned idx,
|
||||
D3DDISPLAYMODE *display_mode);
|
||||
|
||||
bool d3d_create_device(LPDIRECT3DDEVICE *dev,
|
||||
bool d3d_create_device(void *dev,
|
||||
D3DPRESENT_PARAMETERS *d3dpp,
|
||||
LPDIRECT3D d3d,
|
||||
HWND focus_window,
|
||||
unsigned cur_mon_id);
|
||||
|
||||
bool d3d_reset(LPDIRECT3DDEVICE dev, D3DPRESENT_PARAMETERS *d3dpp);
|
||||
bool d3d_reset(void *dev, D3DPRESENT_PARAMETERS *d3dpp);
|
||||
|
||||
bool d3d_device_get_backbuffer(LPDIRECT3DDEVICE dev,
|
||||
bool d3d_device_get_backbuffer(void *dev,
|
||||
unsigned idx, unsigned swapchain_idx,
|
||||
unsigned backbuffer_type, void **data);
|
||||
|
||||
void d3d_device_free(LPDIRECT3DDEVICE dev, LPDIRECT3D pd3d);
|
||||
void d3d_device_free(void *dev, LPDIRECT3D pd3d);
|
||||
|
||||
void *d3d_create(void);
|
||||
|
||||
@ -217,7 +217,7 @@ bool d3d_check_device_type(LPDIRECT3D d3d,
|
||||
D3DFORMAT backbuffer_format,
|
||||
bool windowed_mode);
|
||||
|
||||
bool d3dx_create_font_indirect(LPDIRECT3DDEVICE dev,
|
||||
bool d3dx_create_font_indirect(void *dev,
|
||||
void *desc, void **font_data);
|
||||
|
||||
void d3dxbuffer_release(void *data);
|
||||
|
@ -92,7 +92,7 @@ typedef struct d3d_video
|
||||
struct video_shader shader;
|
||||
video_info_t video_info;
|
||||
WNDCLASSEX windowClass;
|
||||
LPDIRECT3DDEVICE dev;
|
||||
void *dev;
|
||||
D3DVIEWPORT final_viewport;
|
||||
|
||||
char *shader_path;
|
||||
|
@ -60,7 +60,7 @@ static LPDIRECT3D g_pD3D8;
|
||||
typedef struct d3d8_renderchain
|
||||
{
|
||||
unsigned pixel_size;
|
||||
LPDIRECT3DDEVICE dev;
|
||||
LPDIRECT3DDEVICE8 dev;
|
||||
const video_info_t *video_info;
|
||||
LPDIRECT3DTEXTURE tex;
|
||||
LPDIRECT3DVERTEXBUFFER vertex_buf;
|
||||
@ -96,7 +96,7 @@ static bool d3d8_renderchain_create_first_pass(void *data,
|
||||
const video_info_t *info)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
||||
LPDIRECT3DDEVICE8 d3dr = (LPDIRECT3DDEVICE8)d3d->dev;
|
||||
d3d8_renderchain_t *chain = (d3d8_renderchain_t*)d3d->renderchain_data;
|
||||
|
||||
chain->vertex_buf = d3d_vertex_buffer_new(d3dr, 4 * sizeof(Vertex),
|
||||
@ -198,7 +198,7 @@ static void d3d8_renderchain_blit_to_texture(void *data, const void *frame,
|
||||
{
|
||||
D3DLOCKED_RECT d3dlr;
|
||||
d3d8_renderchain_t *chain = (d3d8_renderchain_t*)data;
|
||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)chain->dev;
|
||||
LPDIRECT3DDEVICE8 d3dr = (LPDIRECT3DDEVICE8)chain->dev;
|
||||
|
||||
d3d_frame_postprocess(chain);
|
||||
|
||||
@ -256,7 +256,7 @@ static void d3d8_renderchain_viewport_info(void *data,
|
||||
}
|
||||
|
||||
static void d3d8_renderchain_render_pass(
|
||||
d3d_video_t *d3d, LPDIRECT3DDEVICE d3dr,
|
||||
d3d_video_t *d3d, LPDIRECT3DDEVICE8 d3dr,
|
||||
d3d8_renderchain_t *chain,
|
||||
unsigned pass_index,
|
||||
unsigned rotation)
|
||||
@ -281,7 +281,7 @@ static bool d3d8_renderchain_render(void *data, const void *frame,
|
||||
unsigned pitch, unsigned rotation)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
||||
LPDIRECT3DDEVICE8 d3dr = (LPDIRECT3DDEVICE8)d3d->dev;
|
||||
d3d8_renderchain_t *chain = (d3d8_renderchain_t*)d3d->renderchain_data;
|
||||
|
||||
d3d8_renderchain_blit_to_texture(chain, frame, frame_width, frame_height, pitch);
|
||||
@ -304,7 +304,7 @@ static bool d3d8_renderchain_init(void *data,
|
||||
{
|
||||
unsigned width, height;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
||||
LPDIRECT3DDEVICE8 d3dr = (LPDIRECT3DDEVICE8)d3d->dev;
|
||||
const video_info_t *video_info = (const video_info_t*)_video_info;
|
||||
const struct LinkInfo *link_info = (const struct LinkInfo*)info_data;
|
||||
d3d8_renderchain_t *chain = (d3d8_renderchain_t*)d3d->renderchain_data;
|
||||
@ -314,7 +314,7 @@ static bool d3d8_renderchain_init(void *data,
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
chain->dev = (LPDIRECT3DDEVICE)dev_data;
|
||||
chain->dev = (LPDIRECT3DDEVICE8)dev_data;
|
||||
chain->pixel_size = (fmt == RETRO_PIXEL_FORMAT_RGB565) ? 2 : 4;
|
||||
chain->tex_w = link_info->tex_w;
|
||||
chain->tex_h = link_info->tex_h;
|
||||
|
@ -81,9 +81,8 @@ static bool gfx_ctx_d3d_set_resize(void *data, unsigned new_width, unsigned new_
|
||||
static void gfx_ctx_d3d_swap_buffers(void *data, void *data2)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
||||
|
||||
d3d_swap(d3d, d3dr);
|
||||
if (d3d)
|
||||
d3d_swap(d3d, d3d->dev);
|
||||
}
|
||||
|
||||
static void gfx_ctx_d3d_update_title(void *data, void *data2)
|
||||
|
@ -426,7 +426,7 @@ typedef struct
|
||||
|
||||
static PackedResource m_xprResource;
|
||||
|
||||
static bool xdk360_video_font_create_shaders(xdk360_video_font_t * font, LPDIRECT3DDEVICE d3dr)
|
||||
static bool xdk360_video_font_create_shaders(xdk360_video_font_t * font, void *dev)
|
||||
{
|
||||
ID3DXBuffer* pShaderCode = NULL;
|
||||
|
||||
@ -446,14 +446,14 @@ static bool xdk360_video_font_create_shaders(xdk360_video_font_t * font, LPDIREC
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!d3d_vertex_declaration_new(d3dr,decl, (void**)&font->s_FontLocals.m_pFontVertexDecl))
|
||||
if (!d3d_vertex_declaration_new(dev, decl, (void**)&font->s_FontLocals.m_pFontVertexDecl))
|
||||
goto error;
|
||||
|
||||
if (!d3dx_compile_shader( font_hlsl_d3d9_program, sizeof(font_hlsl_d3d9_program)-1 ,
|
||||
NULL, NULL, "main_vertex", "vs.2.0", 0, &pShaderCode, NULL, NULL ))
|
||||
goto error;
|
||||
|
||||
if (!d3d_create_vertex_shader(d3dr, (const DWORD*)pShaderCode->GetBufferPointer(),
|
||||
if (!d3d_create_vertex_shader(dev, (const DWORD*)pShaderCode->GetBufferPointer(),
|
||||
(void**)&font->s_FontLocals.m_pFontVertexShader ))
|
||||
goto error;
|
||||
|
||||
@ -463,7 +463,7 @@ static bool xdk360_video_font_create_shaders(xdk360_video_font_t * font, LPDIREC
|
||||
NULL, NULL, "main_fragment", "ps.2.0", 0,&pShaderCode, NULL, NULL ))
|
||||
goto error;
|
||||
|
||||
if (!d3d_create_pixel_shader(d3dr, (DWORD*)pShaderCode->GetBufferPointer(),
|
||||
if (!d3d_create_pixel_shader(dev, (DWORD*)pShaderCode->GetBufferPointer(),
|
||||
(void**)&font->s_FontLocals.m_pFontPixelShader))
|
||||
goto error;
|
||||
|
||||
@ -589,23 +589,26 @@ static void xdk360_free_font(void *data, bool is_threaded)
|
||||
|
||||
static void xdk360_render_msg_post(xdk360_video_font_t * font)
|
||||
{
|
||||
LPDIRECT3DDEVICE d3dr = font->d3d->dev;
|
||||
if (!font || !font->d3d || !font->d3d->dev)
|
||||
return;
|
||||
|
||||
d3d_set_texture(d3dr, 0, NULL);
|
||||
d3d_set_vertex_declaration(d3dr, NULL);
|
||||
d3d_set_vertex_shader(d3dr, 0, NULL);
|
||||
d3d_set_pixel_shader(d3dr, NULL);
|
||||
d3d_set_render_state(d3dr, D3DRS_VIEWPORTENABLE, font->m_dwSavedState);
|
||||
d3d_set_texture(font->d3d->dev, 0, NULL);
|
||||
d3d_set_vertex_declaration(font->d3d->dev, NULL);
|
||||
d3d_set_vertex_shader(font->d3d->dev, 0, NULL);
|
||||
d3d_set_pixel_shader(font->d3d->dev, NULL);
|
||||
d3d_set_render_state(font->d3d->dev, D3DRS_VIEWPORTENABLE, font->m_dwSavedState);
|
||||
}
|
||||
|
||||
static void xdk360_render_msg_pre(xdk360_video_font_t * font)
|
||||
{
|
||||
float vTexScale[4];
|
||||
D3DSURFACE_DESC TextureDesc;
|
||||
LPDIRECT3DDEVICE d3dr = font->d3d->dev;
|
||||
|
||||
if (!font || !font->d3d || !font->d3d->dev)
|
||||
return;
|
||||
|
||||
/* Save state. */
|
||||
d3d_get_render_state(d3dr, D3DRS_VIEWPORTENABLE,
|
||||
d3d_get_render_state(font->d3d->dev, D3DRS_VIEWPORTENABLE,
|
||||
(DWORD*)&font->m_dwSavedState );
|
||||
|
||||
/* Set the texture scaling factor as a vertex shader constant. */
|
||||
@ -613,18 +616,18 @@ static void xdk360_render_msg_pre(xdk360_video_font_t * font)
|
||||
d3d_texture_get_level_desc(font->m_pFontTexture, 0, &TextureDesc);
|
||||
|
||||
/* Set render state. */
|
||||
d3d_set_texture(d3dr, 0, font->m_pFontTexture);
|
||||
d3d_set_texture(font->d3d->dev, 0, font->m_pFontTexture);
|
||||
|
||||
vTexScale[0] = 1.0f / TextureDesc.Width;
|
||||
vTexScale[1] = 1.0f / TextureDesc.Height;
|
||||
vTexScale[2] = 0.0f;
|
||||
vTexScale[3] = 0.0f;
|
||||
|
||||
d3d_set_render_state(d3dr, D3DRS_VIEWPORTENABLE, FALSE);
|
||||
d3d_set_vertex_declaration(d3dr, font->s_FontLocals.m_pFontVertexDecl);
|
||||
d3d_set_vertex_shader(d3dr, 0, font->s_FontLocals.m_pFontVertexShader);
|
||||
d3d_set_pixel_shader(d3dr, font->s_FontLocals.m_pFontPixelShader);
|
||||
d3d_set_vertex_shader_constantf(d3dr, 2, vTexScale, 1);
|
||||
d3d_set_render_state(font->d3d->dev, D3DRS_VIEWPORTENABLE, FALSE);
|
||||
d3d_set_vertex_declaration(font->d3d->dev, font->s_FontLocals.m_pFontVertexDecl);
|
||||
d3d_set_vertex_shader(font->d3d->dev, 0, font->s_FontLocals.m_pFontVertexShader);
|
||||
d3d_set_pixel_shader(font->d3d->dev, font->s_FontLocals.m_pFontPixelShader);
|
||||
d3d_set_vertex_shader_constantf(font->d3d->dev, 2, vTexScale, 1);
|
||||
}
|
||||
|
||||
static void xdk360_draw_text(xdk360_video_font_t *font,
|
||||
@ -633,7 +636,6 @@ static void xdk360_draw_text(xdk360_video_font_t *font,
|
||||
uint32_t dwNumChars;
|
||||
volatile float *pVertex;
|
||||
float vColor[4], m_fCursorX, m_fCursorY;
|
||||
LPDIRECT3DDEVICE d3dr = font->d3d->dev;
|
||||
|
||||
/* Set the color as a vertex shader constant. */
|
||||
vColor[0] = ((0xffffffff & 0x00ff0000) >> 16L) / 255.0f;
|
||||
@ -641,7 +643,7 @@ static void xdk360_draw_text(xdk360_video_font_t *font,
|
||||
vColor[2] = ((0xffffffff & 0x000000ff) >> 0L) / 255.0f;
|
||||
vColor[3] = ((0xffffffff & 0xff000000) >> 24L) / 255.0f;
|
||||
|
||||
d3d_set_vertex_shader_constantf(d3dr, 1, vColor, 1);
|
||||
d3d_set_vertex_shader_constantf(font->d3d->dev, 1, vColor, 1);
|
||||
|
||||
m_fCursorX = floorf(x);
|
||||
m_fCursorY = floorf(y);
|
||||
@ -658,7 +660,7 @@ static void xdk360_draw_text(xdk360_video_font_t *font,
|
||||
*/
|
||||
|
||||
dwNumChars = wcslen(strText);
|
||||
d3dr->BeginVertices(D3DPT_QUADLIST, 4 * dwNumChars,
|
||||
font->d3d->dev->BeginVertices(D3DPT_QUADLIST, 4 * dwNumChars,
|
||||
sizeof(XMFLOAT4), (void**)&pVertex);
|
||||
|
||||
/* Draw four vertices for each glyph. */
|
||||
@ -757,7 +759,7 @@ static void xdk360_draw_text(xdk360_video_font_t *font,
|
||||
dwNumChars--;
|
||||
}
|
||||
|
||||
d3dr->EndVertices();
|
||||
font->d3d->dev->EndVertices();
|
||||
}
|
||||
|
||||
static void xdk360_render_msg(
|
||||
|
@ -109,7 +109,7 @@ typedef struct cg_renderchain
|
||||
} prev;
|
||||
CGprogram vStock;
|
||||
CGprogram fStock;
|
||||
LPDIRECT3DDEVICE dev;
|
||||
void *dev;
|
||||
const video_info_t *video_info;
|
||||
state_tracker_t *state_tracker;
|
||||
D3DVIEWPORT *final_viewport;
|
||||
@ -910,7 +910,7 @@ static bool d3d9_cg_renderchain_init(void *data,
|
||||
return false;
|
||||
}
|
||||
|
||||
chain->dev = (LPDIRECT3DDEVICE)dev_;
|
||||
chain->dev = (void*)dev_;
|
||||
chain->video_info = video_info;
|
||||
chain->state_tracker = NULL;
|
||||
chain->final_viewport = (D3DVIEWPORT*)final_viewport_;
|
||||
@ -1482,18 +1482,13 @@ static bool d3d9_cg_renderchain_render(
|
||||
unsigned width, unsigned height,
|
||||
unsigned pitch, unsigned rotation)
|
||||
{
|
||||
LPDIRECT3DDEVICE d3dr;
|
||||
LPDIRECT3DSURFACE back_buffer, target;
|
||||
unsigned i, current_width, current_height, out_width = 0, out_height = 0;
|
||||
struct Pass *last_pass = NULL;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
cg_renderchain_t *chain = d3d ? (cg_renderchain_t*)d3d->renderchain_data : NULL;
|
||||
|
||||
if (chain)
|
||||
{
|
||||
d3dr = (LPDIRECT3DDEVICE)chain->dev;
|
||||
d3d9_cg_renderchain_start_render(chain);
|
||||
}
|
||||
d3d9_cg_renderchain_start_render(chain);
|
||||
|
||||
current_width = width;
|
||||
current_height = height;
|
||||
@ -1505,7 +1500,7 @@ static bool d3d9_cg_renderchain_render(
|
||||
frame_data, width, height, pitch);
|
||||
|
||||
/* Grab back buffer. */
|
||||
d3d_device_get_render_target(d3dr, 0, (void**)&back_buffer);
|
||||
d3d_device_get_render_target(chain->dev, 0, (void**)&back_buffer);
|
||||
|
||||
/* In-between render target passes. */
|
||||
for (i = 0; i < chain->passes->count - 1; i++)
|
||||
@ -1516,7 +1511,7 @@ static bool d3d9_cg_renderchain_render(
|
||||
|
||||
d3d_texture_get_surface_level(to_pass->tex, 0, (void**)&target);
|
||||
|
||||
d3d_device_set_render_target(d3dr, 0, (void*)target);
|
||||
d3d_device_set_render_target(chain->dev, 0, (void*)target);
|
||||
|
||||
d3d9_cg_renderchain_convert_geometry(chain, &from_pass->info,
|
||||
&out_width, &out_height,
|
||||
@ -1528,8 +1523,8 @@ static bool d3d9_cg_renderchain_render(
|
||||
viewport.MinZ = 0.0f;
|
||||
viewport.MaxZ = 1.0f;
|
||||
|
||||
d3d_set_viewports(d3dr, &viewport);
|
||||
d3d_clear(d3dr, 0, 0, D3DCLEAR_TARGET, 0, 1, 0);
|
||||
d3d_set_viewports(chain->dev, &viewport);
|
||||
d3d_clear(chain->dev, 0, 0, D3DCLEAR_TARGET, 0, 1, 0);
|
||||
|
||||
viewport.Width = out_width;
|
||||
viewport.Height = out_height;
|
||||
@ -1551,7 +1546,7 @@ static bool d3d9_cg_renderchain_render(
|
||||
}
|
||||
|
||||
/* Final pass */
|
||||
d3d_device_set_render_target(d3dr, 0, (void*)back_buffer);
|
||||
d3d_device_set_render_target(chain->dev, 0, (void*)back_buffer);
|
||||
|
||||
last_pass = (struct Pass*)&chain->passes->
|
||||
data[chain->passes->count - 1];
|
||||
@ -1632,7 +1627,7 @@ static bool d3d9_cg_renderchain_read_viewport(
|
||||
LPDIRECT3DSURFACE dest = NULL;
|
||||
bool ret = true;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
||||
LPDIRECT3DDEVICE9 d3dr = (LPDIRECT3DDEVICE9)d3d->dev;
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
|
@ -34,7 +34,7 @@ typedef struct hlsl_d3d9_renderchain
|
||||
unsigned tex_w;
|
||||
unsigned tex_h;
|
||||
uint64_t frame_count;
|
||||
LPDIRECT3DDEVICE dev;
|
||||
void *dev;
|
||||
LPDIRECT3DTEXTURE tex;
|
||||
LPDIRECT3DVERTEXBUFFER vertex_buf;
|
||||
LPDIRECT3DVERTEXDECLARATION vertex_decl;
|
||||
@ -76,33 +76,31 @@ static bool hlsl_d3d9_renderchain_init_shader_fvf(void *data, void *pass_data)
|
||||
};
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d_video_t *pass = (d3d_video_t*)data;
|
||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
||||
hlsl_d3d9_renderchain_t *chain = (hlsl_d3d9_renderchain_t*)
|
||||
d3d->renderchain_data;
|
||||
|
||||
(void)pass_data;
|
||||
|
||||
return d3d_vertex_declaration_new(d3dr,
|
||||
return d3d_vertex_declaration_new(d3d->dev,
|
||||
VertexElements, (void**)&chain->vertex_decl);
|
||||
}
|
||||
|
||||
static bool hlsl_d3d9_renderchain_create_first_pass(void *data,
|
||||
const video_info_t *info)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
hlsl_d3d9_renderchain_t *chain = (hlsl_d3d9_renderchain_t*)
|
||||
d3d->renderchain_data;
|
||||
|
||||
chain->vertex_buf = d3d_vertex_buffer_new(
|
||||
d3dr, 4 * sizeof(Vertex),
|
||||
d3d->dev, 4 * sizeof(Vertex),
|
||||
D3DUSAGE_WRITEONLY, D3DFVF_CUSTOMVERTEX, D3DPOOL_MANAGED,
|
||||
NULL);
|
||||
|
||||
if (!chain->vertex_buf)
|
||||
return false;
|
||||
|
||||
chain->tex = d3d_texture_new(d3dr, NULL,
|
||||
chain->tex = d3d_texture_new(d3d->dev, NULL,
|
||||
chain->tex_w, chain->tex_h, 1, 0,
|
||||
info->rgb32 ?
|
||||
d3d_get_xrgb8888_format() : d3d_get_rgb565_format(),
|
||||
@ -111,10 +109,10 @@ static bool hlsl_d3d9_renderchain_create_first_pass(void *data,
|
||||
if (!chain->tex)
|
||||
return false;
|
||||
|
||||
d3d_set_sampler_address_u(d3dr, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER);
|
||||
d3d_set_sampler_address_v(d3dr, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);
|
||||
d3d_set_render_state(d3dr, D3DRS_CULLMODE, D3DCULL_NONE);
|
||||
d3d_set_render_state(d3dr, D3DRS_ZENABLE, FALSE);
|
||||
d3d_set_sampler_address_u(d3d->dev, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER);
|
||||
d3d_set_sampler_address_v(d3d->dev, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);
|
||||
d3d_set_render_state(d3d->dev, D3DRS_CULLMODE, D3DCULL_NONE);
|
||||
d3d_set_render_state(d3d->dev, D3DRS_ZENABLE, FALSE);
|
||||
|
||||
if (!hlsl_d3d9_renderchain_init_shader_fvf(chain, chain))
|
||||
return false;
|
||||
@ -218,7 +216,6 @@ static void hlsl_d3d9_renderchain_blit_to_texture(
|
||||
{
|
||||
D3DLOCKED_RECT d3dlr;
|
||||
hlsl_d3d9_renderchain_t *chain = (hlsl_d3d9_renderchain_t*)data;
|
||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)chain->dev;
|
||||
|
||||
d3d_frame_postprocess(chain);
|
||||
|
||||
@ -231,7 +228,7 @@ static void hlsl_d3d9_renderchain_blit_to_texture(
|
||||
}
|
||||
|
||||
/* Set the texture to NULL so D3D doesn't complain about it being in use... */
|
||||
d3d_set_texture(d3dr, 0, NULL);
|
||||
d3d_set_texture(chain->dev, 0, NULL);
|
||||
|
||||
if (d3d_lock_rectangle(chain->tex, 0, &d3dlr, NULL, 0, 0))
|
||||
{
|
||||
@ -311,7 +308,6 @@ static bool hlsl_d3d9_renderchain_init(void *data,
|
||||
{
|
||||
unsigned width, height;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
||||
const video_info_t *video_info = (const video_info_t*)_video_info;
|
||||
const struct LinkInfo *link_info = (const struct LinkInfo*)info_data;
|
||||
hlsl_d3d9_renderchain_t *chain = (hlsl_d3d9_renderchain_t*)
|
||||
@ -327,7 +323,7 @@ static bool hlsl_d3d9_renderchain_init(void *data,
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
chain->dev = (LPDIRECT3DDEVICE)dev_data;
|
||||
chain->dev = (LPDIRECT3DDEVICE9)dev_data;
|
||||
chain->pixel_size = (fmt == RETRO_PIXEL_FORMAT_RGB565) ? 2 : 4;
|
||||
chain->tex_w = link_info->tex_w;
|
||||
chain->tex_h = link_info->tex_h;
|
||||
@ -362,7 +358,6 @@ static bool hlsl_d3d9_renderchain_render(void *data, const void *frame,
|
||||
unsigned i;
|
||||
unsigned width, height;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
||||
settings_t *settings = config_get_ptr();
|
||||
hlsl_d3d9_renderchain_t *chain = (hlsl_d3d9_renderchain_t*)d3d->renderchain_data;
|
||||
bool video_smooth = settings->bools.video_smooth;
|
||||
@ -376,18 +371,17 @@ static bool hlsl_d3d9_renderchain_render(void *data, const void *frame,
|
||||
hlsl_d3d9_renderchain_set_vertices(d3d,
|
||||
1, frame_width, frame_height, chain->frame_count);
|
||||
|
||||
d3d_set_texture(d3dr, 0, chain->tex);
|
||||
d3d_set_texture(chain->dev, 0, chain->tex);
|
||||
d3d_set_viewports(chain->dev, &d3d->final_viewport);
|
||||
d3d_set_sampler_minfilter(d3dr, 0,
|
||||
d3d_set_sampler_minfilter(chain->dev, 0,
|
||||
video_smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT);
|
||||
d3d_set_sampler_magfilter(d3dr, 0,
|
||||
d3d_set_sampler_magfilter(chain->dev, 0,
|
||||
video_smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT);
|
||||
|
||||
d3d_set_vertex_declaration(d3dr, chain->vertex_decl);
|
||||
d3d_set_vertex_declaration(chain->dev, chain->vertex_decl);
|
||||
for (i = 0; i < 4; i++)
|
||||
d3d_set_stream_source(d3dr, i, chain->vertex_buf, 0, sizeof(Vertex));
|
||||
|
||||
d3d_draw_primitive(d3dr, D3DPT_TRIANGLESTRIP, 0, 2);
|
||||
d3d_set_stream_source(chain->dev, i, chain->vertex_buf, 0, sizeof(Vertex));
|
||||
d3d_draw_primitive(chain->dev, D3DPT_TRIANGLESTRIP, 0, 2);
|
||||
/* TODO/FIXME - last parameter is mat_data - should be something
|
||||
other than NULL */
|
||||
hlsl_d3d9_renderchain_set_mvp(d3d,
|
||||
|
@ -191,7 +191,7 @@ static void hlsl_set_params(void *data, void *shader_data,
|
||||
float ori_size[2], tex_size[2], out_size[2];
|
||||
float frame_cnt = frame_counter;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
||||
LPDIRECT3DDEVICE9 d3dr = (LPDIRECT3DDEVICE9)d3d->dev;
|
||||
const struct video_tex_info *info = (const struct video_tex_info*)_info;
|
||||
const struct video_tex_info *prev_info = (const struct video_tex_info*)_prev_info;
|
||||
const struct video_tex_info *fbo_info = (const struct video_tex_info*)_fbo_info;
|
||||
@ -236,7 +236,7 @@ static bool hlsl_compile_program(
|
||||
hlsl_shader_data_t *hlsl = (hlsl_shader_data_t*)data;
|
||||
d3d_video_t *d3d = (d3d_video_t*)hlsl->d3d;
|
||||
struct shader_program_hlsl_data *program = (struct shader_program_hlsl_data*)program_data;
|
||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
||||
LPDIRECT3DDEVICE9 d3dr = (LPDIRECT3DDEVICE9)d3d->dev;
|
||||
ID3DXBuffer *listing_f = NULL;
|
||||
ID3DXBuffer *listing_v = NULL;
|
||||
ID3DXBuffer *code_f = NULL;
|
||||
@ -516,9 +516,9 @@ static void hlsl_deinit(void *data)
|
||||
|
||||
static void hlsl_use(void *data, void *shader_data, unsigned idx, bool set_active)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
hlsl_shader_data_t *hlsl_data = (hlsl_shader_data_t*)shader_data;
|
||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
||||
LPDIRECT3DDEVICE9 d3dr = (LPDIRECT3DDEVICE9)d3d->dev;
|
||||
|
||||
if (hlsl_data && hlsl_data->prg[idx].vprg && hlsl_data->prg[idx].fprg)
|
||||
{
|
||||
@ -562,7 +562,7 @@ static void hlsl_shader_scale(void *data, unsigned idx, struct gfx_fbo_scale *sc
|
||||
static bool hlsl_set_mvp(void *data, void *shader_data, const void *mat_data)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
||||
LPDIRECT3DDEVICE9 d3dr = (LPDIRECT3DDEVICE9)d3d->dev;
|
||||
hlsl_shader_data_t *hlsl_data = (hlsl_shader_data_t*)shader_data;
|
||||
const math_matrix_4x4 *mat = (const math_matrix_4x4*)mat_data;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user