58 TRACE(
"iface %p.\n", iface);
78 TRACE(
"iface %p.\n", iface);
114 WARN(
"Failed to read file contents.\n");
128 TRACE(
"iface %p.\n", iface);
160 TRACE(
"iface %p.\n", iface);
182 WARN(
"Failed to find resource.\n");
194 WARN(
"Failed to find resource.\n");
237 TRACE(
"iface %p.\n", iface);
265 TRACE(
"iface %p.\n", iface);
300 TRACE(
"iface %p, object %p.\n", iface,
object);
308 TRACE(
"iface %p.\n", iface);
342 WARN(
"Called multiple times.\n");
353 TRACE(
"iface %p, object %p.\n", iface,
object);
366 TRACE(
"iface %p.\n", iface);
368 ID3D10Device_Release(processor->
device);
386 TRACE(
"data %s, data_size %Iu, filename %s, defines %p, include %p, entry_point %s, target %s, "
387 "sflags %#x, eflags %#x, pump %p, shader %p, error_messages %p, hresult %p.\n",
393 FIXME(
"Unimplemented ID3DX10ThreadPump handling.\n");
403 FIXME(
"filename %s, defines %p, include %p, profile %s, hlslflags %#x, fxflags %#x, device %p, "
404 "pump %p, effectpool %p, errors %p, hresult %p, stub!\n",
406 pump, effectpool, errors, hresult);
415 FIXME(
"filename %s, defines %p, include %p, profile %s, hlslflags %#x, fxflags %#x, device %p, "
416 "pump %p, effectpool %p, errors %p, hresult %p, stub!\n",
418 pump, effectpool, errors, hresult);
427 TRACE(
"data %p, data_size %Iu, loader %p.\n",
data, data_size,
loader);
432 object =
calloc(1,
sizeof(*
object));
437 object->data = (
void *)
data;
438 object->size = data_size;
440 *
loader = &
object->ID3DX10DataLoader_iface;
457 filename_w =
malloc(
len *
sizeof(*filename_w));
476 object =
calloc(1,
sizeof(*
object));
491 *
loader = &
object->ID3DX10DataLoader_iface;
507 object =
calloc(1,
sizeof(*
object));
518 object->u.resource.module =
module;
519 object->u.resource.rsrc =
rsrc;
523 *
loader = &
object->ID3DX10DataLoader_iface;
539 object =
calloc(1,
sizeof(*
object));
550 object->u.resource.module =
module;
551 object->u.resource.rsrc =
rsrc;
555 *
loader = &
object->ID3DX10DataLoader_iface;
564 TRACE(
"info %p, processor %p.\n",
info, processor);
569 object =
malloc(
sizeof(*
object));
576 *processor = &
object->ID3DX10DataProcessor_iface;
587 if (!
device || !processor)
590 object =
calloc(1,
sizeof(*
object));
596 ID3D10Device_AddRef(
device);
599 *processor = &
object->ID3DX10DataProcessor_iface;
622#define THREAD_PUMP_EXITING UINT_MAX
688 TRACE(
"%p decreasing refcount to %lu.\n", iface, refcount);
732 ID3DX10DataProcessor *processor,
HRESULT *
result,
void **
object)
737 TRACE(
"iface %p, loader %p, processor %p, result %p, object %p.\n",
766 TRACE(
"iface %p.\n", iface);
780 TRACE(
"iface %p.\n", iface);
856 TRACE(
"iface %p.\n", iface);
889 TRACE(
"iface %p, io_queue %p, process_queue %p, device_queue %p.\n",
1039 TRACE(
"io_threads %u, proc_threads %u, pump %p.\n", io_threads, proc_threads, pump);
1041 if (io_threads >= 1024 || proc_threads >= 1024)
1051 proc_threads =
info.dwNumberOfProcessors;
1058 object->refcount = 1;
1067 object->thread_count = io_threads + proc_threads;
1069 for (
i = 0;
i <
object->thread_count; ++
i)
1079 *pump = &
object->ID3DX10ThreadPump_iface;
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static int list_empty(struct list_entry *head)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
static SIZE_T const char const D3D_SHADER_MACRO ID3DInclude * include
static SIZE_T const char const D3D_SHADER_MACRO ID3DInclude UINT ID3DBlob ID3DBlob ** error_messages
static SIZE_T const char const D3D_SHADER_MACRO * defines
HRESULT WINAPI D3DCompile(const void *data, SIZE_T data_size, const char *filename, const D3D_SHADER_MACRO *defines, ID3DInclude *include, const char *entrypoint, const char *target, UINT sflags, UINT eflags, ID3DBlob **shader, ID3DBlob **error_messages)
@ D3DX10_ERR_INVALID_DATA
#define ID3DX10DataProcessor_CreateDeviceObject(p, a)
#define ID3DX10ThreadPump_Release(p)
#define ID3DX10DataLoader_Load(p)
#define ID3DX10DataLoader_Decompress(p, a, b)
#define ID3DX10DataProcessor_Process(p, a, b)
#define ID3DX10DataLoader_Destroy(p)
#define ID3DX10ThreadPump_AddRef(p)
#define ID3DX10ThreadPump_ProcessDeviceWorkItems(p, a)
#define ID3DX10DataProcessor_Destroy(p)
HRESULT WINAPI D3DX10CreateAsyncTextureProcessor(ID3D10Device *device, D3DX10_IMAGE_LOAD_INFO *load_info, ID3DX10DataProcessor **processor)
HRESULT WINAPI D3DX10CreateThreadPump(UINT io_threads, UINT proc_threads, ID3DX10ThreadPump **pump)
static ID3DX10DataProcessorVtbl texture_processor_vtbl
HRESULT WINAPI D3DX10CreateEffectPoolFromFileW(const WCHAR *filename, const D3D10_SHADER_MACRO *defines, ID3D10Include *include, const char *profile, UINT hlslflags, UINT fxflags, ID3D10Device *device, ID3DX10ThreadPump *pump, ID3D10EffectPool **effectpool, ID3D10Blob **errors, HRESULT *hresult)
static HRESULT WINAPI filedataloader_Destroy(ID3DX10DataLoader *iface)
static struct asyncdataloader * impl_from_ID3DX10DataLoader(ID3DX10DataLoader *iface)
static HRESULT WINAPI texture_processor_Process(ID3DX10DataProcessor *iface, void *data, SIZE_T size)
static const ID3DX10ThreadPumpVtbl thread_pump_vtbl
static HRESULT WINAPI resourcedataloader_Destroy(ID3DX10DataLoader *iface)
HRESULT load_resourceA(HMODULE module, const char *resource, void **data, DWORD *size)
static const ID3DX10DataLoaderVtbl resourcedataloadervtbl
HRESULT WINAPI D3DX10CreateAsyncResourceLoaderA(HMODULE module, const char *resource, ID3DX10DataLoader **loader)
static HRESULT WINAPI memorydataloader_Load(ID3DX10DataLoader *iface)
static HRESULT WINAPI thread_pump_GetQueueStatus(ID3DX10ThreadPump *iface, UINT *io_queue, UINT *process_queue, UINT *device_queue)
static HRESULT load_resource_initA(HMODULE module, const char *resource, HRSRC *rsrc)
static HRESULT WINAPI texture_info_processor_Process(ID3DX10DataProcessor *iface, void *data, SIZE_T size)
static HRESULT WINAPI texture_processor_CreateDeviceObject(ID3DX10DataProcessor *iface, void **object)
static struct texture_processor * texture_processor_from_ID3DX10DataProcessor(ID3DX10DataProcessor *iface)
static HRESULT WINAPI thread_pump_ProcessDeviceWorkItems(ID3DX10ThreadPump *iface, UINT count)
static HRESULT WINAPI filedataloader_Decompress(ID3DX10DataLoader *iface, void **data, SIZE_T *size)
HRESULT WINAPI D3DX10CreateAsyncFileLoaderW(const WCHAR *filename, ID3DX10DataLoader **loader)
HRESULT WINAPI D3DX10CreateAsyncMemoryLoader(const void *data, SIZE_T data_size, ID3DX10DataLoader **loader)
HRESULT WINAPI D3DX10CreateAsyncFileLoaderA(const char *filename, ID3DX10DataLoader **loader)
static UINT WINAPI thread_pump_GetWorkItemCount(ID3DX10ThreadPump *iface)
static HRESULT WINAPI texture_info_processor_CreateDeviceObject(ID3DX10DataProcessor *iface, void **object)
static ID3DX10DataProcessorVtbl texture_info_processor_vtbl
#define THREAD_PUMP_EXITING
static void purge_list(struct list *list, LONG *count)
static HRESULT WINAPI texture_info_processor_Destroy(ID3DX10DataProcessor *iface)
static const ID3DX10DataLoaderVtbl memorydataloadervtbl
static HRESULT WINAPI memorydataloader_Decompress(ID3DX10DataLoader *iface, void **data, SIZE_T *size)
static void work_item_free(struct work_item *work_item, BOOL cancel)
static ULONG WINAPI thread_pump_AddRef(ID3DX10ThreadPump *iface)
HRESULT WINAPI D3DX10CreateEffectPoolFromFileA(const char *filename, const D3D10_SHADER_MACRO *defines, ID3D10Include *include, const char *profile, UINT hlslflags, UINT fxflags, ID3D10Device *device, ID3DX10ThreadPump *pump, ID3D10EffectPool **effectpool, ID3D10Blob **errors, HRESULT *hresult)
static DWORD WINAPI proc_thread(void *arg)
HRESULT WINAPI D3DX10CompileFromMemory(const char *data, SIZE_T data_size, const char *filename, const D3D10_SHADER_MACRO *defines, ID3D10Include *include, const char *entry_point, const char *target, UINT sflags, UINT eflags, ID3DX10ThreadPump *pump, ID3D10Blob **shader, ID3D10Blob **error_messages, HRESULT *hresult)
static HRESULT WINAPI memorydataloader_Destroy(ID3DX10DataLoader *iface)
static HRESULT load_resource_initW(HMODULE module, const WCHAR *resource, HRSRC *rsrc)
HRESULT load_file(const WCHAR *path, void **data, DWORD *size)
static HRESULT WINAPI thread_pump_PurgeAllItems(ID3DX10ThreadPump *iface)
static HRESULT WINAPI filedataloader_Load(ID3DX10DataLoader *iface)
HRESULT WINAPI D3DX10CreateAsyncTextureInfoProcessor(D3DX10_IMAGE_INFO *info, ID3DX10DataProcessor **processor)
static DWORD WINAPI io_thread(void *arg)
static HRESULT WINAPI thread_pump_QueryInterface(ID3DX10ThreadPump *iface, REFIID riid, void **out)
static struct thread_pump * impl_from_ID3DX10ThreadPump(ID3DX10ThreadPump *iface)
HRESULT load_resourceW(HMODULE module, const WCHAR *resource, void **data, DWORD *size)
static HRESULT WINAPI texture_processor_Destroy(ID3DX10DataProcessor *iface)
HRESULT WINAPI D3DX10CreateAsyncResourceLoaderW(HMODULE module, const WCHAR *resource, ID3DX10DataLoader **loader)
static HRESULT WINAPI resourcedataloader_Decompress(ID3DX10DataLoader *iface, void **data, SIZE_T *size)
static HRESULT WINAPI thread_pump_AddWorkItem(ID3DX10ThreadPump *iface, ID3DX10DataLoader *loader, ID3DX10DataProcessor *processor, HRESULT *result, void **object)
static struct texture_info_processor * impl_from_ID3DX10DataProcessor(ID3DX10DataProcessor *iface)
static const ID3DX10DataLoaderVtbl filedataloadervtbl
static HRESULT WINAPI thread_pump_WaitForAllItems(ID3DX10ThreadPump *iface)
static HRESULT WINAPI resourcedataloader_Load(ID3DX10DataLoader *iface)
static ULONG WINAPI thread_pump_Release(ID3DX10ThreadPump *iface)
#define ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
static __inline const char * debugstr_an(const char *s, int n)
#define FILE_ATTRIBUTE_NORMAL
#define MultiByteToWideChar
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
VOID WINAPI GetSystemInfo(IN LPSYSTEM_INFO lpSystemInfo)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
VOID WINAPI AcquireSRWLockExclusive(PSRWLOCK Lock)
VOID WINAPI ReleaseSRWLockExclusive(PSRWLOCK Lock)
VOID WINAPI InitializeSRWLock(PSRWLOCK Lock)
VOID WINAPI WakeAllConditionVariable(PCONDITION_VARIABLE ConditionVariable)
BOOL WINAPI SleepConditionVariableSRW(PCONDITION_VARIABLE ConditionVariable, PSRWLOCK Lock, DWORD Timeout, ULONG Flags)
VOID WINAPI InitializeConditionVariable(PCONDITION_VARIABLE ConditionVariable)
VOID WINAPI WakeConditionVariable(PCONDITION_VARIABLE ConditionVariable)
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
LPVOID WINAPI LockResource(HGLOBAL handle)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
static void list_move_tail(struct list_head *list, struct list_head *head)
HRESULT load_texture_data(const void *data, SIZE_T size, D3DX10_IMAGE_LOAD_INFO *load_info, D3D10_SUBRESOURCE_DATA **resource_data)
HRESULT create_d3d_texture(ID3D10Device *device, D3DX10_IMAGE_LOAD_INFO *load_info, D3D10_SUBRESOURCE_DATA *resource_data, ID3D10Resource **texture)
HRESULT get_image_info(const void *data, SIZE_T size, D3DX10_IMAGE_INFO *img_info)
void init_load_info(const D3DX10_IMAGE_LOAD_INFO *load_info, D3DX10_IMAGE_LOAD_INFO *out)
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define load_resource(a, b, c)
static HANDLE ULONG_PTR DWORD threads
#define IsEqualGUID(rguid1, rguid2)
static unsigned __int64 next
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
struct asyncdataloader::@274::@276 resource
union asyncdataloader::@274 u
ID3DX10DataLoader ID3DX10DataLoader_iface
struct asyncdataloader::@274::@275 file
ID3DX10DataProcessor ID3DX10DataProcessor_iface
D3DX10_IMAGE_LOAD_INFO load_info
ID3DX10DataProcessor ID3DX10DataProcessor_iface
D3D10_SUBRESOURCE_DATA * resource_data
ID3DX10ThreadPump ID3DX10ThreadPump_iface
CONDITION_VARIABLE proc_cv
unsigned int device_count
unsigned int thread_count
ID3DX10DataLoader * loader
ID3DX10DataProcessor * processor
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
#define FIELD_OFFSET(t, f)
#define CONTAINING_RECORD(address, type, field)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
NTSYSAPI NTSTATUS WINAPI RtlWaitOnAddress(const void *, const void *, SIZE_T, const LARGE_INTEGER *)
NTSYSAPI void WINAPI RtlWakeAddressAll(const void *)
#define D3D10_ERROR_FILE_NOT_FOUND