Dehardcode LPDIRECT3DDEVICE usage

This commit is contained in:
twinaphex 2018-01-25 01:45:03 +01:00
parent 4dc6eb0ae4
commit bc81a9dc88
9 changed files with 695 additions and 470 deletions

File diff suppressed because it is too large Load Diff

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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)

View File

@ -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(

View File

@ -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);

View File

@ -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,

View File

@ -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;