Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
69902ab6
Commit
69902ab6
authored
Apr 05, 2010
by
Roderick Colenbrander
Committed by
Alexandre Julliard
Apr 06, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Move EXT_PALETTED_TEXTURE code over to ffp_blit.
parent
3b6aea59
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
27 additions
and
35 deletions
+27
-35
surface.c
dlls/wined3d/surface.c
+27
-35
No files found.
dlls/wined3d/surface.c
View file @
69902ab6
...
...
@@ -2857,29 +2857,6 @@ static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UI
return
WINED3D_OK
;
}
/* This function is used in case of 8bit paletted textures to upload the palette.
It supports GL_EXT_paletted_texture and GL_ARB_fragment_program, support for other
extensions like ATI_fragment_shaders is possible.
*/
/* Context activation is done by the caller. */
static
void
d3dfmt_p8_upload_palette
(
IWineD3DSurface
*
iface
,
const
struct
wined3d_gl_info
*
gl_info
,
CONVERT_TYPES
convert
)
{
IWineD3DSurfaceImpl
*
This
=
(
IWineD3DSurfaceImpl
*
)
iface
;
BYTE
table
[
256
][
4
];
d3dfmt_p8_init_palette
(
This
,
table
,
(
convert
==
CONVERT_PALETTED_CK
));
/* Try to use the paletted texture extension */
if
(
gl_info
->
supported
[
EXT_PALETTED_TEXTURE
])
{
TRACE
(
"Using GL_EXT_PALETTED_TEXTURE for 8-bit paletted texture support
\n
"
);
ENTER_GL
();
GL_EXTCALL
(
glColorTableEXT
(
This
->
texture_target
,
GL_RGBA
,
256
,
GL_RGBA
,
GL_UNSIGNED_BYTE
,
table
));
LEAVE_GL
();
}
}
BOOL
palette9_changed
(
IWineD3DSurfaceImpl
*
This
)
{
IWineD3DDeviceImpl
*
device
=
This
->
resource
.
device
;
...
...
@@ -4317,18 +4294,14 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_RealizePalette(IWineD3DSurface *iface)
if
((
This
->
resource
.
usage
&
WINED3DUSAGE_RENDERTARGET
)
&&
device
->
blitter
->
color_fixup_supported
(
&
device
->
adapter
->
gl_info
,
This
->
resource
.
format_desc
->
color_fixup
))
{
struct
wined3d_context
*
context
;
/* Make sure the texture is up to date. This call doesn't do anything if the texture is already up to date. */
IWineD3DSurface_LoadLocation
(
iface
,
SFLAG_INTEXTURE
,
NULL
);
/* We want to force a palette refresh, so mark the drawable as not being up to date */
IWineD3DSurface_ModifyLocation
(
iface
,
SFLAG_INDRAWABLE
,
FALSE
);
/* Re-upload the palette */
context
=
context_acquire
(
device
,
NULL
,
CTXUSAGE_RESOURCELOAD
);
d3dfmt_p8_upload_palette
(
iface
,
context
->
gl_info
,
NO_CONVERSION
);
context_release
(
context
);
/* Force a palette refresh by re-uploading to the drawable */
IWineD3DSurface_LoadLocation
(
iface
,
SFLAG_INDRAWABLE
,
NULL
);
}
else
{
if
(
!
(
This
->
Flags
&
SFLAG_INSYSMEM
))
{
TRACE
(
"Palette changed with surface that does not have an up to date system memory copy
\n
"
);
...
...
@@ -4937,12 +4910,6 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_LoadLocation(IWineD3DSurface *iface, D
return
WINED3DERR_OUTOFVIDEOMEMORY
;
}
d3dfmt_convert_surface
(
This
->
resource
.
allocatedMemory
,
mem
,
pitch
,
width
,
height
,
outpitch
,
convert
,
This
);
}
else
if
(
This
->
resource
.
format_desc
->
format
==
WINED3DFMT_P8_UINT
&&
(
device
->
blitter
->
color_fixup_supported
(
gl_info
,
This
->
resource
.
format_desc
->
color_fixup
)))
{
d3dfmt_p8_upload_palette
(
iface
,
gl_info
,
convert
);
mem
=
This
->
resource
.
allocatedMemory
;
}
else
{
mem
=
This
->
resource
.
allocatedMemory
;
}
...
...
@@ -5119,9 +5086,34 @@ static HRESULT ffp_blit_alloc(IWineD3DDevice *iface) { return WINED3D_OK; }
/* Context activation is done by the caller. */
static
void
ffp_blit_free
(
IWineD3DDevice
*
iface
)
{
}
/* This function is used in case of 8bit paletted textures using GL_EXT_paletted_texture */
/* Context activation is done by the caller. */
static
void
ffp_blit_p8_upload_palette
(
IWineD3DSurfaceImpl
*
surface
,
const
struct
wined3d_gl_info
*
gl_info
)
{
BYTE
table
[
256
][
4
];
BOOL
colorkey_active
=
(
surface
->
CKeyFlags
&
WINEDDSD_CKSRCBLT
)
?
TRUE
:
FALSE
;
d3dfmt_p8_init_palette
(
surface
,
table
,
colorkey_active
);
TRACE
(
"Using GL_EXT_PALETTED_TEXTURE for 8-bit paletted texture support
\n
"
);
ENTER_GL
();
GL_EXTCALL
(
glColorTableEXT
(
surface
->
texture_target
,
GL_RGBA
,
256
,
GL_RGBA
,
GL_UNSIGNED_BYTE
,
table
));
LEAVE_GL
();
}
/* Context activation is done by the caller. */
static
HRESULT
ffp_blit_set
(
IWineD3DDevice
*
iface
,
IWineD3DSurfaceImpl
*
surface
)
{
IWineD3DDeviceImpl
*
device
=
(
IWineD3DDeviceImpl
*
)
iface
;
const
struct
wined3d_gl_info
*
gl_info
=
&
device
->
adapter
->
gl_info
;
enum
complex_fixup
fixup
=
get_complex_fixup
(
surface
->
resource
.
format_desc
->
color_fixup
);
/* When EXT_PALETTED_TEXTURE is around, palette conversion is done by the GPU
* else the surface is converted in software at upload time in LoadLocation.
*/
if
(
fixup
==
COMPLEX_FIXUP_P8
&&
gl_info
->
supported
[
EXT_PALETTED_TEXTURE
])
ffp_blit_p8_upload_palette
(
surface
,
gl_info
);
ENTER_GL
();
glEnable
(
surface
->
texture_target
);
checkGLcall
(
"glEnable(surface->texture_target)"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment