25 #include "wine/port.h" 52 FIXME(
"Unhandled usage flags %#x.\n",
usage & ~handled);
56 WARN_(d3d_perf)(
"WINED3DUSAGE_DYNAMIC used without WINED3DUSAGE_WRITEONLY.\n");
93 ERR(
"Trying to create a scratch resource with access flags %s.\n",
104 gl_type = resource_types[
i].gl_type;
123 WARN(
"Render target or depth stencil is not FBO attachable.\n");
136 TRACE(
"Skipping 2D texture type to try texture rectangle.\n");
158 WARN(
"Did not find a suitable GL resource type for resource type %s.\n",
181 resource->multisample_type = multisample_type;
182 resource->multisample_quality = multisample_quality;
192 resource->resource_ops = resource_ops;
199 ERR(
"Failed to allocate system memory.\n");
215 ERR(
"Out of adapter memory\n");
260 ERR(
"Resource %p is being unloaded while mapped.\n",
resource);
269 WARN(
"Called on non-managed resource %p, ignoring.\n",
resource);
300 desc->multisample_quality =
resource->multisample_quality;
317 WARN(
"WINED3D_MAP_READ combined with WINED3D_MAP_DISCARD, ignoring flags.\n");
322 WARN(
"WINED3D_MAP_READ combined with WINED3D_MAP_NOOVERWRITE, ignoring flags.\n");
330 WARN(
"DISCARD or NOOVERWRITE map on non-dynamic buffer, ignoring.\n");
336 WARN(
"WINED3D_MAP_NOOVERWRITE used with WINED3D_MAP_DISCARD, ignoring WINED3D_MAP_DISCARD.\n");
347 TRACE(
"resource %p, sub_resource_idx %u, map_desc %p, box %s, flags %#x.\n",
352 WARN(
"No read/write flags specified.\n");
358 WARN(
"Resource does not have MAP_R access.\n");
364 WARN(
"Resource does not have MAP_W access.\n");
377 TRACE(
"resource %p, sub_resource_idx %u.\n",
resource, sub_resource_idx);
384 TRACE(
"resource %p, sub_resource_idx %u.\n",
resource, sub_resource_idx);
390 const struct wined3d_box *
box,
unsigned int row_pitch,
unsigned int depth_pitch)
396 TRACE(
"resource %p, sub_resource_idx %u, box %s, row_pitch %u, depth_pitch %u.\n",
401 if (sub_resource_idx > 0)
403 WARN(
"Invalid sub_resource_idx %u.\n", sub_resource_idx);
417 if (sub_resource_idx >=
texture->level_count *
texture->layer_count)
419 WARN(
"Invalid sub_resource_idx %u.\n", sub_resource_idx);
464 data_size += (
box->back -
box->front - 1) * depth_pitch;
470 data_size += (
box->right -
box->left) *
resource->format->byte_count;
473 data_size =
box->right -
box->left;
574 else if (
resource->multisample_type)
HRESULT resource_init(struct wined3d_resource *resource, struct wined3d_device *device, enum wined3d_resource_type type, const struct wined3d_format *format, enum wined3d_multisample_type multisample_type, unsigned int multisample_quality, unsigned int usage, unsigned int access, unsigned int width, unsigned int height, unsigned int depth, unsigned int size, void *parent, const struct wined3d_parent_ops *parent_ops, const struct wined3d_resource_ops *resource_ops)
#define WINED3DFMT_FLAG_STENCIL
#define WINED3DERR_INVALIDCALL
struct wined3d_texture * front_buffer
void CDECL wined3d_resource_set_parent(struct wined3d_resource *resource, void *parent)
GLint GLint GLsizei width
DWORD CDECL wined3d_resource_set_priority(struct wined3d_resource *resource, DWORD priority)
static unsigned int wined3d_texture_get_level_height(const struct wined3d_texture *texture, unsigned int level)
static void wined3d_resource_destroy_object(void *object)
#define WINED3DUSAGE_OVERLAY
HRESULT CDECL wined3d_resource_map_info(struct wined3d_resource *resource, unsigned int sub_resource_idx, struct wined3d_map_info *info, DWORD flags)
coclass MSXML2::XSLTemplate40 object
#define WINED3DERR_OUTOFVIDEOMEMORY
#define RESOURCE_ALIGNMENT
void *CDECL wined3d_resource_get_parent(const struct wined3d_resource *resource)
static unsigned int wined3d_texture_get_level_width(const struct wined3d_texture *texture, unsigned int level)
static DWORD wined3d_resource_sanitise_map_flags(const struct wined3d_resource *resource, DWORD flags)
DWORD CDECL wined3d_resource_get_priority(const struct wined3d_resource *resource)
#define WINED3DUSAGE_DYNAMIC
HRESULT CDECL wined3d_resource_unmap(struct wined3d_resource *resource, unsigned int sub_resource_idx)
void CDECL wined3d_resource_get_desc(const struct wined3d_resource *resource, struct wined3d_resource_desc *desc)
UINT CDECL wined3d_device_get_available_texture_mem(const struct wined3d_device *device)
#define WINED3DFMT_FLAG_BLOCKS
#define GL_MAP_INVALIDATE_BUFFER_BIT
void device_resource_add(struct wined3d_device *device, struct wined3d_resource *resource)
static unsigned int wined3d_texture_get_level_depth(const struct wined3d_texture *texture, unsigned int level)
static void wined3d_resource_acquire(struct wined3d_resource *resource)
const char * debug_box(const struct wined3d_box *box)
#define WINED3DUSAGE_DEPTHSTENCIL
#define WINED3D_RESOURCE_ACCESS_MAP_W
void wined3d_cs_destroy_object(struct wined3d_cs *cs, void(*callback)(void *object), void *object)
int align(int length, int align)
void resource_unload(struct wined3d_resource *resource)
UINT CDECL wined3d_resource_update_info(struct wined3d_resource *resource, unsigned int sub_resource_idx, const struct wined3d_box *box, unsigned int row_pitch, unsigned int depth_pitch)
WINE_DEFAULT_DEBUG_CHANNEL(d3d)
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
void CDECL wined3d_resource_preload(struct wined3d_resource *resource)
static void wined3d_box_set(struct wined3d_box *box, unsigned int left, unsigned int top, unsigned int right, unsigned int bottom, unsigned int front, unsigned int back)
static void wined3d_resource_wait_idle(struct wined3d_resource *resource)
HRESULT wined3d_cs_unmap(struct wined3d_cs *cs, struct wined3d_resource *resource, unsigned int sub_resource_idx)
#define WINED3D_RESOURCE_ACCESS_CPU
void device_resource_released(struct wined3d_device *device, struct wined3d_resource *resource)
HRESULT CDECL wined3d_resource_map(struct wined3d_resource *resource, unsigned int sub_resource_idx, struct wined3d_map_desc *map_desc, const struct wined3d_box *box, DWORD flags)
#define WINED3D_LOCATION_RB_MULTISAMPLE
#define WINED3DFMT_FLAG_BLOCKS_NO_VERIFY
static const WCHAR desc[]
#define WINED3DFMT_FLAG_TEXTURE
static BOOL wined3d_resource_access_is_managed(unsigned int access)
GLenum wined3d_resource_gl_legacy_map_flags(DWORD d3d_flags)
BOOL supported[WINED3D_GL_EXT_COUNT]
#define GL_READ_WRITE_ARB
#define WINED3DUSAGE_STATICDECL
#define WINED3D_LOCATION_RB_RESOLVED
GLbitfield wined3d_resource_gl_map_flags(DWORD d3d_flags)
WDF_INTERRUPT_PRIORITY priority
#define WINED3D_LOCATION_DRAWABLE
#define WINED3DUSAGE_LEGACY_CUBEMAP
#define WINED3D_MAP_DISCARD
GLboolean GLboolean GLboolean b
void wined3d_resource_update_draw_binding(struct wined3d_resource *resource)
#define WINED3DUSAGE_WRITEONLY
BOOL wined3d_resource_allocate_sysmem(struct wined3d_resource *resource)
#define WINED3DUSAGE_RENDERTARGET
#define WINED3D_RESOURCE_ACCESS_MAP_R
HRESULT wined3d_cs_map(struct wined3d_cs *cs, struct wined3d_resource *resource, unsigned int sub_resource_idx, struct wined3d_map_desc *map_desc, const struct wined3d_box *box, unsigned int flags)
BOOL wined3d_resource_is_offscreen(struct wined3d_resource *resource)
static struct wined3d_texture * texture_from_resource(struct wined3d_resource *resource)
GLint GLint GLsizei GLsizei GLsizei depth
#define WINED3D_MAP_WRITE
#define WINED3D_LOCATION_SYSMEM
#define WINED3DFMT_FLAG_FBO_ATTACHABLE
GLsizeiptr const GLvoid GLenum usage
int offscreen_rendering_mode
#define WINED3DUSAGE_PRIVATE
void wined3d_cs_emit_preload_resource(struct wined3d_cs *cs, struct wined3d_resource *resource)
#define WINED3DFMT_FLAG_RENDERTARGET
#define WINED3D_RESOURCE_ACCESS_GPU
GLint GLint GLsizei GLsizei height
#define WINED3D_MAP_NOOVERWRITE
#define GL_WRITE_ONLY_ARB
static void wined3d_resource_release(struct wined3d_resource *resource)
#define GL_MAP_UNSYNCHRONIZED_BIT
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
GLuint GLint GLboolean GLint GLenum access
#define WINED3D_LOCATION_TEXTURE_RGB
#define WINED3DUSAGE_TEXTURE
#define WINED3DUSAGE_SCRATCH
WINE_DECLARE_DEBUG_CHANNEL(d3d_perf)
const char * debug_d3dresourcetype(enum wined3d_resource_type resource_type)
#define WINED3DFMT_FLAG_DEPTH
void context_resource_released(const struct wined3d_device *device, struct wined3d_resource *resource, enum wined3d_resource_type type)
#define GL_MAP_FLUSH_EXPLICIT_BIT
GLuint GLuint GLsizei GLenum type
const char * wined3d_debug_resource_access(DWORD access)
const char * debug_d3dformat(enum wined3d_format_id format_id)
void resource_cleanup(struct wined3d_resource *resource)
UINT64 adapter_adjust_memory(struct wined3d_adapter *adapter, INT64 amount)
static void resource_check_usage(DWORD usage)
#define WINED3D_VIDMEM_ACCOUNTING
static BOOL heap_free(void *mem)
void wined3d_resource_free_sysmem(struct wined3d_resource *resource)