Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/xserver into input-hotplug
This commit is contained in:
commit
518db35ca3
|
@ -62,414 +62,99 @@ symlink_mesa_glapi() {
|
||||||
src_dir src/mesa/glapi
|
src_dir src/mesa/glapi
|
||||||
dst_dir mesa/glapi
|
dst_dir mesa/glapi
|
||||||
|
|
||||||
action dispatch.h
|
for src in $REAL_SRC_DIR/*.{c,h}; do
|
||||||
action glapi.c
|
action `basename $src`
|
||||||
action glapi.h
|
done
|
||||||
action glapioffsets.h
|
|
||||||
action glapitable.h
|
|
||||||
action glapitemp.h
|
|
||||||
action glprocs.h
|
|
||||||
action glthread.c
|
|
||||||
action glthread.h
|
|
||||||
}
|
}
|
||||||
|
|
||||||
symlink_mesa_main() {
|
symlink_mesa_main() {
|
||||||
src_dir src/mesa/main
|
src_dir src/mesa/main
|
||||||
dst_dir mesa/main
|
dst_dir mesa/main
|
||||||
|
|
||||||
action accum.c
|
for src in $REAL_SRC_DIR/*.{c,h}; do
|
||||||
action accum.h
|
action `basename $src`
|
||||||
action api_arrayelt.c
|
done
|
||||||
action api_arrayelt.h
|
|
||||||
action api_eval.h
|
|
||||||
action api_loopback.c
|
|
||||||
action api_loopback.h
|
|
||||||
action api_noop.c
|
|
||||||
action api_noop.h
|
|
||||||
action api_validate.c
|
|
||||||
action api_validate.h
|
|
||||||
action arrayobj.c
|
|
||||||
action arrayobj.h
|
|
||||||
action attrib.c
|
|
||||||
action attrib.h
|
|
||||||
action bitset.h
|
|
||||||
action blend.c
|
|
||||||
action blend.h
|
|
||||||
action bufferobj.c
|
|
||||||
action bufferobj.h
|
|
||||||
action buffers.c
|
|
||||||
action buffers.h
|
|
||||||
action clip.c
|
|
||||||
action clip.h
|
|
||||||
action colormac.h
|
|
||||||
action colortab.c
|
|
||||||
action colortab.h
|
|
||||||
action config.h
|
|
||||||
action context.c
|
|
||||||
action context.h
|
|
||||||
action convolve.c
|
|
||||||
action convolve.h
|
|
||||||
action dd.h
|
|
||||||
action debug.c
|
|
||||||
action debug.h
|
|
||||||
action depth.c
|
|
||||||
action depth.h
|
|
||||||
action depthstencil.c
|
|
||||||
action depthstencil.h
|
|
||||||
action dlist.c
|
|
||||||
action dlist.h
|
|
||||||
action drawpix.c
|
|
||||||
action drawpix.h
|
|
||||||
action enable.c
|
|
||||||
action enable.h
|
|
||||||
action enums.c
|
|
||||||
action enums.h
|
|
||||||
action eval.c
|
|
||||||
action eval.h
|
|
||||||
action execmem.c
|
|
||||||
action extensions.c
|
|
||||||
action extensions.h
|
|
||||||
action fbobject.c
|
|
||||||
action fbobject.h
|
|
||||||
action feedback.c
|
|
||||||
action feedback.h
|
|
||||||
action fog.c
|
|
||||||
action fog.h
|
|
||||||
action framebuffer.c
|
|
||||||
action framebuffer.h
|
|
||||||
action get.c
|
|
||||||
action get.h
|
|
||||||
action getstring.c
|
|
||||||
action glheader.h
|
|
||||||
action hash.c
|
|
||||||
action hash.h
|
|
||||||
action hint.c
|
|
||||||
action hint.h
|
|
||||||
action histogram.c
|
|
||||||
action histogram.h
|
|
||||||
action image.c
|
|
||||||
action image.h
|
|
||||||
action imports.c
|
|
||||||
action imports.h
|
|
||||||
action light.c
|
|
||||||
action light.h
|
|
||||||
action lines.c
|
|
||||||
action lines.h
|
|
||||||
action macros.h
|
|
||||||
action matrix.c
|
|
||||||
action matrix.h
|
|
||||||
action mm.c
|
|
||||||
action mm.h
|
|
||||||
action mtypes.h
|
|
||||||
action occlude.c
|
|
||||||
action occlude.h
|
|
||||||
action pixel.c
|
|
||||||
action pixel.h
|
|
||||||
action points.c
|
|
||||||
action points.h
|
|
||||||
action polygon.c
|
|
||||||
action polygon.h
|
|
||||||
action rastpos.c
|
|
||||||
action rastpos.h
|
|
||||||
action rbadaptors.c
|
|
||||||
action rbadaptors.h
|
|
||||||
action renderbuffer.c
|
|
||||||
action renderbuffer.h
|
|
||||||
action simple_list.h
|
|
||||||
action state.c
|
|
||||||
action state.h
|
|
||||||
action stencil.c
|
|
||||||
action stencil.h
|
|
||||||
action texcompress.c
|
|
||||||
action texcompress.h
|
|
||||||
action texcompress_fxt1.c
|
|
||||||
action texcompress_s3tc.c
|
|
||||||
action texenvprogram.c
|
|
||||||
action texenvprogram.h
|
|
||||||
action texformat.c
|
|
||||||
action texformat.h
|
|
||||||
action texformat_tmp.h
|
|
||||||
action teximage.c
|
|
||||||
action teximage.h
|
|
||||||
action texobj.c
|
|
||||||
action texobj.h
|
|
||||||
action texrender.c
|
|
||||||
action texrender.h
|
|
||||||
action texstate.c
|
|
||||||
action texstate.h
|
|
||||||
action texstore.c
|
|
||||||
action texstore.h
|
|
||||||
action varray.c
|
|
||||||
action varray.h
|
|
||||||
action version.h
|
|
||||||
action vsnprintf.c
|
|
||||||
action vtxfmt.c
|
|
||||||
action vtxfmt.h
|
|
||||||
action vtxfmt_tmp.h
|
|
||||||
}
|
}
|
||||||
|
|
||||||
symlink_mesa_math() {
|
symlink_mesa_math() {
|
||||||
src_dir src/mesa/math
|
src_dir src/mesa/math
|
||||||
dst_dir mesa/math
|
dst_dir mesa/math
|
||||||
|
|
||||||
action m_clip_tmp.h
|
for src in $REAL_SRC_DIR/*.{c,h}; do
|
||||||
action m_copy_tmp.h
|
action `basename $src`
|
||||||
action m_debug.h
|
done
|
||||||
action m_debug_clip.c
|
|
||||||
action m_debug_norm.c
|
|
||||||
action m_debug_util.h
|
|
||||||
action m_debug_xform.c
|
|
||||||
action m_dotprod_tmp.h
|
|
||||||
action m_eval.c
|
|
||||||
action m_eval.h
|
|
||||||
action m_matrix.c
|
|
||||||
action m_matrix.h
|
|
||||||
action m_norm_tmp.h
|
|
||||||
action m_trans_tmp.h
|
|
||||||
action m_translate.c
|
|
||||||
action m_translate.h
|
|
||||||
action m_vector.c
|
|
||||||
action m_vector.h
|
|
||||||
action m_xform.c
|
|
||||||
action m_xform.h
|
|
||||||
action m_xform_tmp.h
|
|
||||||
action mathmod.h
|
|
||||||
}
|
}
|
||||||
|
|
||||||
symlink_mesa_ac() {
|
symlink_mesa_ac() {
|
||||||
src_dir src/mesa/array_cache
|
src_dir src/mesa/array_cache
|
||||||
dst_dir mesa/array_cache
|
dst_dir mesa/array_cache
|
||||||
|
|
||||||
action ac_context.c
|
for src in $REAL_SRC_DIR/*.{c,h}; do
|
||||||
action ac_context.h
|
action `basename $src`
|
||||||
action ac_import.c
|
done
|
||||||
action acache.h
|
|
||||||
}
|
}
|
||||||
|
|
||||||
symlink_mesa_swrast() {
|
symlink_mesa_swrast() {
|
||||||
src_dir src/mesa/swrast
|
src_dir src/mesa/swrast
|
||||||
dst_dir mesa/swrast
|
dst_dir mesa/swrast
|
||||||
|
|
||||||
action s_aaline.c
|
for src in $REAL_SRC_DIR/*.{c,h}; do
|
||||||
action s_aaline.h
|
action `basename $src`
|
||||||
action s_aalinetemp.h
|
done
|
||||||
action s_aatriangle.c
|
|
||||||
action s_aatriangle.h
|
|
||||||
action s_aatritemp.h
|
|
||||||
action s_accum.c
|
|
||||||
action s_accum.h
|
|
||||||
action s_alpha.c
|
|
||||||
action s_alpha.h
|
|
||||||
action s_arbshader.c
|
|
||||||
action s_arbshader.h
|
|
||||||
action s_atifragshader.c
|
|
||||||
action s_atifragshader.h
|
|
||||||
action s_bitmap.c
|
|
||||||
action s_blend.c
|
|
||||||
action s_blend.h
|
|
||||||
action s_blit.c
|
|
||||||
action s_buffers.c
|
|
||||||
action s_context.c
|
|
||||||
action s_context.h
|
|
||||||
action s_copypix.c
|
|
||||||
action s_depth.c
|
|
||||||
action s_depth.h
|
|
||||||
action s_drawpix.c
|
|
||||||
action s_drawpix.h
|
|
||||||
action s_feedback.c
|
|
||||||
action s_feedback.h
|
|
||||||
action s_fog.c
|
|
||||||
action s_fog.h
|
|
||||||
action s_imaging.c
|
|
||||||
action s_lines.c
|
|
||||||
action s_lines.h
|
|
||||||
action s_linetemp.h
|
|
||||||
action s_logic.c
|
|
||||||
action s_logic.h
|
|
||||||
action s_masking.c
|
|
||||||
action s_masking.h
|
|
||||||
action s_nvfragprog.c
|
|
||||||
action s_nvfragprog.h
|
|
||||||
action s_points.c
|
|
||||||
action s_points.h
|
|
||||||
action s_pointtemp.h
|
|
||||||
action s_readpix.c
|
|
||||||
action s_span.c
|
|
||||||
action s_span.h
|
|
||||||
action s_spantemp.h
|
|
||||||
action s_stencil.c
|
|
||||||
action s_stencil.h
|
|
||||||
action s_texcombine.c
|
|
||||||
action s_texcombine.h
|
|
||||||
action s_texfilter.c
|
|
||||||
action s_texfilter.h
|
|
||||||
action s_texstore.c
|
|
||||||
action s_triangle.c
|
|
||||||
action s_triangle.h
|
|
||||||
action s_trispan.h
|
|
||||||
action s_tritemp.h
|
|
||||||
action s_zoom.c
|
|
||||||
action s_zoom.h
|
|
||||||
action swrast.h
|
|
||||||
}
|
}
|
||||||
|
|
||||||
symlink_mesa_ss() {
|
symlink_mesa_ss() {
|
||||||
src_dir src/mesa/swrast_setup
|
src_dir src/mesa/swrast_setup
|
||||||
dst_dir mesa/swrast_setup
|
dst_dir mesa/swrast_setup
|
||||||
|
|
||||||
action ss_context.c
|
for src in $REAL_SRC_DIR/*.{c,h}; do
|
||||||
action ss_context.h
|
action `basename $src`
|
||||||
action ss_triangle.c
|
done
|
||||||
action ss_triangle.h
|
|
||||||
action ss_tritmp.h
|
|
||||||
action ss_vb.h
|
|
||||||
action swrast_setup.h
|
|
||||||
}
|
}
|
||||||
|
|
||||||
symlink_mesa_tnl() {
|
symlink_mesa_tnl() {
|
||||||
src_dir src/mesa/tnl
|
src_dir src/mesa/tnl
|
||||||
dst_dir mesa/tnl
|
dst_dir mesa/tnl
|
||||||
|
|
||||||
action t_array_api.c
|
for src in $REAL_SRC_DIR/*.{c,h}; do
|
||||||
action t_array_api.h
|
action `basename $src`
|
||||||
action t_array_import.c
|
done
|
||||||
action t_array_import.h
|
|
||||||
action t_context.c
|
|
||||||
action t_context.h
|
|
||||||
action t_pipeline.c
|
|
||||||
action t_pipeline.h
|
|
||||||
action t_save_api.c
|
|
||||||
action t_save_api.h
|
|
||||||
action t_save_loopback.c
|
|
||||||
action t_save_playback.c
|
|
||||||
action t_vb_arbprogram.c
|
|
||||||
action t_vb_arbprogram.h
|
|
||||||
action t_vb_arbprogram_sse.c
|
|
||||||
action t_vb_arbshader.c
|
|
||||||
action t_vb_cliptmp.h
|
|
||||||
action t_vb_cull.c
|
|
||||||
action t_vb_fog.c
|
|
||||||
action t_vb_light.c
|
|
||||||
action t_vb_lighttmp.h
|
|
||||||
action t_vb_normals.c
|
|
||||||
action t_vb_points.c
|
|
||||||
action t_vb_program.c
|
|
||||||
action t_vb_render.c
|
|
||||||
action t_vb_rendertmp.h
|
|
||||||
action t_vb_texgen.c
|
|
||||||
action t_vb_texmat.c
|
|
||||||
action t_vb_vertex.c
|
|
||||||
action t_vertex.c
|
|
||||||
action t_vertex.h
|
|
||||||
action t_vertex_generic.c
|
|
||||||
action t_vertex_sse.c
|
|
||||||
action t_vp_build.c
|
|
||||||
action t_vp_build.h
|
|
||||||
action t_vtx_api.c
|
|
||||||
action t_vtx_api.h
|
|
||||||
action t_vtx_eval.c
|
|
||||||
action t_vtx_exec.c
|
|
||||||
action t_vtx_generic.c
|
|
||||||
action t_vtx_x86.c
|
|
||||||
action tnl.h
|
|
||||||
}
|
}
|
||||||
|
|
||||||
symlink_mesa_shader() {
|
symlink_mesa_shader() {
|
||||||
src_dir src/mesa/shader
|
src_dir src/mesa/shader
|
||||||
dst_dir mesa/shader
|
dst_dir mesa/shader
|
||||||
|
|
||||||
action arbprogparse.c
|
for src in $REAL_SRC_DIR/*.{c,h}; do
|
||||||
action arbprogparse.h
|
action `basename $src`
|
||||||
action arbprogram.c
|
done
|
||||||
action arbprogram.h
|
|
||||||
action arbprogram_syn.h
|
|
||||||
action atifragshader.c
|
|
||||||
action atifragshader.h
|
|
||||||
action nvfragparse.c
|
|
||||||
action nvfragparse.h
|
|
||||||
action nvprogram.c
|
|
||||||
action nvprogram.h
|
|
||||||
action nvvertexec.c
|
|
||||||
action nvvertexec.h
|
|
||||||
action nvvertparse.c
|
|
||||||
action nvvertparse.h
|
|
||||||
action program.c
|
|
||||||
action program.h
|
|
||||||
action program_instruction.h
|
|
||||||
action shaderobjects.c
|
|
||||||
action shaderobjects.h
|
|
||||||
action shaderobjects_3dlabs.c
|
|
||||||
action shaderobjects_3dlabs.h
|
|
||||||
}
|
}
|
||||||
|
|
||||||
symlink_mesa_shader_grammar() {
|
symlink_mesa_shader_grammar() {
|
||||||
src_dir src/mesa/shader/grammar
|
src_dir src/mesa/shader/grammar
|
||||||
dst_dir mesa/shader/grammar
|
dst_dir mesa/shader/grammar
|
||||||
|
|
||||||
action grammar.c
|
for src in $REAL_SRC_DIR/*.{c,h}; do
|
||||||
action grammar.h
|
action `basename $src`
|
||||||
action grammar_syn.h
|
done
|
||||||
action grammar_mesa.c
|
|
||||||
action grammar_mesa.h
|
|
||||||
}
|
}
|
||||||
|
|
||||||
symlink_mesa_shader_slang() {
|
symlink_mesa_shader_slang() {
|
||||||
src_dir src/mesa/shader/slang
|
src_dir src/mesa/shader/slang
|
||||||
dst_dir mesa/shader/slang
|
dst_dir mesa/shader/slang
|
||||||
|
|
||||||
action slang_analyse.c
|
for src in $REAL_SRC_DIR/*.{c,h}; do
|
||||||
action slang_analyse.h
|
action `basename $src`
|
||||||
action slang_assemble.c
|
done
|
||||||
action slang_assemble.h
|
|
||||||
action slang_assemble_assignment.c
|
|
||||||
action slang_assemble_assignment.h
|
|
||||||
action slang_assemble_conditional.c
|
|
||||||
action slang_assemble_conditional.h
|
|
||||||
action slang_assemble_constructor.c
|
|
||||||
action slang_assemble_constructor.h
|
|
||||||
action slang_assemble_typeinfo.c
|
|
||||||
action slang_assemble_typeinfo.h
|
|
||||||
action slang_compile.c
|
|
||||||
action slang_compile.h
|
|
||||||
action slang_compile_function.c
|
|
||||||
action slang_compile_function.h
|
|
||||||
action slang_compile_operation.c
|
|
||||||
action slang_compile_operation.h
|
|
||||||
action slang_compile_struct.c
|
|
||||||
action slang_compile_struct.h
|
|
||||||
action slang_compile_variable.c
|
|
||||||
action slang_compile_variable.h
|
|
||||||
action slang_execute.c
|
|
||||||
action slang_execute.h
|
|
||||||
action slang_execute_x86.c
|
|
||||||
action slang_export.c
|
|
||||||
action slang_export.h
|
|
||||||
action slang_library_noise.c
|
|
||||||
action slang_library_noise.h
|
|
||||||
action slang_library_texsample.c
|
|
||||||
action slang_library_texsample.h
|
|
||||||
action slang_link.c
|
|
||||||
action slang_link.h
|
|
||||||
action slang_mesa.h
|
|
||||||
action slang_preprocess.c
|
|
||||||
action slang_preprocess.h
|
|
||||||
action slang_storage.c
|
|
||||||
action slang_storage.h
|
|
||||||
action slang_utility.c
|
|
||||||
action slang_utility.h
|
|
||||||
action traverse_wrap.h
|
|
||||||
}
|
}
|
||||||
|
|
||||||
symlink_mesa_shader_slang_library() {
|
symlink_mesa_shader_slang_library() {
|
||||||
src_dir src/mesa/shader/slang/library
|
src_dir src/mesa/shader/slang/library
|
||||||
dst_dir mesa/shader/slang/library
|
dst_dir mesa/shader/slang/library
|
||||||
|
|
||||||
action slang_common_builtin_gc.h
|
for src in $REAL_SRC_DIR/*.{c,h}; do
|
||||||
action slang_core_gc.h
|
action `basename $src`
|
||||||
action slang_fragment_builtin_gc.h
|
done
|
||||||
action slang_shader_syn.h
|
|
||||||
action slang_pp_version_syn.h
|
|
||||||
action slang_vertex_builtin_gc.h
|
|
||||||
}
|
}
|
||||||
|
|
||||||
symlink_mesa_x() {
|
symlink_mesa_x() {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
noinst_LTLIBRARIES = libfb.la libfbmmx.la
|
noinst_LTLIBRARIES = libfb.la libwfb.la libfbmmx.la
|
||||||
|
|
||||||
INCLUDES = \
|
INCLUDES = \
|
||||||
-I$(top_srcdir)/hw/xfree86/os-support \
|
-I$(top_srcdir)/hw/xfree86/os-support \
|
||||||
|
@ -7,11 +7,11 @@ INCLUDES = \
|
||||||
AM_CFLAGS = $(DIX_CFLAGS)
|
AM_CFLAGS = $(DIX_CFLAGS)
|
||||||
|
|
||||||
if XORG
|
if XORG
|
||||||
sdk_HEADERS = fb.h fbrop.h fbpseudocolor.h fboverlay.h
|
sdk_HEADERS = fb.h fbrop.h fbpseudocolor.h fboverlay.h wfbrename.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if MMX_CAPABLE
|
if MMX_CAPABLE
|
||||||
AM_CFLAGS += -DUSE_MMX
|
libfb_la_CFLAGS = $(AM_CFLAGS) -DUSE_MMX
|
||||||
|
|
||||||
libfbmmx_la_CFLAGS = \
|
libfbmmx_la_CFLAGS = \
|
||||||
$(DIX_CFLAGS) \
|
$(DIX_CFLAGS) \
|
||||||
|
@ -23,6 +23,8 @@ libfbmmx_la_CFLAGS = \
|
||||||
--param large-function-growth=10000
|
--param large-function-growth=10000
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
libwfb_la_CFLAGS = $(AM_CFLAGS) -DFB_ACCESS_WRAPPER
|
||||||
|
|
||||||
libfbmmx_la_SOURCES = \
|
libfbmmx_la_SOURCES = \
|
||||||
fbmmx.c \
|
fbmmx.c \
|
||||||
fbmmx.h
|
fbmmx.h
|
||||||
|
@ -70,6 +72,8 @@ libfb_la_SOURCES = \
|
||||||
fbedge.c \
|
fbedge.c \
|
||||||
fbedgeimp.h
|
fbedgeimp.h
|
||||||
|
|
||||||
|
libwfb_la_SOURCES = $(libfb_la_SOURCES)
|
||||||
|
|
||||||
libfb_la_LIBADD = libfbmmx.la
|
libfb_la_LIBADD = libfbmmx.la
|
||||||
|
|
||||||
EXTRA_DIST = fbcmap.c
|
EXTRA_DIST = fbcmap.c
|
||||||
|
|
108
fb/fb.h
108
fb/fb.h
|
@ -44,6 +44,39 @@
|
||||||
#include "picture.h"
|
#include "picture.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef FB_ACCESS_WRAPPER
|
||||||
|
|
||||||
|
#include "wfbrename.h"
|
||||||
|
#define FBPREFIX(x) wfb##x
|
||||||
|
#define WRITE(ptr, val) ((*wfbWriteMemory)((ptr), (val), sizeof(*(ptr))))
|
||||||
|
#define READ(ptr) ((*wfbReadMemory)((ptr), sizeof(*(ptr))))
|
||||||
|
|
||||||
|
#define MEMCPY_WRAPPED(dst, src, size) do { \
|
||||||
|
size_t _i; \
|
||||||
|
CARD8 *_dst = (CARD8*)(dst), *_src = (CARD8*)(src); \
|
||||||
|
for(_i = 0; _i < size; _i++) { \
|
||||||
|
WRITE(_dst +_i, READ(_src + _i)); \
|
||||||
|
} \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
#define MEMSET_WRAPPED(dst, val, size) do { \
|
||||||
|
size_t _i; \
|
||||||
|
CARD8 *_dst = (CARD8*)(dst); \
|
||||||
|
for(_i = 0; _i < size; _i++) { \
|
||||||
|
WRITE(_dst +_i, (val)); \
|
||||||
|
} \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define FBPREFIX(x) fb##x
|
||||||
|
#define WRITE(ptr, val) (*(ptr) = (val))
|
||||||
|
#define READ(ptr) (*(ptr))
|
||||||
|
#define MEMCPY_WRAPPED(dst, src, size) memcpy((dst), (src), (size))
|
||||||
|
#define MEMSET_WRAPPED(dst, val, size) memset((dst), (val), (size))
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This single define controls the basic size of data manipulated
|
* This single define controls the basic size of data manipulated
|
||||||
* by this software; it must be log2(sizeof (FbBits) * 8)
|
* by this software; it must be log2(sizeof (FbBits) * 8)
|
||||||
|
@ -222,8 +255,8 @@ extern void fbSetBits (FbStip *bits, int stride, FbStip data);
|
||||||
|
|
||||||
#define FbPtrOffset(p,o,t) ((t *) ((CARD8 *) (p) + (o)))
|
#define FbPtrOffset(p,o,t) ((t *) ((CARD8 *) (p) + (o)))
|
||||||
#define FbSelectPatternPart(xor,o,t) ((xor) >> (FbPatternOffset (o,t) << 3))
|
#define FbSelectPatternPart(xor,o,t) ((xor) >> (FbPatternOffset (o,t) << 3))
|
||||||
#define FbStorePart(dst,off,t,xor) (*FbPtrOffset(dst,off,t) = \
|
#define FbStorePart(dst,off,t,xor) (WRITE(FbPtrOffset(dst,off,t), \
|
||||||
FbSelectPart(xor,off,t))
|
FbSelectPart(xor,off,t)))
|
||||||
#ifndef FbSelectPart
|
#ifndef FbSelectPart
|
||||||
#define FbSelectPart(x,o,t) FbSelectPatternPart(x,o,t)
|
#define FbSelectPart(x,o,t) FbSelectPatternPart(x,o,t)
|
||||||
#endif
|
#endif
|
||||||
|
@ -403,7 +436,7 @@ extern void fbSetBits (FbStip *bits, int stride, FbStip data);
|
||||||
FbStorePart(dst,sizeof (FbBits) - 1,CARD8,xor); \
|
FbStorePart(dst,sizeof (FbBits) - 1,CARD8,xor); \
|
||||||
break; \
|
break; \
|
||||||
default: \
|
default: \
|
||||||
*dst = FbDoMaskRRop(*dst, and, xor, l); \
|
WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, l)); \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
@ -423,7 +456,7 @@ extern void fbSetBits (FbStip *bits, int stride, FbStip data);
|
||||||
break; \
|
break; \
|
||||||
FbDoRightMaskByteRRop6Cases(dst,xor) \
|
FbDoRightMaskByteRRop6Cases(dst,xor) \
|
||||||
default: \
|
default: \
|
||||||
*dst = FbDoMaskRRop (*dst, and, xor, r); \
|
WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, r)); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -456,15 +489,15 @@ extern void fbSetBits (FbStip *bits, int stride, FbStip data);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define FbLaneCase1(n,a,o) ((n) == 0x01 ? \
|
#define FbLaneCase1(n,a,o) ((n) == 0x01 ? \
|
||||||
(*(CARD8 *) ((a)+FbPatternOffset(o,CARD8)) = \
|
WRITE((CARD8 *) ((a)+FbPatternOffset(o,CARD8)), \
|
||||||
fgxor) : 0)
|
fgxor) : 0)
|
||||||
#define FbLaneCase2(n,a,o) ((n) == 0x03 ? \
|
#define FbLaneCase2(n,a,o) ((n) == 0x03 ? \
|
||||||
(*(CARD16 *) ((a)+FbPatternOffset(o,CARD16)) = \
|
WRITE((CARD16 *) ((a)+FbPatternOffset(o,CARD16)), \
|
||||||
fgxor) : \
|
fgxor) : \
|
||||||
((void)FbLaneCase1((n)&1,a,o), \
|
((void)FbLaneCase1((n)&1,a,o), \
|
||||||
FbLaneCase1((n)>>1,a,(o)+1)))
|
FbLaneCase1((n)>>1,a,(o)+1)))
|
||||||
#define FbLaneCase4(n,a,o) ((n) == 0x0f ? \
|
#define FbLaneCase4(n,a,o) ((n) == 0x0f ? \
|
||||||
(*(CARD32 *) ((a)+FbPatternOffset(o,CARD32)) = \
|
WRITE((CARD32 *) ((a)+FbPatternOffset(o,CARD32)), \
|
||||||
fgxor) : \
|
fgxor) : \
|
||||||
((void)FbLaneCase2((n)&3,a,o), \
|
((void)FbLaneCase2((n)&3,a,o), \
|
||||||
FbLaneCase2((n)>>2,a,(o)+2)))
|
FbLaneCase2((n)>>2,a,(o)+2)))
|
||||||
|
@ -588,6 +621,32 @@ extern WindowPtr *WindowTable;
|
||||||
#define FB_SCREEN_PRIVATE
|
#define FB_SCREEN_PRIVATE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Framebuffer access wrapper */
|
||||||
|
typedef FbBits (*ReadMemoryProcPtr)(const void *src, int size);
|
||||||
|
typedef void (*WriteMemoryProcPtr)(void *dst, FbBits value, int size);
|
||||||
|
typedef void (*SetupWrapProcPtr)(ReadMemoryProcPtr *pRead,
|
||||||
|
WriteMemoryProcPtr *pWrite,
|
||||||
|
DrawablePtr pDraw);
|
||||||
|
typedef void (*FinishWrapProcPtr)(DrawablePtr pDraw);
|
||||||
|
|
||||||
|
#ifdef FB_ACCESS_WRAPPER
|
||||||
|
|
||||||
|
#define fbPrepareAccess(pDraw) \
|
||||||
|
fbGetScreenPrivate((pDraw)->pScreen)->setupWrap( \
|
||||||
|
&wfbReadMemory, \
|
||||||
|
&wfbWriteMemory, \
|
||||||
|
(pDraw))
|
||||||
|
#define fbFinishAccess(pDraw) \
|
||||||
|
fbGetScreenPrivate((pDraw)->pScreen)->finishWrap(pDraw)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define fbPrepareAccess(pPix)
|
||||||
|
#define fbFinishAccess(pDraw)
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef FB_SCREEN_PRIVATE
|
#ifdef FB_SCREEN_PRIVATE
|
||||||
extern int fbScreenPrivateIndex;
|
extern int fbScreenPrivateIndex;
|
||||||
extern int fbGetScreenPrivateIndex(void);
|
extern int fbGetScreenPrivateIndex(void);
|
||||||
|
@ -596,6 +655,10 @@ extern int fbGetScreenPrivateIndex(void);
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned char win32bpp; /* window bpp for 32-bpp images */
|
unsigned char win32bpp; /* window bpp for 32-bpp images */
|
||||||
unsigned char pix32bpp; /* pixmap bpp for 32-bpp images */
|
unsigned char pix32bpp; /* pixmap bpp for 32-bpp images */
|
||||||
|
#ifdef FB_ACCESS_WRAPPER
|
||||||
|
SetupWrapProcPtr setupWrap; /* driver hook to set pixmap access wrapping */
|
||||||
|
FinishWrapProcPtr finishWrap; /* driver hook to clean up pixmap access wrapping */
|
||||||
|
#endif
|
||||||
} FbScreenPrivRec, *FbScreenPrivPtr;
|
} FbScreenPrivRec, *FbScreenPrivPtr;
|
||||||
|
|
||||||
#define fbGetScreenPrivate(pScreen) ((FbScreenPrivPtr) \
|
#define fbGetScreenPrivate(pScreen) ((FbScreenPrivPtr) \
|
||||||
|
@ -674,6 +737,7 @@ typedef struct {
|
||||||
(xoff) = __fbPixOffXPix(_pPix); \
|
(xoff) = __fbPixOffXPix(_pPix); \
|
||||||
(yoff) = __fbPixOffYPix(_pPix); \
|
(yoff) = __fbPixOffYPix(_pPix); \
|
||||||
} \
|
} \
|
||||||
|
fbPrepareAccess(pDrawable); \
|
||||||
(pointer) = (FbBits *) _pPix->devPrivate.ptr; \
|
(pointer) = (FbBits *) _pPix->devPrivate.ptr; \
|
||||||
(stride) = ((int) _pPix->devKind) / sizeof (FbBits); (void)(stride); \
|
(stride) = ((int) _pPix->devKind) / sizeof (FbBits); (void)(stride); \
|
||||||
(bpp) = _pPix->drawable.bitsPerPixel; (void)(bpp); \
|
(bpp) = _pPix->drawable.bitsPerPixel; (void)(bpp); \
|
||||||
|
@ -690,6 +754,7 @@ typedef struct {
|
||||||
(xoff) = __fbPixOffXPix(_pPix); \
|
(xoff) = __fbPixOffXPix(_pPix); \
|
||||||
(yoff) = __fbPixOffYPix(_pPix); \
|
(yoff) = __fbPixOffYPix(_pPix); \
|
||||||
} \
|
} \
|
||||||
|
fbPrepareAccess(pDrawable); \
|
||||||
(pointer) = (FbStip *) _pPix->devPrivate.ptr; \
|
(pointer) = (FbStip *) _pPix->devPrivate.ptr; \
|
||||||
(stride) = ((int) _pPix->devKind) / sizeof (FbStip); (void)(stride); \
|
(stride) = ((int) _pPix->devKind) / sizeof (FbStip); (void)(stride); \
|
||||||
(bpp) = _pPix->drawable.bitsPerPixel; (void)(bpp); \
|
(bpp) = _pPix->drawable.bitsPerPixel; (void)(bpp); \
|
||||||
|
@ -1738,6 +1803,30 @@ fbSetupScreen(ScreenPtr pScreen,
|
||||||
int width, /* pixel width of frame buffer */
|
int width, /* pixel width of frame buffer */
|
||||||
int bpp); /* bits per pixel of frame buffer */
|
int bpp); /* bits per pixel of frame buffer */
|
||||||
|
|
||||||
|
Bool
|
||||||
|
wfbFinishScreenInit(ScreenPtr pScreen,
|
||||||
|
pointer pbits,
|
||||||
|
int xsize,
|
||||||
|
int ysize,
|
||||||
|
int dpix,
|
||||||
|
int dpiy,
|
||||||
|
int width,
|
||||||
|
int bpp,
|
||||||
|
SetupWrapProcPtr setupWrap,
|
||||||
|
FinishWrapProcPtr finishWrap);
|
||||||
|
|
||||||
|
Bool
|
||||||
|
wfbScreenInit(ScreenPtr pScreen,
|
||||||
|
pointer pbits,
|
||||||
|
int xsize,
|
||||||
|
int ysize,
|
||||||
|
int dpix,
|
||||||
|
int dpiy,
|
||||||
|
int width,
|
||||||
|
int bpp,
|
||||||
|
SetupWrapProcPtr setupWrap,
|
||||||
|
FinishWrapProcPtr finishWrap);
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
fbFinishScreenInit(ScreenPtr pScreen,
|
fbFinishScreenInit(ScreenPtr pScreen,
|
||||||
pointer pbits,
|
pointer pbits,
|
||||||
|
@ -1994,6 +2083,11 @@ fbReplicatePixel (Pixel p, int bpp);
|
||||||
void
|
void
|
||||||
fbReduceRasterOp (int rop, FbBits fg, FbBits pm, FbBits *andp, FbBits *xorp);
|
fbReduceRasterOp (int rop, FbBits fg, FbBits pm, FbBits *andp, FbBits *xorp);
|
||||||
|
|
||||||
|
#ifdef FB_ACCESS_WRAPPER
|
||||||
|
extern ReadMemoryProcPtr wfbReadMemory;
|
||||||
|
extern WriteMemoryProcPtr wfbWriteMemory;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* fbwindow.c
|
* fbwindow.c
|
||||||
*/
|
*/
|
||||||
|
|
74
fb/fb24_32.c
74
fb/fb24_32.c
|
@ -38,18 +38,18 @@
|
||||||
* by reading/writing aligned CARD32s where it's easy
|
* by reading/writing aligned CARD32s where it's easy
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define Get8(a) ((CARD32) *(a))
|
#define Get8(a) ((CARD32) READ(a))
|
||||||
|
|
||||||
#if BITMAP_BIT_ORDER == MSBFirst
|
#if BITMAP_BIT_ORDER == MSBFirst
|
||||||
#define Get24(a) ((Get8(a) << 16) | (Get8((a)+1) << 8) | Get8((a)+2))
|
#define Get24(a) ((Get8(a) << 16) | (Get8((a)+1) << 8) | Get8((a)+2))
|
||||||
#define Put24(a,p) (((a)[0] = (CARD8) ((p) >> 16)), \
|
#define Put24(a,p) ((WRITE((a+0), (CARD8) ((p) >> 16))), \
|
||||||
((a)[1] = (CARD8) ((p) >> 8)), \
|
(WRITE((a+1), (CARD8) ((p) >> 8))), \
|
||||||
((a)[2] = (CARD8) (p)))
|
(WRITE((a+2), (CARD8) (p))))
|
||||||
#else
|
#else
|
||||||
#define Get24(a) (Get8(a) | (Get8((a)+1) << 8) | (Get8((a)+2)<<16))
|
#define Get24(a) (Get8(a) | (Get8((a)+1) << 8) | (Get8((a)+2)<<16))
|
||||||
#define Put24(a,p) (((a)[0] = (CARD8) (p)), \
|
#define Put24(a,p) ((WRITE((a+0), (CARD8) (p))), \
|
||||||
((a)[1] = (CARD8) ((p) >> 8)), \
|
(WRITE((a+1), (CARD8) ((p) >> 8))), \
|
||||||
((a)[2] = (CARD8) ((p) >> 16)))
|
(WRITE((a+2), (CARD8) ((p) >> 16))))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef void (*fb24_32BltFunc) (CARD8 *srcLine,
|
typedef void (*fb24_32BltFunc) (CARD8 *srcLine,
|
||||||
|
@ -106,7 +106,7 @@ fb24_32BltDown (CARD8 *srcLine,
|
||||||
while (((long) dst & 3) && w)
|
while (((long) dst & 3) && w)
|
||||||
{
|
{
|
||||||
w--;
|
w--;
|
||||||
pixel = *src++;
|
pixel = READ(src++);
|
||||||
pixel = FbDoDestInvarientMergeRop(pixel);
|
pixel = FbDoDestInvarientMergeRop(pixel);
|
||||||
Put24 (dst, pixel);
|
Put24 (dst, pixel);
|
||||||
dst += 3;
|
dst += 3;
|
||||||
|
@ -115,35 +115,35 @@ fb24_32BltDown (CARD8 *srcLine,
|
||||||
while (w >= 4)
|
while (w >= 4)
|
||||||
{
|
{
|
||||||
CARD32 s0, s1;
|
CARD32 s0, s1;
|
||||||
s0 = *src++;
|
s0 = READ(src++);
|
||||||
s0 = FbDoDestInvarientMergeRop(s0);
|
s0 = FbDoDestInvarientMergeRop(s0);
|
||||||
s1 = *src++;
|
s1 = READ(src++);
|
||||||
s1 = FbDoDestInvarientMergeRop(s1);
|
s1 = FbDoDestInvarientMergeRop(s1);
|
||||||
#if BITMAP_BIT_ORDER == LSBFirst
|
#if BITMAP_BIT_ORDER == LSBFirst
|
||||||
*(CARD32 *)(dst) = (s0 & 0xffffff) | (s1 << 24);
|
WRITE((CARD32 *)dst, (s0 & 0xffffff) | (s1 << 24));
|
||||||
#else
|
#else
|
||||||
*(CARD32 *)(dst) = (s0 << 8) | ((s1 & 0xffffff) >> 16);
|
WRITE((CARD32 *)dst, (s0 << 8) | ((s1 & 0xffffff) >> 16));
|
||||||
#endif
|
#endif
|
||||||
s0 = *src++;
|
s0 = READ(src++);
|
||||||
s0 = FbDoDestInvarientMergeRop(s0);
|
s0 = FbDoDestInvarientMergeRop(s0);
|
||||||
#if BITMAP_BIT_ORDER == LSBFirst
|
#if BITMAP_BIT_ORDER == LSBFirst
|
||||||
*(CARD32 *)(dst+4) = ((s1 & 0xffffff) >> 8) | (s0 << 16);
|
WRITE((CARD32 *)(dst+4), ((s1 & 0xffffff) >> 8) | (s0 << 16));
|
||||||
#else
|
#else
|
||||||
*(CARD32 *)(dst+4) = (s1 << 16) | ((s0 & 0xffffff) >> 8);
|
WRITE((CARD32 *)(dst+4), (s1 << 16) | ((s0 & 0xffffff) >> 8));
|
||||||
#endif
|
#endif
|
||||||
s1 = *src++;
|
s1 = READ(src++);
|
||||||
s1 = FbDoDestInvarientMergeRop(s1);
|
s1 = FbDoDestInvarientMergeRop(s1);
|
||||||
#if BITMAP_BIT_ORDER == LSBFirst
|
#if BITMAP_BIT_ORDER == LSBFirst
|
||||||
*(CARD32 *)(dst+8) = ((s0 & 0xffffff) >> 16) | (s1 << 8);
|
WRITE((CARD32 *)(dst+8), ((s0 & 0xffffff) >> 16) | (s1 << 8));
|
||||||
#else
|
#else
|
||||||
*(CARD32 *)(dst+8) = (s0 << 24) | (s1 & 0xffffff);
|
WRITE((CARD32 *)(dst+8), (s0 << 24) | (s1 & 0xffffff));
|
||||||
#endif
|
#endif
|
||||||
dst += 12;
|
dst += 12;
|
||||||
w -= 4;
|
w -= 4;
|
||||||
}
|
}
|
||||||
while (w--)
|
while (w--)
|
||||||
{
|
{
|
||||||
pixel = *src++;
|
pixel = READ(src++);
|
||||||
pixel = FbDoDestInvarientMergeRop(pixel);
|
pixel = FbDoDestInvarientMergeRop(pixel);
|
||||||
Put24 (dst, pixel);
|
Put24 (dst, pixel);
|
||||||
dst += 3;
|
dst += 3;
|
||||||
|
@ -153,7 +153,7 @@ fb24_32BltDown (CARD8 *srcLine,
|
||||||
{
|
{
|
||||||
while (w--)
|
while (w--)
|
||||||
{
|
{
|
||||||
pixel = *src++;
|
pixel = READ(src++);
|
||||||
dpixel = Get24 (dst);
|
dpixel = Get24 (dst);
|
||||||
pixel = FbDoMergeRop(pixel, dpixel);
|
pixel = FbDoMergeRop(pixel, dpixel);
|
||||||
Put24 (dst, pixel);
|
Put24 (dst, pixel);
|
||||||
|
@ -205,40 +205,40 @@ fb24_32BltUp (CARD8 *srcLine,
|
||||||
w--;
|
w--;
|
||||||
pixel = Get24(src);
|
pixel = Get24(src);
|
||||||
src += 3;
|
src += 3;
|
||||||
*dst++ = FbDoDestInvarientMergeRop(pixel);
|
WRITE(dst++, FbDoDestInvarientMergeRop(pixel));
|
||||||
}
|
}
|
||||||
/* Do four aligned pixels at a time */
|
/* Do four aligned pixels at a time */
|
||||||
while (w >= 4)
|
while (w >= 4)
|
||||||
{
|
{
|
||||||
CARD32 s0, s1;
|
CARD32 s0, s1;
|
||||||
|
|
||||||
s0 = *(CARD32 *)(src);
|
s0 = READ((CARD32 *)src);
|
||||||
#if BITMAP_BIT_ORDER == LSBFirst
|
#if BITMAP_BIT_ORDER == LSBFirst
|
||||||
pixel = s0 & 0xffffff;
|
pixel = s0 & 0xffffff;
|
||||||
#else
|
#else
|
||||||
pixel = s0 >> 8;
|
pixel = s0 >> 8;
|
||||||
#endif
|
#endif
|
||||||
*dst++ = FbDoDestInvarientMergeRop(pixel);
|
WRITE(dst++, FbDoDestInvarientMergeRop(pixel));
|
||||||
s1 = *(CARD32 *)(src+4);
|
s1 = READ((CARD32 *)(src+4));
|
||||||
#if BITMAP_BIT_ORDER == LSBFirst
|
#if BITMAP_BIT_ORDER == LSBFirst
|
||||||
pixel = (s0 >> 24) | ((s1 << 8) & 0xffffff);
|
pixel = (s0 >> 24) | ((s1 << 8) & 0xffffff);
|
||||||
#else
|
#else
|
||||||
pixel = ((s0 << 16) & 0xffffff) | (s1 >> 16);
|
pixel = ((s0 << 16) & 0xffffff) | (s1 >> 16);
|
||||||
#endif
|
#endif
|
||||||
*dst++ = FbDoDestInvarientMergeRop(pixel);
|
WRITE(dst++, FbDoDestInvarientMergeRop(pixel));
|
||||||
s0 = *(CARD32 *)(src+8);
|
s0 = READ((CARD32 *)(src+8));
|
||||||
#if BITMAP_BIT_ORDER == LSBFirst
|
#if BITMAP_BIT_ORDER == LSBFirst
|
||||||
pixel = (s1 >> 16) | ((s0 << 16) & 0xffffff);
|
pixel = (s1 >> 16) | ((s0 << 16) & 0xffffff);
|
||||||
#else
|
#else
|
||||||
pixel = ((s1 << 8) & 0xffffff) | (s0 >> 24);
|
pixel = ((s1 << 8) & 0xffffff) | (s0 >> 24);
|
||||||
#endif
|
#endif
|
||||||
*dst++ = FbDoDestInvarientMergeRop(pixel);
|
WRITE(dst++, FbDoDestInvarientMergeRop(pixel));
|
||||||
#if BITMAP_BIT_ORDER == LSBFirst
|
#if BITMAP_BIT_ORDER == LSBFirst
|
||||||
pixel = s0 >> 8;
|
pixel = s0 >> 8;
|
||||||
#else
|
#else
|
||||||
pixel = s0 & 0xffffff;
|
pixel = s0 & 0xffffff;
|
||||||
#endif
|
#endif
|
||||||
*dst++ = FbDoDestInvarientMergeRop(pixel);
|
WRITE(dst++, FbDoDestInvarientMergeRop(pixel));
|
||||||
src += 12;
|
src += 12;
|
||||||
w -= 4;
|
w -= 4;
|
||||||
}
|
}
|
||||||
|
@ -247,7 +247,7 @@ fb24_32BltUp (CARD8 *srcLine,
|
||||||
w--;
|
w--;
|
||||||
pixel = Get24(src);
|
pixel = Get24(src);
|
||||||
src += 3;
|
src += 3;
|
||||||
*dst++ = FbDoDestInvarientMergeRop(pixel);
|
WRITE(dst++, FbDoDestInvarientMergeRop(pixel));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -256,7 +256,7 @@ fb24_32BltUp (CARD8 *srcLine,
|
||||||
{
|
{
|
||||||
pixel = Get24(src);
|
pixel = Get24(src);
|
||||||
src += 3;
|
src += 3;
|
||||||
*dst = FbDoMergeRop(pixel, *dst);
|
WRITE(dst, FbDoMergeRop(pixel, READ(dst)));
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -305,6 +305,8 @@ fb24_32GetSpans(DrawablePtr pDrawable,
|
||||||
ppt++;
|
ppt++;
|
||||||
pwidth++;
|
pwidth++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -366,6 +368,8 @@ fb24_32SetSpans (DrawablePtr pDrawable,
|
||||||
ppt++;
|
ppt++;
|
||||||
pwidth++;
|
pwidth++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -429,6 +433,8 @@ fb24_32PutZImage (DrawablePtr pDrawable,
|
||||||
alu,
|
alu,
|
||||||
pm);
|
pm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -463,6 +469,8 @@ fb24_32GetImage (DrawablePtr pDrawable,
|
||||||
fb24_32BltUp (src + (y + srcYoff) * srcStride, srcStride, x + srcXoff,
|
fb24_32BltUp (src + (y + srcYoff) * srcStride, srcStride, x + srcXoff,
|
||||||
(CARD8 *) d, dstStride, 0,
|
(CARD8 *) d, dstStride, 0,
|
||||||
w, h, GXcopy, pm);
|
w, h, GXcopy, pm);
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -519,6 +527,9 @@ fb24_32CopyMtoN (DrawablePtr pSrcDrawable,
|
||||||
pPriv->pm);
|
pPriv->pm);
|
||||||
pbox++;
|
pbox++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pSrcDrawable);
|
||||||
|
fbFinishAccess (pDstDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
PixmapPtr
|
PixmapPtr
|
||||||
|
@ -563,6 +574,9 @@ fb24_32ReformatTile(PixmapPtr pOldTile, int bitsPerPixel)
|
||||||
GXcopy,
|
GXcopy,
|
||||||
FB_ALLONES);
|
FB_ALLONES);
|
||||||
|
|
||||||
|
fbFinishAccess (&pOldTile->drawable);
|
||||||
|
fbFinishAccess (&pNewTile->drawable);
|
||||||
|
|
||||||
return pNewTile;
|
return pNewTile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -90,3 +90,8 @@ fbAllocatePrivates(ScreenPtr pScreen, int *pGCIndex)
|
||||||
#endif
|
#endif
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FB_ACCESS_WRAPPER
|
||||||
|
ReadMemoryProcPtr wfbReadMemory;
|
||||||
|
WriteMemoryProcPtr wfbWriteMemory;
|
||||||
|
#endif
|
||||||
|
|
|
@ -109,6 +109,7 @@ fbPolyArc (DrawablePtr pDrawable,
|
||||||
miPolyArc(pDrawable, pGC, 1, parcs);
|
miPolyArc(pDrawable, pGC, 1, parcs);
|
||||||
parcs++;
|
parcs++;
|
||||||
}
|
}
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
|
16
fb/fbbits.c
16
fb/fbbits.c
|
@ -103,14 +103,14 @@
|
||||||
#define BITSUNIT BYTE
|
#define BITSUNIT BYTE
|
||||||
#define BITSMUL 3
|
#define BITSMUL 3
|
||||||
|
|
||||||
#define FbDoTypeStore(b,t,x,s) (*((t *) (b)) = (x) >> (s))
|
#define FbDoTypeStore(b,t,x,s) WRITE(((t *) (b)), (x) >> (s))
|
||||||
#define FbDoTypeRRop(b,t,a,x,s) (*((t *) (b)) = FbDoRRop(*((t *) (b)),\
|
#define FbDoTypeRRop(b,t,a,x,s) WRITE((t *) (b), FbDoRRop(READ((t *) (b)),\
|
||||||
(a) >> (s), \
|
(a) >> (s), \
|
||||||
(x) >> (s)))
|
(x) >> (s)))
|
||||||
#define FbDoTypeMaskRRop(b,t,a,x,m,s) (*((t *) (b)) = FbDoMaskRRop(*((t *) (b)),\
|
#define FbDoTypeMaskRRop(b,t,a,x,m,s) WRITE((t *) (b), FbDoMaskRRop(READ((t *) (b)),\
|
||||||
(a) >> (s), \
|
(a) >> (s), \
|
||||||
(x) >> (s), \
|
(x) >> (s), \
|
||||||
(m) >> (s))
|
(m) >> (s)))
|
||||||
#if BITMAP_BIT_ORDER == LSBFirst
|
#if BITMAP_BIT_ORDER == LSBFirst
|
||||||
#define BITSSTORE(b,x) ((unsigned long) (b) & 1 ? \
|
#define BITSSTORE(b,x) ((unsigned long) (b) & 1 ? \
|
||||||
(FbDoTypeStore (b, CARD8, x, 0), \
|
(FbDoTypeStore (b, CARD8, x, 0), \
|
||||||
|
|
35
fb/fbbits.h
35
fb/fbbits.h
|
@ -42,13 +42,13 @@
|
||||||
#ifdef BITSSTORE
|
#ifdef BITSSTORE
|
||||||
#define STORE(b,x) BITSSTORE(b,x)
|
#define STORE(b,x) BITSSTORE(b,x)
|
||||||
#else
|
#else
|
||||||
#define STORE(b,x) (*(b) = (x))
|
#define STORE(b,x) WRITE((b), (x))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BITSRROP
|
#ifdef BITSRROP
|
||||||
#define RROP(b,a,x) BITSRROP(b,a,x)
|
#define RROP(b,a,x) BITSRROP(b,a,x)
|
||||||
#else
|
#else
|
||||||
#define RROP(b,a,x) (*(b) = FbDoRRop (*(b), (a), (x)))
|
#define RROP(b,a,x) WRITE((b), FbDoRRop (READ(b), (a), (x)))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BITSUNIT
|
#ifdef BITSUNIT
|
||||||
|
@ -119,6 +119,8 @@ BRESSOLID (DrawablePtr pDrawable,
|
||||||
e += e3;
|
e += e3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -263,6 +265,8 @@ onOffOdd:
|
||||||
dashlen = len;
|
dashlen = len;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -541,18 +545,18 @@ ARC (FbBits *dst,
|
||||||
# define WRITE_ADDR4(n) ((n))
|
# define WRITE_ADDR4(n) ((n))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define WRITE1(d,n,fg) ((d)[WRITE_ADDR1(n)] = (BITS) (fg))
|
#define WRITE1(d,n,fg) WRITE(d + WRITE_ADDR1(n), (BITS) (fg))
|
||||||
|
|
||||||
#ifdef BITS2
|
#ifdef BITS2
|
||||||
# define WRITE2(d,n,fg) (*((BITS2 *) &((d)[WRITE_ADDR2(n)])) = (BITS2) (fg))
|
# define WRITE2(d,n,fg) WRITE((BITS2 *) &((d)[WRITE_ADDR2(n)]), (BITS2) (fg))
|
||||||
#else
|
#else
|
||||||
# define WRITE2(d,n,fg) WRITE1(d,(n)+1,WRITE1(d,n,fg))
|
# define WRITE2(d,n,fg) (WRITE1(d,n,fg), WRITE1(d,(n)+1,fg))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BITS4
|
#ifdef BITS4
|
||||||
# define WRITE4(d,n,fg) (*((BITS4 *) &((d)[WRITE_ADDR4(n)])) = (BITS4) (fg))
|
# define WRITE4(d,n,fg) WRITE((BITS4 *) &((d)[WRITE_ADDR4(n)]), (BITS4) (fg))
|
||||||
#else
|
#else
|
||||||
# define WRITE4(d,n,fg) WRITE2(d,(n)+2,WRITE2(d,n,fg))
|
# define WRITE4(d,n,fg) (WRITE2(d,n,fg), WRITE2(d,(n)+2,fg))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -710,8 +714,10 @@ POLYLINE (DrawablePtr pDrawable,
|
||||||
intToX(pt2) + xoff, intToY(pt2) + yoff,
|
intToX(pt2) + xoff, intToY(pt2) + yoff,
|
||||||
npt == 0 && pGC->capStyle != CapNotLast,
|
npt == 0 && pGC->capStyle != CapNotLast,
|
||||||
&dashoffset);
|
&dashoffset);
|
||||||
if (!npt)
|
if (!npt) {
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
pt1 = pt2;
|
pt1 = pt2;
|
||||||
pt2 = *pts++;
|
pt2 = *pts++;
|
||||||
npt--;
|
npt--;
|
||||||
|
@ -776,6 +782,7 @@ POLYLINE (DrawablePtr pDrawable,
|
||||||
{
|
{
|
||||||
RROP(bits,and,xor);
|
RROP(bits,and,xor);
|
||||||
}
|
}
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
pt1 = pt2;
|
pt1 = pt2;
|
||||||
|
@ -786,6 +793,8 @@ POLYLINE (DrawablePtr pDrawable,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -883,20 +892,20 @@ POLYSEGMENT (DrawablePtr pDrawable,
|
||||||
FbMaskBits (dstX, width, startmask, nmiddle, endmask);
|
FbMaskBits (dstX, width, startmask, nmiddle, endmask);
|
||||||
if (startmask)
|
if (startmask)
|
||||||
{
|
{
|
||||||
*dstLine = FbDoMaskRRop (*dstLine, andBits, xorBits, startmask);
|
WRITE(dstLine, FbDoMaskRRop (READ(dstLine), andBits, xorBits, startmask));
|
||||||
dstLine++;
|
dstLine++;
|
||||||
}
|
}
|
||||||
if (!andBits)
|
if (!andBits)
|
||||||
while (nmiddle--)
|
while (nmiddle--)
|
||||||
*dstLine++ = xorBits;
|
WRITE(dstLine++, xorBits);
|
||||||
else
|
else
|
||||||
while (nmiddle--)
|
while (nmiddle--)
|
||||||
{
|
{
|
||||||
*dstLine = FbDoRRop (*dstLine, andBits, xorBits);
|
WRITE(dstLine, FbDoRRop (READ(dstLine), andBits, xorBits));
|
||||||
dstLine++;
|
dstLine++;
|
||||||
}
|
}
|
||||||
if (endmask)
|
if (endmask)
|
||||||
*dstLine = FbDoMaskRRop (*dstLine, andBits, xorBits, endmask);
|
WRITE(dstLine, FbDoMaskRRop (READ(dstLine), andBits, xorBits, endmask));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -950,6 +959,8 @@ POLYSEGMENT (DrawablePtr pDrawable,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
138
fb/fbblt.c
138
fb/fbblt.c
|
@ -92,10 +92,10 @@ fbBlt (FbBits *srcLine,
|
||||||
|
|
||||||
if (!upsidedown)
|
if (!upsidedown)
|
||||||
for (i = 0; i < height; i++)
|
for (i = 0; i < height; i++)
|
||||||
memcpy(dst + i * dstStride, src + i * srcStride, width);
|
MEMCPY_WRAPPED(dst + i * dstStride, src + i * srcStride, width);
|
||||||
else
|
else
|
||||||
for (i = height - 1; i >= 0; i--)
|
for (i = height - 1; i >= 0; i--)
|
||||||
memcpy(dst + i * dstStride, src + i * srcStride, width);
|
MEMCPY_WRAPPED(dst + i * dstStride, src + i * srcStride, width);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -137,7 +137,7 @@ fbBlt (FbBits *srcLine,
|
||||||
{
|
{
|
||||||
if (endmask)
|
if (endmask)
|
||||||
{
|
{
|
||||||
bits = *--src;
|
bits = READ(--src);
|
||||||
--dst;
|
--dst;
|
||||||
FbDoRightMaskByteMergeRop(dst, bits, endbyte, endmask);
|
FbDoRightMaskByteMergeRop(dst, bits, endbyte, endmask);
|
||||||
}
|
}
|
||||||
|
@ -145,20 +145,20 @@ fbBlt (FbBits *srcLine,
|
||||||
if (destInvarient)
|
if (destInvarient)
|
||||||
{
|
{
|
||||||
while (n--)
|
while (n--)
|
||||||
*--dst = FbDoDestInvarientMergeRop(*--src);
|
WRITE(--dst, FbDoDestInvarientMergeRop(READ(--src)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
bits = *--src;
|
bits = READ(--src);
|
||||||
--dst;
|
--dst;
|
||||||
*dst = FbDoMergeRop (bits, *dst);
|
WRITE(dst, FbDoMergeRop (bits, READ(dst)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (startmask)
|
if (startmask)
|
||||||
{
|
{
|
||||||
bits = *--src;
|
bits = READ(--src);
|
||||||
--dst;
|
--dst;
|
||||||
FbDoLeftMaskByteMergeRop(dst, bits, startbyte, startmask);
|
FbDoLeftMaskByteMergeRop(dst, bits, startbyte, startmask);
|
||||||
}
|
}
|
||||||
|
@ -167,7 +167,7 @@ fbBlt (FbBits *srcLine,
|
||||||
{
|
{
|
||||||
if (startmask)
|
if (startmask)
|
||||||
{
|
{
|
||||||
bits = *src++;
|
bits = READ(src++);
|
||||||
FbDoLeftMaskByteMergeRop(dst, bits, startbyte, startmask);
|
FbDoLeftMaskByteMergeRop(dst, bits, startbyte, startmask);
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
|
@ -198,20 +198,20 @@ fbBlt (FbBits *srcLine,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
while (n--)
|
while (n--)
|
||||||
*dst++ = FbDoDestInvarientMergeRop(*src++);
|
WRITE(dst++, FbDoDestInvarientMergeRop(READ(src++)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
bits = *src++;
|
bits = READ(src++);
|
||||||
*dst = FbDoMergeRop (bits, *dst);
|
WRITE(dst, FbDoMergeRop (bits, READ(dst)));
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (endmask)
|
if (endmask)
|
||||||
{
|
{
|
||||||
bits = *src;
|
bits = READ(src);
|
||||||
FbDoRightMaskByteMergeRop(dst, bits, endbyte, endmask);
|
FbDoRightMaskByteMergeRop(dst, bits, endbyte, endmask);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -240,13 +240,13 @@ fbBlt (FbBits *srcLine,
|
||||||
if (reverse)
|
if (reverse)
|
||||||
{
|
{
|
||||||
if (srcX < dstX)
|
if (srcX < dstX)
|
||||||
bits1 = *--src;
|
bits1 = READ(--src);
|
||||||
if (endmask)
|
if (endmask)
|
||||||
{
|
{
|
||||||
bits = FbScrRight(bits1, rightShift);
|
bits = FbScrRight(bits1, rightShift);
|
||||||
if (FbScrRight(endmask, leftShift))
|
if (FbScrRight(endmask, leftShift))
|
||||||
{
|
{
|
||||||
bits1 = *--src;
|
bits1 = READ(--src);
|
||||||
bits |= FbScrLeft(bits1, leftShift);
|
bits |= FbScrLeft(bits1, leftShift);
|
||||||
}
|
}
|
||||||
--dst;
|
--dst;
|
||||||
|
@ -258,10 +258,10 @@ fbBlt (FbBits *srcLine,
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
bits = FbScrRight(bits1, rightShift);
|
bits = FbScrRight(bits1, rightShift);
|
||||||
bits1 = *--src;
|
bits1 = READ(--src);
|
||||||
bits |= FbScrLeft(bits1, leftShift);
|
bits |= FbScrLeft(bits1, leftShift);
|
||||||
--dst;
|
--dst;
|
||||||
*dst = FbDoDestInvarientMergeRop(bits);
|
WRITE(dst, FbDoDestInvarientMergeRop(bits));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -269,10 +269,10 @@ fbBlt (FbBits *srcLine,
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
bits = FbScrRight(bits1, rightShift);
|
bits = FbScrRight(bits1, rightShift);
|
||||||
bits1 = *--src;
|
bits1 = READ(--src);
|
||||||
bits |= FbScrLeft(bits1, leftShift);
|
bits |= FbScrLeft(bits1, leftShift);
|
||||||
--dst;
|
--dst;
|
||||||
*dst = FbDoMergeRop(bits, *dst);
|
WRITE(dst, FbDoMergeRop(bits, READ(dst)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (startmask)
|
if (startmask)
|
||||||
|
@ -280,7 +280,7 @@ fbBlt (FbBits *srcLine,
|
||||||
bits = FbScrRight(bits1, rightShift);
|
bits = FbScrRight(bits1, rightShift);
|
||||||
if (FbScrRight(startmask, leftShift))
|
if (FbScrRight(startmask, leftShift))
|
||||||
{
|
{
|
||||||
bits1 = *--src;
|
bits1 = READ(--src);
|
||||||
bits |= FbScrLeft(bits1, leftShift);
|
bits |= FbScrLeft(bits1, leftShift);
|
||||||
}
|
}
|
||||||
--dst;
|
--dst;
|
||||||
|
@ -290,13 +290,13 @@ fbBlt (FbBits *srcLine,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (srcX > dstX)
|
if (srcX > dstX)
|
||||||
bits1 = *src++;
|
bits1 = READ(src++);
|
||||||
if (startmask)
|
if (startmask)
|
||||||
{
|
{
|
||||||
bits = FbScrLeft(bits1, leftShift);
|
bits = FbScrLeft(bits1, leftShift);
|
||||||
if (FbScrLeft(startmask, rightShift))
|
if (FbScrLeft(startmask, rightShift))
|
||||||
{
|
{
|
||||||
bits1 = *src++;
|
bits1 = READ(src++);
|
||||||
bits |= FbScrRight(bits1, rightShift);
|
bits |= FbScrRight(bits1, rightShift);
|
||||||
}
|
}
|
||||||
FbDoLeftMaskByteMergeRop (dst, bits, startbyte, startmask);
|
FbDoLeftMaskByteMergeRop (dst, bits, startbyte, startmask);
|
||||||
|
@ -308,9 +308,9 @@ fbBlt (FbBits *srcLine,
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
bits = FbScrLeft(bits1, leftShift);
|
bits = FbScrLeft(bits1, leftShift);
|
||||||
bits1 = *src++;
|
bits1 = READ(src++);
|
||||||
bits |= FbScrRight(bits1, rightShift);
|
bits |= FbScrRight(bits1, rightShift);
|
||||||
*dst = FbDoDestInvarientMergeRop(bits);
|
WRITE(dst, FbDoDestInvarientMergeRop(bits));
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -319,9 +319,9 @@ fbBlt (FbBits *srcLine,
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
bits = FbScrLeft(bits1, leftShift);
|
bits = FbScrLeft(bits1, leftShift);
|
||||||
bits1 = *src++;
|
bits1 = READ(src++);
|
||||||
bits |= FbScrRight(bits1, rightShift);
|
bits |= FbScrRight(bits1, rightShift);
|
||||||
*dst = FbDoMergeRop(bits, *dst);
|
WRITE(dst, FbDoMergeRop(bits, READ(dst)));
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -330,7 +330,7 @@ fbBlt (FbBits *srcLine,
|
||||||
bits = FbScrLeft(bits1, leftShift);
|
bits = FbScrLeft(bits1, leftShift);
|
||||||
if (FbScrLeft(endmask, rightShift))
|
if (FbScrLeft(endmask, rightShift))
|
||||||
{
|
{
|
||||||
bits1 = *src;
|
bits1 = READ(src);
|
||||||
bits |= FbScrRight(bits1, rightShift);
|
bits |= FbScrRight(bits1, rightShift);
|
||||||
}
|
}
|
||||||
FbDoRightMaskByteMergeRop (dst, bits, endbyte, endmask);
|
FbDoRightMaskByteMergeRop (dst, bits, endbyte, endmask);
|
||||||
|
@ -425,45 +425,45 @@ fbBlt24Line (FbBits *src,
|
||||||
{
|
{
|
||||||
if (endmask)
|
if (endmask)
|
||||||
{
|
{
|
||||||
bits = *--src;
|
bits = READ(--src);
|
||||||
--dst;
|
--dst;
|
||||||
*dst = FbDoMaskMergeRop (bits, *dst, mask & endmask);
|
WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask & endmask));
|
||||||
mask = FbPrev24Pix (mask);
|
mask = FbPrev24Pix (mask);
|
||||||
}
|
}
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
bits = *--src;
|
bits = READ(--src);
|
||||||
--dst;
|
--dst;
|
||||||
*dst = FbDoMaskMergeRop (bits, *dst, mask);
|
WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask));
|
||||||
mask = FbPrev24Pix (mask);
|
mask = FbPrev24Pix (mask);
|
||||||
}
|
}
|
||||||
if (startmask)
|
if (startmask)
|
||||||
{
|
{
|
||||||
bits = *--src;
|
bits = READ(--src);
|
||||||
--dst;
|
--dst;
|
||||||
*dst = FbDoMaskMergeRop(bits, *dst, mask & startmask);
|
WRITE(dst, FbDoMaskMergeRop(bits, READ(dst), mask & startmask));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (startmask)
|
if (startmask)
|
||||||
{
|
{
|
||||||
bits = *src++;
|
bits = READ(src++);
|
||||||
*dst = FbDoMaskMergeRop (bits, *dst, mask & startmask);
|
WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask & startmask));
|
||||||
dst++;
|
dst++;
|
||||||
mask = FbNext24Pix(mask);
|
mask = FbNext24Pix(mask);
|
||||||
}
|
}
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
bits = *src++;
|
bits = READ(src++);
|
||||||
*dst = FbDoMaskMergeRop (bits, *dst, mask);
|
WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask));
|
||||||
dst++;
|
dst++;
|
||||||
mask = FbNext24Pix(mask);
|
mask = FbNext24Pix(mask);
|
||||||
}
|
}
|
||||||
if (endmask)
|
if (endmask)
|
||||||
{
|
{
|
||||||
bits = *src;
|
bits = READ(src);
|
||||||
*dst = FbDoMaskMergeRop(bits, *dst, mask & endmask);
|
WRITE(dst, FbDoMaskMergeRop(bits, READ(dst), mask & endmask));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -484,26 +484,26 @@ fbBlt24Line (FbBits *src,
|
||||||
if (reverse)
|
if (reverse)
|
||||||
{
|
{
|
||||||
if (srcX < dstX)
|
if (srcX < dstX)
|
||||||
bits1 = *--src;
|
bits1 = READ(--src);
|
||||||
if (endmask)
|
if (endmask)
|
||||||
{
|
{
|
||||||
bits = FbScrRight(bits1, rightShift);
|
bits = FbScrRight(bits1, rightShift);
|
||||||
if (FbScrRight(endmask, leftShift))
|
if (FbScrRight(endmask, leftShift))
|
||||||
{
|
{
|
||||||
bits1 = *--src;
|
bits1 = READ(--src);
|
||||||
bits |= FbScrLeft(bits1, leftShift);
|
bits |= FbScrLeft(bits1, leftShift);
|
||||||
}
|
}
|
||||||
--dst;
|
--dst;
|
||||||
*dst = FbDoMaskMergeRop (bits, *dst, mask & endmask);
|
WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask & endmask));
|
||||||
mask = FbPrev24Pix(mask);
|
mask = FbPrev24Pix(mask);
|
||||||
}
|
}
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
bits = FbScrRight(bits1, rightShift);
|
bits = FbScrRight(bits1, rightShift);
|
||||||
bits1 = *--src;
|
bits1 = READ(--src);
|
||||||
bits |= FbScrLeft(bits1, leftShift);
|
bits |= FbScrLeft(bits1, leftShift);
|
||||||
--dst;
|
--dst;
|
||||||
*dst = FbDoMaskMergeRop(bits, *dst, mask);
|
WRITE(dst, FbDoMaskMergeRop(bits, READ(dst), mask));
|
||||||
mask = FbPrev24Pix(mask);
|
mask = FbPrev24Pix(mask);
|
||||||
}
|
}
|
||||||
if (startmask)
|
if (startmask)
|
||||||
|
@ -511,32 +511,32 @@ fbBlt24Line (FbBits *src,
|
||||||
bits = FbScrRight(bits1, rightShift);
|
bits = FbScrRight(bits1, rightShift);
|
||||||
if (FbScrRight(startmask, leftShift))
|
if (FbScrRight(startmask, leftShift))
|
||||||
{
|
{
|
||||||
bits1 = *--src;
|
bits1 = READ(--src);
|
||||||
bits |= FbScrLeft(bits1, leftShift);
|
bits |= FbScrLeft(bits1, leftShift);
|
||||||
}
|
}
|
||||||
--dst;
|
--dst;
|
||||||
*dst = FbDoMaskMergeRop (bits, *dst, mask & startmask);
|
WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask & startmask));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (srcX > dstX)
|
if (srcX > dstX)
|
||||||
bits1 = *src++;
|
bits1 = READ(src++);
|
||||||
if (startmask)
|
if (startmask)
|
||||||
{
|
{
|
||||||
bits = FbScrLeft(bits1, leftShift);
|
bits = FbScrLeft(bits1, leftShift);
|
||||||
bits1 = *src++;
|
bits1 = READ(src++);
|
||||||
bits |= FbScrRight(bits1, rightShift);
|
bits |= FbScrRight(bits1, rightShift);
|
||||||
*dst = FbDoMaskMergeRop (bits, *dst, mask & startmask);
|
WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask & startmask));
|
||||||
dst++;
|
dst++;
|
||||||
mask = FbNext24Pix(mask);
|
mask = FbNext24Pix(mask);
|
||||||
}
|
}
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
bits = FbScrLeft(bits1, leftShift);
|
bits = FbScrLeft(bits1, leftShift);
|
||||||
bits1 = *src++;
|
bits1 = READ(src++);
|
||||||
bits |= FbScrRight(bits1, rightShift);
|
bits |= FbScrRight(bits1, rightShift);
|
||||||
*dst = FbDoMaskMergeRop(bits, *dst, mask);
|
WRITE(dst, FbDoMaskMergeRop(bits, READ(dst), mask));
|
||||||
dst++;
|
dst++;
|
||||||
mask = FbNext24Pix(mask);
|
mask = FbNext24Pix(mask);
|
||||||
}
|
}
|
||||||
|
@ -545,10 +545,10 @@ fbBlt24Line (FbBits *src,
|
||||||
bits = FbScrLeft(bits1, leftShift);
|
bits = FbScrLeft(bits1, leftShift);
|
||||||
if (FbScrLeft(endmask, rightShift))
|
if (FbScrLeft(endmask, rightShift))
|
||||||
{
|
{
|
||||||
bits1 = *src;
|
bits1 = READ(src);
|
||||||
bits |= FbScrRight(bits1, rightShift);
|
bits |= FbScrRight(bits1, rightShift);
|
||||||
}
|
}
|
||||||
*dst = FbDoMaskMergeRop (bits, *dst, mask & endmask);
|
WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask & endmask));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -707,8 +707,8 @@ fbBltOdd (FbBits *srcLine,
|
||||||
{
|
{
|
||||||
if (startmask)
|
if (startmask)
|
||||||
{
|
{
|
||||||
bits = *src++;
|
bits = READ(src++);
|
||||||
*dst = FbDoMaskMergeRop (bits, *dst, startmask);
|
WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), startmask));
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
n = nmiddle;
|
n = nmiddle;
|
||||||
|
@ -716,8 +716,8 @@ fbBltOdd (FbBits *srcLine,
|
||||||
{
|
{
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
bits = *src++;
|
bits = READ(src++);
|
||||||
*dst = FbDoDestInvarientMergeRop(bits);
|
WRITE(dst, FbDoDestInvarientMergeRop(bits));
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -725,28 +725,28 @@ fbBltOdd (FbBits *srcLine,
|
||||||
{
|
{
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
bits = *src++;
|
bits = READ(src++);
|
||||||
*dst = FbDoMergeRop (bits, *dst);
|
WRITE(dst, FbDoMergeRop (bits, READ(dst)));
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (endmask)
|
if (endmask)
|
||||||
{
|
{
|
||||||
bits = *src;
|
bits = READ(src);
|
||||||
*dst = FbDoMaskMergeRop(bits, *dst, endmask);
|
WRITE(dst, FbDoMaskMergeRop(bits, READ(dst), endmask));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bits = 0;
|
bits = 0;
|
||||||
if (srcX > dstX)
|
if (srcX > dstX)
|
||||||
bits = *src++;
|
bits = READ(src++);
|
||||||
if (startmask)
|
if (startmask)
|
||||||
{
|
{
|
||||||
bits1 = FbScrLeft(bits, leftShift);
|
bits1 = FbScrLeft(bits, leftShift);
|
||||||
bits = *src++;
|
bits = READ(src++);
|
||||||
bits1 |= FbScrRight(bits, rightShift);
|
bits1 |= FbScrRight(bits, rightShift);
|
||||||
*dst = FbDoMaskMergeRop (bits1, *dst, startmask);
|
WRITE(dst, FbDoMaskMergeRop (bits1, READ(dst), startmask));
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
n = nmiddle;
|
n = nmiddle;
|
||||||
|
@ -755,9 +755,9 @@ fbBltOdd (FbBits *srcLine,
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
bits1 = FbScrLeft(bits, leftShift);
|
bits1 = FbScrLeft(bits, leftShift);
|
||||||
bits = *src++;
|
bits = READ(src++);
|
||||||
bits1 |= FbScrRight(bits, rightShift);
|
bits1 |= FbScrRight(bits, rightShift);
|
||||||
*dst = FbDoDestInvarientMergeRop(bits1);
|
WRITE(dst, FbDoDestInvarientMergeRop(bits1));
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -766,9 +766,9 @@ fbBltOdd (FbBits *srcLine,
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
bits1 = FbScrLeft(bits, leftShift);
|
bits1 = FbScrLeft(bits, leftShift);
|
||||||
bits = *src++;
|
bits = READ(src++);
|
||||||
bits1 |= FbScrRight(bits, rightShift);
|
bits1 |= FbScrRight(bits, rightShift);
|
||||||
*dst = FbDoMergeRop(bits1, *dst);
|
WRITE(dst, FbDoMergeRop(bits1, READ(dst)));
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -777,10 +777,10 @@ fbBltOdd (FbBits *srcLine,
|
||||||
bits1 = FbScrLeft(bits, leftShift);
|
bits1 = FbScrLeft(bits, leftShift);
|
||||||
if (FbScrLeft(endmask, rightShift))
|
if (FbScrLeft(endmask, rightShift))
|
||||||
{
|
{
|
||||||
bits = *src;
|
bits = READ(src);
|
||||||
bits1 |= FbScrRight(bits, rightShift);
|
bits1 |= FbScrRight(bits, rightShift);
|
||||||
}
|
}
|
||||||
*dst = FbDoMaskMergeRop (bits1, *dst, endmask);
|
WRITE(dst, FbDoMaskMergeRop (bits1, READ(dst), endmask));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,12 +51,12 @@
|
||||||
|
|
||||||
#define LoadBits {\
|
#define LoadBits {\
|
||||||
if (leftShift) { \
|
if (leftShift) { \
|
||||||
bitsRight = (src < srcEnd ? *src++ : 0); \
|
bitsRight = (src < srcEnd ? READ(src++) : 0); \
|
||||||
bits = (FbStipLeft (bitsLeft, leftShift) | \
|
bits = (FbStipLeft (bitsLeft, leftShift) | \
|
||||||
FbStipRight(bitsRight, rightShift)); \
|
FbStipRight(bitsRight, rightShift)); \
|
||||||
bitsLeft = bitsRight; \
|
bitsLeft = bitsRight; \
|
||||||
} else \
|
} else \
|
||||||
bits = (src < srcEnd ? *src++ : 0); \
|
bits = (src < srcEnd ? READ(src++) : 0); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef FBNOPIXADDR
|
#ifndef FBNOPIXADDR
|
||||||
|
@ -285,7 +285,7 @@ fbBltOne (FbStip *src,
|
||||||
|
|
||||||
bitsLeft = 0;
|
bitsLeft = 0;
|
||||||
if (srcX > dstS)
|
if (srcX > dstS)
|
||||||
bitsLeft = *src++;
|
bitsLeft = READ(src++);
|
||||||
if (n)
|
if (n)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -338,7 +338,7 @@ fbBltOne (FbStip *src,
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
mask = fbBits[FbLeftStipBits(bits,pixelsPerDst)];
|
mask = fbBits[FbLeftStipBits(bits,pixelsPerDst)];
|
||||||
*dst = FbOpaqueStipple (mask, fgxor, bgxor);
|
WRITE(dst, FbOpaqueStipple (mask, fgxor, bgxor));
|
||||||
dst++;
|
dst++;
|
||||||
bits = FbStipLeft(bits, pixelsPerDst);
|
bits = FbStipLeft(bits, pixelsPerDst);
|
||||||
}
|
}
|
||||||
|
@ -368,8 +368,8 @@ fbBltOne (FbStip *src,
|
||||||
if (left || !transparent)
|
if (left || !transparent)
|
||||||
{
|
{
|
||||||
mask = fbBits[left];
|
mask = fbBits[left];
|
||||||
*dst = FbStippleRRop (*dst, mask,
|
WRITE(dst, FbStippleRRop (READ(dst), mask,
|
||||||
fgand, fgxor, bgand, bgxor);
|
fgand, fgxor, bgand, bgxor));
|
||||||
}
|
}
|
||||||
dst++;
|
dst++;
|
||||||
bits = FbStipLeft(bits, pixelsPerDst);
|
bits = FbStipLeft(bits, pixelsPerDst);
|
||||||
|
@ -537,7 +537,7 @@ const FbBits fbStipple24Bits[3][1 << FbStip24Len] = {
|
||||||
stip = FbLeftStipBits(bits, len); \
|
stip = FbLeftStipBits(bits, len); \
|
||||||
} else { \
|
} else { \
|
||||||
stip = FbLeftStipBits(bits, remain); \
|
stip = FbLeftStipBits(bits, remain); \
|
||||||
bits = (src < srcEnd ? *src++ : 0); \
|
bits = (src < srcEnd ? READ(src++) : 0); \
|
||||||
__len = (len) - remain; \
|
__len = (len) - remain; \
|
||||||
stip = FbMergePartStip24Bits(stip, FbLeftStipBits(bits, __len), \
|
stip = FbMergePartStip24Bits(stip, FbLeftStipBits(bits, __len), \
|
||||||
remain, __len); \
|
remain, __len); \
|
||||||
|
@ -548,7 +548,7 @@ const FbBits fbStipple24Bits[3][1 << FbStip24Len] = {
|
||||||
}
|
}
|
||||||
|
|
||||||
#define fbInitStipBits(offset,len,stip) {\
|
#define fbInitStipBits(offset,len,stip) {\
|
||||||
bits = FbStipLeft (*src++,offset); \
|
bits = FbStipLeft (READ(src++),offset); \
|
||||||
remain = FB_STIP_UNIT - offset; \
|
remain = FB_STIP_UNIT - offset; \
|
||||||
fbFirstStipBits(len,stip); \
|
fbFirstStipBits(len,stip); \
|
||||||
stip = FbMergeStip24Bits (0, stip, len); \
|
stip = FbMergeStip24Bits (0, stip, len); \
|
||||||
|
@ -631,10 +631,11 @@ fbBltOne24 (FbStip *srcLine,
|
||||||
if (leftMask)
|
if (leftMask)
|
||||||
{
|
{
|
||||||
mask = fbStipple24Bits[rot >> 3][stip];
|
mask = fbStipple24Bits[rot >> 3][stip];
|
||||||
*dst = (*dst & ~leftMask) | (FbOpaqueStipple (mask,
|
WRITE(dst, (READ(dst) & ~leftMask) |
|
||||||
FbRot24(fgxor, rot),
|
(FbOpaqueStipple (mask,
|
||||||
FbRot24(bgxor, rot))
|
FbRot24(fgxor, rot),
|
||||||
& leftMask);
|
FbRot24(bgxor, rot))
|
||||||
|
& leftMask));
|
||||||
dst++;
|
dst++;
|
||||||
fbNextStipBits(rot,stip);
|
fbNextStipBits(rot,stip);
|
||||||
}
|
}
|
||||||
|
@ -642,19 +643,20 @@ fbBltOne24 (FbStip *srcLine,
|
||||||
while (nl--)
|
while (nl--)
|
||||||
{
|
{
|
||||||
mask = fbStipple24Bits[rot>>3][stip];
|
mask = fbStipple24Bits[rot>>3][stip];
|
||||||
*dst = FbOpaqueStipple (mask,
|
WRITE(dst, FbOpaqueStipple (mask,
|
||||||
FbRot24(fgxor, rot),
|
FbRot24(fgxor, rot),
|
||||||
FbRot24(bgxor, rot));
|
FbRot24(bgxor, rot)));
|
||||||
dst++;
|
dst++;
|
||||||
fbNextStipBits(rot,stip);
|
fbNextStipBits(rot,stip);
|
||||||
}
|
}
|
||||||
if (rightMask)
|
if (rightMask)
|
||||||
{
|
{
|
||||||
mask = fbStipple24Bits[rot >> 3][stip];
|
mask = fbStipple24Bits[rot >> 3][stip];
|
||||||
*dst = (*dst & ~rightMask) | (FbOpaqueStipple (mask,
|
WRITE(dst, (READ(dst) & ~rightMask) |
|
||||||
FbRot24(fgxor, rot),
|
(FbOpaqueStipple (mask,
|
||||||
FbRot24(bgxor, rot))
|
FbRot24(fgxor, rot),
|
||||||
& rightMask);
|
FbRot24(bgxor, rot))
|
||||||
|
& rightMask));
|
||||||
}
|
}
|
||||||
dst += dstStride;
|
dst += dstStride;
|
||||||
src += srcStride;
|
src += srcStride;
|
||||||
|
@ -674,7 +676,7 @@ fbBltOne24 (FbStip *srcLine,
|
||||||
if (stip)
|
if (stip)
|
||||||
{
|
{
|
||||||
mask = fbStipple24Bits[rot >> 3][stip] & leftMask;
|
mask = fbStipple24Bits[rot >> 3][stip] & leftMask;
|
||||||
*dst = (*dst & ~mask) | (FbRot24(fgxor, rot) & mask);
|
WRITE(dst, (READ(dst) & ~mask) | (FbRot24(fgxor, rot) & mask));
|
||||||
}
|
}
|
||||||
dst++;
|
dst++;
|
||||||
fbNextStipBits (rot, stip);
|
fbNextStipBits (rot, stip);
|
||||||
|
@ -685,7 +687,7 @@ fbBltOne24 (FbStip *srcLine,
|
||||||
if (stip)
|
if (stip)
|
||||||
{
|
{
|
||||||
mask = fbStipple24Bits[rot>>3][stip];
|
mask = fbStipple24Bits[rot>>3][stip];
|
||||||
*dst = (*dst & ~mask) | (FbRot24(fgxor,rot) & mask);
|
WRITE(dst, (READ(dst) & ~mask) | (FbRot24(fgxor,rot) & mask));
|
||||||
}
|
}
|
||||||
dst++;
|
dst++;
|
||||||
fbNextStipBits (rot, stip);
|
fbNextStipBits (rot, stip);
|
||||||
|
@ -695,7 +697,7 @@ fbBltOne24 (FbStip *srcLine,
|
||||||
if (stip)
|
if (stip)
|
||||||
{
|
{
|
||||||
mask = fbStipple24Bits[rot >> 3][stip] & rightMask;
|
mask = fbStipple24Bits[rot >> 3][stip] & rightMask;
|
||||||
*dst = (*dst & ~mask) | (FbRot24(fgxor, rot) & mask);
|
WRITE(dst, (READ(dst) & ~mask) | (FbRot24(fgxor, rot) & mask));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dst += dstStride;
|
dst += dstStride;
|
||||||
|
@ -712,12 +714,12 @@ fbBltOne24 (FbStip *srcLine,
|
||||||
if (leftMask)
|
if (leftMask)
|
||||||
{
|
{
|
||||||
mask = fbStipple24Bits[rot >> 3][stip];
|
mask = fbStipple24Bits[rot >> 3][stip];
|
||||||
*dst = FbStippleRRopMask (*dst, mask,
|
WRITE(dst, FbStippleRRopMask (READ(dst), mask,
|
||||||
FbRot24(fgand, rot),
|
FbRot24(fgand, rot),
|
||||||
FbRot24(fgxor, rot),
|
FbRot24(fgxor, rot),
|
||||||
FbRot24(bgand, rot),
|
FbRot24(bgand, rot),
|
||||||
FbRot24(bgxor, rot),
|
FbRot24(bgxor, rot),
|
||||||
leftMask);
|
leftMask));
|
||||||
dst++;
|
dst++;
|
||||||
fbNextStipBits(rot,stip);
|
fbNextStipBits(rot,stip);
|
||||||
}
|
}
|
||||||
|
@ -725,23 +727,23 @@ fbBltOne24 (FbStip *srcLine,
|
||||||
while (nl--)
|
while (nl--)
|
||||||
{
|
{
|
||||||
mask = fbStipple24Bits[rot >> 3][stip];
|
mask = fbStipple24Bits[rot >> 3][stip];
|
||||||
*dst = FbStippleRRop (*dst, mask,
|
WRITE(dst, FbStippleRRop (READ(dst), mask,
|
||||||
FbRot24(fgand, rot),
|
FbRot24(fgand, rot),
|
||||||
FbRot24(fgxor, rot),
|
FbRot24(fgxor, rot),
|
||||||
FbRot24(bgand, rot),
|
FbRot24(bgand, rot),
|
||||||
FbRot24(bgxor, rot));
|
FbRot24(bgxor, rot)));
|
||||||
dst++;
|
dst++;
|
||||||
fbNextStipBits(rot,stip);
|
fbNextStipBits(rot,stip);
|
||||||
}
|
}
|
||||||
if (rightMask)
|
if (rightMask)
|
||||||
{
|
{
|
||||||
mask = fbStipple24Bits[rot >> 3][stip];
|
mask = fbStipple24Bits[rot >> 3][stip];
|
||||||
*dst = FbStippleRRopMask (*dst, mask,
|
WRITE(dst, FbStippleRRopMask (READ(dst), mask,
|
||||||
FbRot24(fgand, rot),
|
FbRot24(fgand, rot),
|
||||||
FbRot24(fgxor, rot),
|
FbRot24(fgxor, rot),
|
||||||
FbRot24(bgand, rot),
|
FbRot24(bgand, rot),
|
||||||
FbRot24(bgxor, rot),
|
FbRot24(bgxor, rot),
|
||||||
rightMask);
|
rightMask));
|
||||||
}
|
}
|
||||||
dst += dstStride;
|
dst += dstStride;
|
||||||
}
|
}
|
||||||
|
@ -832,7 +834,7 @@ fbBltPlane (FbBits *src,
|
||||||
if (srcBpp == 24)
|
if (srcBpp == 24)
|
||||||
srcMask0 = FbRot24(pm,rot0) & FbBitsMask(0, srcBpp);
|
srcMask0 = FbRot24(pm,rot0) & FbBitsMask(0, srcBpp);
|
||||||
#endif
|
#endif
|
||||||
srcBits = *s++;
|
srcBits = READ(s++);
|
||||||
|
|
||||||
dstMask = dstMaskFirst;
|
dstMask = dstMaskFirst;
|
||||||
dstUnion = 0;
|
dstUnion = 0;
|
||||||
|
@ -844,7 +846,7 @@ fbBltPlane (FbBits *src,
|
||||||
{
|
{
|
||||||
if (!srcMask)
|
if (!srcMask)
|
||||||
{
|
{
|
||||||
srcBits = *s++;
|
srcBits = READ(s++);
|
||||||
#ifdef FB_24BIT
|
#ifdef FB_24BIT
|
||||||
if (srcBpp == 24)
|
if (srcBpp == 24)
|
||||||
srcMask0 = FbNext24Pix(srcMask0) & FbBitsMask(0,24);
|
srcMask0 = FbNext24Pix(srcMask0) & FbBitsMask(0,24);
|
||||||
|
@ -853,9 +855,9 @@ fbBltPlane (FbBits *src,
|
||||||
}
|
}
|
||||||
if (!dstMask)
|
if (!dstMask)
|
||||||
{
|
{
|
||||||
*d = FbStippleRRopMask(*d, dstBits,
|
WRITE(d, FbStippleRRopMask(READ(d), dstBits,
|
||||||
fgand, fgxor, bgand, bgxor,
|
fgand, fgxor, bgand, bgxor,
|
||||||
dstUnion);
|
dstUnion));
|
||||||
d++;
|
d++;
|
||||||
dstMask = FbStipMask(0,1);
|
dstMask = FbStipMask(0,1);
|
||||||
dstUnion = 0;
|
dstUnion = 0;
|
||||||
|
@ -871,9 +873,9 @@ fbBltPlane (FbBits *src,
|
||||||
dstMask = FbStipRight(dstMask,1);
|
dstMask = FbStipRight(dstMask,1);
|
||||||
}
|
}
|
||||||
if (dstUnion)
|
if (dstUnion)
|
||||||
*d = FbStippleRRopMask(*d,dstBits,
|
WRITE(d, FbStippleRRopMask(READ(d),dstBits,
|
||||||
fgand, fgxor, bgand, bgxor,
|
fgand, fgxor, bgand, bgxor,
|
||||||
dstUnion);
|
dstUnion));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
663
fb/fbcompose.c
663
fb/fbcompose.c
File diff suppressed because it is too large
Load Diff
10
fb/fbcopy.c
10
fb/fbcopy.c
|
@ -103,6 +103,8 @@ fbCopyNtoN (DrawablePtr pSrcDrawable,
|
||||||
#endif
|
#endif
|
||||||
pbox++;
|
pbox++;
|
||||||
}
|
}
|
||||||
|
fbFinishAccess (pDstDrawable);
|
||||||
|
fbFinishAccess (pSrcDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -173,6 +175,9 @@ fbCopy1toN (DrawablePtr pSrcDrawable,
|
||||||
}
|
}
|
||||||
pbox++;
|
pbox++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDstDrawable);
|
||||||
|
fbFinishAccess (pSrcDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -221,6 +226,8 @@ fbCopyNto1 (DrawablePtr pSrcDrawable,
|
||||||
(FbStip) pPriv->and, (FbStip) pPriv->xor,
|
(FbStip) pPriv->and, (FbStip) pPriv->xor,
|
||||||
(FbStip) pPriv->bgand, (FbStip) pPriv->bgxor,
|
(FbStip) pPriv->bgand, (FbStip) pPriv->bgxor,
|
||||||
bitplane);
|
bitplane);
|
||||||
|
fbFinishAccess (pDstDrawable);
|
||||||
|
fbFinishAccess (pSrcDrawable);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -281,6 +288,9 @@ fbCopyNto1 (DrawablePtr pSrcDrawable,
|
||||||
pPriv->and, pPriv->xor,
|
pPriv->and, pPriv->xor,
|
||||||
pPriv->bgand, pPriv->bgxor);
|
pPriv->bgand, pPriv->bgxor);
|
||||||
xfree (tmp);
|
xfree (tmp);
|
||||||
|
|
||||||
|
fbFinishAccess (pDstDrawable);
|
||||||
|
fbFinishAccess (pSrcDrawable);
|
||||||
}
|
}
|
||||||
pbox++;
|
pbox++;
|
||||||
}
|
}
|
||||||
|
|
16
fb/fbedge.c
16
fb/fbedge.c
|
@ -60,9 +60,9 @@
|
||||||
#define StepAlpha ((__ap += __ao), (__ao ^= 1))
|
#define StepAlpha ((__ap += __ao), (__ao ^= 1))
|
||||||
|
|
||||||
#define AddAlpha(a) { \
|
#define AddAlpha(a) { \
|
||||||
CARD8 __o = *__ap; \
|
CARD8 __o = READ(__ap); \
|
||||||
CARD8 __a = (a) + Get4(__o, __ao); \
|
CARD8 __a = (a) + Get4(__o, __ao); \
|
||||||
*__ap = Put4 (__o, __ao, __a | (0 - ((__a) >> 4))); \
|
WRITE(__ap, Put4 (__o, __ao, __a | (0 - ((__a) >> 4)))); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "fbedgeimp.h"
|
#include "fbedgeimp.h"
|
||||||
|
@ -102,7 +102,7 @@ add_saturate_8 (CARD8 *buf, int value, int length)
|
||||||
{
|
{
|
||||||
while (length--)
|
while (length--)
|
||||||
{
|
{
|
||||||
*buf = clip255 (*buf + value);
|
WRITE(buf, clip255 (READ(buf) + value));
|
||||||
buf++;
|
buf++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -164,11 +164,11 @@ fbRasterizeEdges8 (FbBits *buf,
|
||||||
/* Add coverage across row */
|
/* Add coverage across row */
|
||||||
if (lxi == rxi)
|
if (lxi == rxi)
|
||||||
{
|
{
|
||||||
ap[lxi] = clip255 (ap[lxi] + rxs - lxs);
|
WRITE(ap +lxi, clip255 (READ(ap + lxi) + rxs - lxs));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ap[lxi] = clip255 (ap[lxi] + N_X_FRAC(8) - lxs);
|
WRITE(ap + lxi, clip255 (READ(ap + lxi) + N_X_FRAC(8) - lxs));
|
||||||
|
|
||||||
/* Move forward so that lxi/rxi is the pixel span */
|
/* Move forward so that lxi/rxi is the pixel span */
|
||||||
lxi++;
|
lxi++;
|
||||||
|
@ -238,7 +238,7 @@ fbRasterizeEdges8 (FbBits *buf,
|
||||||
* necessary to avoid a buffer overrun, (when rx
|
* necessary to avoid a buffer overrun, (when rx
|
||||||
* is exactly on a pixel boundary). */
|
* is exactly on a pixel boundary). */
|
||||||
if (rxs)
|
if (rxs)
|
||||||
ap[rxi] = clip255 (ap[rxi] + rxs);
|
WRITE(ap + rxi, clip255 (READ(ap + rxi) + rxs));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,7 +247,7 @@ fbRasterizeEdges8 (FbBits *buf,
|
||||||
if (fill_start != fill_end) {
|
if (fill_start != fill_end) {
|
||||||
if (fill_size == N_Y_FRAC(8))
|
if (fill_size == N_Y_FRAC(8))
|
||||||
{
|
{
|
||||||
memset (ap + fill_start, 0xff, fill_end - fill_start);
|
MEMSET_WRAPPED (ap + fill_start, 0xff, fill_end - fill_start);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -273,7 +273,7 @@ fbRasterizeEdges8 (FbBits *buf,
|
||||||
{
|
{
|
||||||
if (fill_size == N_Y_FRAC(8))
|
if (fill_size == N_Y_FRAC(8))
|
||||||
{
|
{
|
||||||
memset (ap + fill_start, 0xff, fill_end - fill_start);
|
MEMSET_WRAPPED (ap + fill_start, 0xff, fill_end - fill_start);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -76,12 +76,14 @@ rasterizeEdges (FbBits *buf,
|
||||||
x &= FB_MASK;
|
x &= FB_MASK;
|
||||||
|
|
||||||
FbMaskBits (x, width, startmask, nmiddle, endmask);
|
FbMaskBits (x, width, startmask, nmiddle, endmask);
|
||||||
if (startmask)
|
if (startmask) {
|
||||||
*a++ |= startmask;
|
WRITE(a, READ(a) | startmask);
|
||||||
|
a++;
|
||||||
|
}
|
||||||
while (nmiddle--)
|
while (nmiddle--)
|
||||||
*a++ = FB_ALLONES;
|
WRITE(a++, FB_ALLONES);
|
||||||
if (endmask)
|
if (endmask)
|
||||||
*a |= endmask;
|
WRITE(a, READ(a) | endmask);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
{
|
{
|
||||||
|
|
13
fb/fbfill.c
13
fb/fbfill.c
|
@ -49,8 +49,10 @@ fbFill (DrawablePtr pDrawable,
|
||||||
case FillSolid:
|
case FillSolid:
|
||||||
#ifdef USE_MMX
|
#ifdef USE_MMX
|
||||||
if (!pPriv->and && fbHaveMMX())
|
if (!pPriv->and && fbHaveMMX())
|
||||||
if (fbSolidFillmmx (pDrawable, x, y, width, height, pPriv->xor))
|
if (fbSolidFillmmx (pDrawable, x, y, width, height, pPriv->xor)) {
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
fbSolid (dst + (y + dstYoff) * dstStride,
|
fbSolid (dst + (y + dstYoff) * dstStride,
|
||||||
dstStride,
|
dstStride,
|
||||||
|
@ -92,6 +94,7 @@ fbFill (DrawablePtr pDrawable,
|
||||||
|
|
||||||
(pGC->patOrg.x + pDrawable->x + dstXoff),
|
(pGC->patOrg.x + pDrawable->x + dstXoff),
|
||||||
pGC->patOrg.y + pDrawable->y - y);
|
pGC->patOrg.y + pDrawable->y - y);
|
||||||
|
fbFinishAccess (&pStip->drawable);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -129,6 +132,7 @@ fbFill (DrawablePtr pDrawable,
|
||||||
bgand, bgxor,
|
bgand, bgxor,
|
||||||
pGC->patOrg.x + pDrawable->x + dstXoff,
|
pGC->patOrg.x + pDrawable->x + dstXoff,
|
||||||
pGC->patOrg.y + pDrawable->y - y);
|
pGC->patOrg.y + pDrawable->y - y);
|
||||||
|
fbFinishAccess (&pStip->drawable);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -157,10 +161,12 @@ fbFill (DrawablePtr pDrawable,
|
||||||
dstBpp,
|
dstBpp,
|
||||||
(pGC->patOrg.x + pDrawable->x + dstXoff) * dstBpp,
|
(pGC->patOrg.x + pDrawable->x + dstXoff) * dstBpp,
|
||||||
pGC->patOrg.y + pDrawable->y - y);
|
pGC->patOrg.y + pDrawable->y - y);
|
||||||
|
fbFinishAccess (&pTile->drawable);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fbValidateDrawable (pDrawable);
|
fbValidateDrawable (pDrawable);
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -215,8 +221,10 @@ fbSolidBoxClipped (DrawablePtr pDrawable,
|
||||||
if (fbSolidFillmmx (pDrawable,
|
if (fbSolidFillmmx (pDrawable,
|
||||||
partX1, partY1,
|
partX1, partY1,
|
||||||
(partX2 - partX1), (partY2 - partY1),
|
(partX2 - partX1), (partY2 - partY1),
|
||||||
xor))
|
xor)) {
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
fbSolid (dst + (partY1 + dstYoff) * dstStride,
|
fbSolid (dst + (partY1 + dstYoff) * dstStride,
|
||||||
|
@ -228,4 +236,5 @@ fbSolidBoxClipped (DrawablePtr pDrawable,
|
||||||
(partY2 - partY1),
|
(partY2 - partY1),
|
||||||
and, xor);
|
and, xor);
|
||||||
}
|
}
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
13
fb/fbgc.c
13
fb/fbgc.c
|
@ -106,16 +106,18 @@ fbPadPixmap (PixmapPtr pPixmap)
|
||||||
mask = FbBitsMask (0, width);
|
mask = FbBitsMask (0, width);
|
||||||
while (height--)
|
while (height--)
|
||||||
{
|
{
|
||||||
b = *bits & mask;
|
b = READ(bits) & mask;
|
||||||
w = width;
|
w = width;
|
||||||
while (w < FB_UNIT)
|
while (w < FB_UNIT)
|
||||||
{
|
{
|
||||||
b = b | FbScrRight(b, w);
|
b = b | FbScrRight(b, w);
|
||||||
w <<= 1;
|
w <<= 1;
|
||||||
}
|
}
|
||||||
*bits = b;
|
WRITE(bits, b);
|
||||||
bits += stride;
|
bits += stride;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (&pPixmap->drawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -153,7 +155,7 @@ fbLineRepeat (FbBits *bits, int len, int width)
|
||||||
width = (width + FB_UNIT-1) >> FB_SHIFT;
|
width = (width + FB_UNIT-1) >> FB_SHIFT;
|
||||||
bits++;
|
bits++;
|
||||||
while (--width)
|
while (--width)
|
||||||
if (*bits != first)
|
if (READ(bits) != first)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -183,10 +185,13 @@ fbCanEvenStipple (PixmapPtr pStipple, int bpp)
|
||||||
/* check to see that the stipple repeats horizontally */
|
/* check to see that the stipple repeats horizontally */
|
||||||
while (h--)
|
while (h--)
|
||||||
{
|
{
|
||||||
if (!fbLineRepeat (bits, len, pStipple->drawable.width))
|
if (!fbLineRepeat (bits, len, pStipple->drawable.width)) {
|
||||||
|
fbFinishAccess (&pStipple->drawable);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
}
|
||||||
bits += stride;
|
bits += stride;
|
||||||
}
|
}
|
||||||
|
fbFinishAccess (&pStipple->drawable);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -84,4 +84,6 @@ fbGetSpans(DrawablePtr pDrawable,
|
||||||
ppt++;
|
ppt++;
|
||||||
pwidth++;
|
pwidth++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
18
fb/fbglyph.c
18
fb/fbglyph.c
|
@ -62,11 +62,11 @@ fbGlyphIn (RegionPtr pRegion,
|
||||||
#ifdef FB_24BIT
|
#ifdef FB_24BIT
|
||||||
#ifndef FBNOPIXADDR
|
#ifndef FBNOPIXADDR
|
||||||
|
|
||||||
#define WRITE1(d,n,fg) ((d)[n] = (CARD8) fg)
|
#define WRITE1(d,n,fg) WRITE((d) + (n), (CARD8) fg)
|
||||||
#define WRITE2(d,n,fg) (*(CARD16 *) &(d[n]) = (CARD16) fg)
|
#define WRITE2(d,n,fg) WRITE((CARD16 *) &(d[n]), (CARD16) fg)
|
||||||
#define WRITE4(d,n,fg) (*(CARD32 *) &(d[n]) = (CARD32) fg)
|
#define WRITE4(d,n,fg) WRITE((CARD32 *) &(d[n]), (CARD32) fg)
|
||||||
#if FB_UNIT == 6 && IMAGE_BYTE_ORDER == LSBFirst
|
#if FB_UNIT == 6 && IMAGE_BYTE_ORDER == LSBFirst
|
||||||
#define WRITE8(d) (*(FbBits *) &(d[0]) = fg)
|
#define WRITE8(d) WRITE((FbBits *) &(d[0]), fg)
|
||||||
#else
|
#else
|
||||||
#define WRITE8(d) WRITE4(d,0,_ABCA), WRITE4(d,4,_BCAB)
|
#define WRITE8(d) WRITE4(d,0,_ABCA), WRITE4(d,4,_BCAB)
|
||||||
#endif
|
#endif
|
||||||
|
@ -157,7 +157,7 @@ fbGlyph24 (FbBits *dstBits,
|
||||||
lshift = 4 - shift;
|
lshift = 4 - shift;
|
||||||
while (height--)
|
while (height--)
|
||||||
{
|
{
|
||||||
bits = *stipple++;
|
bits = READ(stipple++);
|
||||||
n = lshift;
|
n = lshift;
|
||||||
dst = dstLine;
|
dst = dstLine;
|
||||||
while (bits)
|
while (bits)
|
||||||
|
@ -284,7 +284,7 @@ fbPolyGlyphBlt (DrawablePtr pDrawable,
|
||||||
glyph = 0;
|
glyph = 0;
|
||||||
if (pGC->fillStyle == FillSolid && pPriv->and == 0)
|
if (pGC->fillStyle == FillSolid && pPriv->and == 0)
|
||||||
{
|
{
|
||||||
fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
dstBpp = pDrawable->bitsPerPixel;
|
||||||
switch (dstBpp) {
|
switch (dstBpp) {
|
||||||
case 8: glyph = fbGlyph8; break;
|
case 8: glyph = fbGlyph8; break;
|
||||||
case 16: glyph = fbGlyph16; break;
|
case 16: glyph = fbGlyph16; break;
|
||||||
|
@ -312,6 +312,7 @@ fbPolyGlyphBlt (DrawablePtr pDrawable,
|
||||||
if (glyph && gWidth <= sizeof (FbStip) * 8 &&
|
if (glyph && gWidth <= sizeof (FbStip) * 8 &&
|
||||||
fbGlyphIn (fbGetCompositeClip(pGC), gx, gy, gWidth, gHeight))
|
fbGlyphIn (fbGetCompositeClip(pGC), gx, gy, gWidth, gHeight))
|
||||||
{
|
{
|
||||||
|
fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
||||||
(*glyph) (dst + (gy + dstYoff) * dstStride,
|
(*glyph) (dst + (gy + dstYoff) * dstStride,
|
||||||
dstStride,
|
dstStride,
|
||||||
dstBpp,
|
dstBpp,
|
||||||
|
@ -319,6 +320,7 @@ fbPolyGlyphBlt (DrawablePtr pDrawable,
|
||||||
pPriv->xor,
|
pPriv->xor,
|
||||||
gx + dstXoff,
|
gx + dstXoff,
|
||||||
gHeight);
|
gHeight);
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
@ -375,7 +377,7 @@ fbImageGlyphBlt (DrawablePtr pDrawable,
|
||||||
glyph = 0;
|
glyph = 0;
|
||||||
if (pPriv->and == 0)
|
if (pPriv->and == 0)
|
||||||
{
|
{
|
||||||
fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
dstBpp = pDrawable->bitsPerPixel;
|
||||||
switch (dstBpp) {
|
switch (dstBpp) {
|
||||||
case 8: glyph = fbGlyph8; break;
|
case 8: glyph = fbGlyph8; break;
|
||||||
case 16: glyph = fbGlyph16; break;
|
case 16: glyph = fbGlyph16; break;
|
||||||
|
@ -443,6 +445,7 @@ fbImageGlyphBlt (DrawablePtr pDrawable,
|
||||||
if (glyph && gWidth <= sizeof (FbStip) * 8 &&
|
if (glyph && gWidth <= sizeof (FbStip) * 8 &&
|
||||||
fbGlyphIn (fbGetCompositeClip(pGC), gx, gy, gWidth, gHeight))
|
fbGlyphIn (fbGetCompositeClip(pGC), gx, gy, gWidth, gHeight))
|
||||||
{
|
{
|
||||||
|
fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
||||||
(*glyph) (dst + (gy + dstYoff) * dstStride,
|
(*glyph) (dst + (gy + dstYoff) * dstStride,
|
||||||
dstStride,
|
dstStride,
|
||||||
dstBpp,
|
dstBpp,
|
||||||
|
@ -450,6 +453,7 @@ fbImageGlyphBlt (DrawablePtr pDrawable,
|
||||||
pPriv->fg,
|
pPriv->fg,
|
||||||
gx + dstXoff,
|
gx + dstXoff,
|
||||||
gHeight);
|
gHeight);
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -170,6 +170,8 @@ fbPutZImage (DrawablePtr pDrawable,
|
||||||
pm,
|
pm,
|
||||||
dstBpp);
|
dstBpp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -277,6 +279,8 @@ fbPutXYImage (DrawablePtr pDrawable,
|
||||||
fgand, fgxor, bgand, bgxor);
|
fgand, fgxor, bgand, bgxor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -361,4 +365,6 @@ fbGetImage (DrawablePtr pDrawable,
|
||||||
fbXorStip(GXcopy,0,FB_STIP_ALLONES),
|
fbXorStip(GXcopy,0,FB_STIP_ALLONES),
|
||||||
planeMask);
|
planeMask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
109
fb/fbpict.c
109
fb/fbpict.c
|
@ -137,22 +137,25 @@ fbCompositeSolidMask_nx8x8888 (CARD8 op,
|
||||||
|
|
||||||
while (w--)
|
while (w--)
|
||||||
{
|
{
|
||||||
m = *mask++;
|
m = READ(mask++);
|
||||||
if (m == 0xff)
|
if (m == 0xff)
|
||||||
{
|
{
|
||||||
if (srca == 0xff)
|
if (srca == 0xff)
|
||||||
*dst = src & dstMask;
|
WRITE(dst, src & dstMask);
|
||||||
else
|
else
|
||||||
*dst = fbOver (src, *dst) & dstMask;
|
WRITE(dst, fbOver (src, READ(dst)) & dstMask);
|
||||||
}
|
}
|
||||||
else if (m)
|
else if (m)
|
||||||
{
|
{
|
||||||
d = fbIn (src, m);
|
d = fbIn (src, m);
|
||||||
*dst = fbOver (d, *dst) & dstMask;
|
WRITE(dst, fbOver (d, READ(dst)) & dstMask);
|
||||||
}
|
}
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pMask->pDrawable);
|
||||||
|
fbFinishAccess (pDst->pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -196,17 +199,17 @@ fbCompositeSolidMask_nx8888x8888C (CARD8 op,
|
||||||
|
|
||||||
while (w--)
|
while (w--)
|
||||||
{
|
{
|
||||||
ma = *mask++;
|
ma = READ(mask++);
|
||||||
if (ma == 0xffffffff)
|
if (ma == 0xffffffff)
|
||||||
{
|
{
|
||||||
if (srca == 0xff)
|
if (srca == 0xff)
|
||||||
*dst = src & dstMask;
|
WRITE(dst, src & dstMask);
|
||||||
else
|
else
|
||||||
*dst = fbOver (src, *dst) & dstMask;
|
WRITE(dst, fbOver (src, READ(dst)) & dstMask);
|
||||||
}
|
}
|
||||||
else if (ma)
|
else if (ma)
|
||||||
{
|
{
|
||||||
d = *dst;
|
d = READ(dst);
|
||||||
#define FbInOverC(src,srca,msk,dst,i,result) { \
|
#define FbInOverC(src,srca,msk,dst,i,result) { \
|
||||||
CARD16 __a = FbGet8(msk,i); \
|
CARD16 __a = FbGet8(msk,i); \
|
||||||
CARD32 __t, __ta; \
|
CARD32 __t, __ta; \
|
||||||
|
@ -221,11 +224,14 @@ fbCompositeSolidMask_nx8888x8888C (CARD8 op,
|
||||||
FbInOverC (src, srca, ma, d, 8, n);
|
FbInOverC (src, srca, ma, d, 8, n);
|
||||||
FbInOverC (src, srca, ma, d, 16, o);
|
FbInOverC (src, srca, ma, d, 16, o);
|
||||||
FbInOverC (src, srca, ma, d, 24, p);
|
FbInOverC (src, srca, ma, d, 24, p);
|
||||||
*dst = m|n|o|p;
|
WRITE(dst, m|n|o|p);
|
||||||
}
|
}
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pMask->pDrawable);
|
||||||
|
fbFinishAccess (pDst->pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -268,7 +274,7 @@ fbCompositeSolidMask_nx8x0888 (CARD8 op,
|
||||||
|
|
||||||
while (w--)
|
while (w--)
|
||||||
{
|
{
|
||||||
m = *mask++;
|
m = READ(mask++);
|
||||||
if (m == 0xff)
|
if (m == 0xff)
|
||||||
{
|
{
|
||||||
if (srca == 0xff)
|
if (srca == 0xff)
|
||||||
|
@ -288,6 +294,9 @@ fbCompositeSolidMask_nx8x0888 (CARD8 op,
|
||||||
dst += 3;
|
dst += 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pMask->pDrawable);
|
||||||
|
fbFinishAccess (pDst->pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -330,27 +339,30 @@ fbCompositeSolidMask_nx8x0565 (CARD8 op,
|
||||||
|
|
||||||
while (w--)
|
while (w--)
|
||||||
{
|
{
|
||||||
m = *mask++;
|
m = READ(mask++);
|
||||||
if (m == 0xff)
|
if (m == 0xff)
|
||||||
{
|
{
|
||||||
if (srca == 0xff)
|
if (srca == 0xff)
|
||||||
d = src;
|
d = src;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
d = *dst;
|
d = READ(dst);
|
||||||
d = fbOver24 (src, cvt0565to8888(d));
|
d = fbOver24 (src, cvt0565to8888(d));
|
||||||
}
|
}
|
||||||
*dst = cvt8888to0565(d);
|
WRITE(dst, cvt8888to0565(d));
|
||||||
}
|
}
|
||||||
else if (m)
|
else if (m)
|
||||||
{
|
{
|
||||||
d = *dst;
|
d = READ(dst);
|
||||||
d = fbOver24 (fbIn(src,m), cvt0565to8888(d));
|
d = fbOver24 (fbIn(src,m), cvt0565to8888(d));
|
||||||
*dst = cvt8888to0565(d);
|
WRITE(dst, cvt8888to0565(d));
|
||||||
}
|
}
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pMask->pDrawable);
|
||||||
|
fbFinishAccess (pDst->pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -397,33 +409,36 @@ fbCompositeSolidMask_nx8888x0565C (CARD8 op,
|
||||||
|
|
||||||
while (w--)
|
while (w--)
|
||||||
{
|
{
|
||||||
ma = *mask++;
|
ma = READ(mask++);
|
||||||
if (ma == 0xffffffff)
|
if (ma == 0xffffffff)
|
||||||
{
|
{
|
||||||
if (srca == 0xff)
|
if (srca == 0xff)
|
||||||
{
|
{
|
||||||
*dst = src16;
|
WRITE(dst, src16);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
d = *dst;
|
d = READ(dst);
|
||||||
d = fbOver24 (src, cvt0565to8888(d));
|
d = fbOver24 (src, cvt0565to8888(d));
|
||||||
*dst = cvt8888to0565(d);
|
WRITE(dst, cvt8888to0565(d));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (ma)
|
else if (ma)
|
||||||
{
|
{
|
||||||
d = *dst;
|
d = READ(dst);
|
||||||
d = cvt0565to8888(d);
|
d = cvt0565to8888(d);
|
||||||
FbInOverC (src, srca, ma, d, 0, m);
|
FbInOverC (src, srca, ma, d, 0, m);
|
||||||
FbInOverC (src, srca, ma, d, 8, n);
|
FbInOverC (src, srca, ma, d, 8, n);
|
||||||
FbInOverC (src, srca, ma, d, 16, o);
|
FbInOverC (src, srca, ma, d, 16, o);
|
||||||
d = m|n|o;
|
d = m|n|o;
|
||||||
*dst = cvt8888to0565(d);
|
WRITE(dst, cvt8888to0565(d));
|
||||||
}
|
}
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pMask->pDrawable);
|
||||||
|
fbFinishAccess (pDst->pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -461,15 +476,18 @@ fbCompositeSrc_8888x8888 (CARD8 op,
|
||||||
|
|
||||||
while (w--)
|
while (w--)
|
||||||
{
|
{
|
||||||
s = *src++;
|
s = READ(src++);
|
||||||
a = s >> 24;
|
a = s >> 24;
|
||||||
if (a == 0xff)
|
if (a == 0xff)
|
||||||
*dst = s & dstMask;
|
WRITE(dst, s & dstMask);
|
||||||
else if (a)
|
else if (a)
|
||||||
*dst = fbOver (s, *dst) & dstMask;
|
WRITE(dst, fbOver (s, READ(dst)) & dstMask);
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pSrc->pDrawable);
|
||||||
|
fbFinishAccess (pDst->pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -506,7 +524,7 @@ fbCompositeSrc_8888x0888 (CARD8 op,
|
||||||
|
|
||||||
while (w--)
|
while (w--)
|
||||||
{
|
{
|
||||||
s = *src++;
|
s = READ(src++);
|
||||||
a = s >> 24;
|
a = s >> 24;
|
||||||
if (a)
|
if (a)
|
||||||
{
|
{
|
||||||
|
@ -519,6 +537,9 @@ fbCompositeSrc_8888x0888 (CARD8 op,
|
||||||
dst += 3;
|
dst += 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pSrc->pDrawable);
|
||||||
|
fbFinishAccess (pDst->pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -555,7 +576,7 @@ fbCompositeSrc_8888x0565 (CARD8 op,
|
||||||
|
|
||||||
while (w--)
|
while (w--)
|
||||||
{
|
{
|
||||||
s = *src++;
|
s = READ(src++);
|
||||||
a = s >> 24;
|
a = s >> 24;
|
||||||
if (a)
|
if (a)
|
||||||
{
|
{
|
||||||
|
@ -563,14 +584,17 @@ fbCompositeSrc_8888x0565 (CARD8 op,
|
||||||
d = s;
|
d = s;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
d = *dst;
|
d = READ(dst);
|
||||||
d = fbOver24 (s, cvt0565to8888(d));
|
d = fbOver24 (s, cvt0565to8888(d));
|
||||||
}
|
}
|
||||||
*dst = cvt8888to0565(d);
|
WRITE(dst, cvt8888to0565(d));
|
||||||
}
|
}
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDst->pDrawable);
|
||||||
|
fbFinishAccess (pSrc->pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -605,8 +629,11 @@ fbCompositeSrc_0565x0565 (CARD8 op,
|
||||||
w = width;
|
w = width;
|
||||||
|
|
||||||
while (w--)
|
while (w--)
|
||||||
*dst++ = *src++;
|
WRITE(dst, READ(src++));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDst->pDrawable);
|
||||||
|
fbFinishAccess (pSrc->pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -643,20 +670,23 @@ fbCompositeSrcAdd_8000x8000 (CARD8 op,
|
||||||
|
|
||||||
while (w--)
|
while (w--)
|
||||||
{
|
{
|
||||||
s = *src++;
|
s = READ(src++);
|
||||||
if (s)
|
if (s)
|
||||||
{
|
{
|
||||||
if (s != 0xff)
|
if (s != 0xff)
|
||||||
{
|
{
|
||||||
d = *dst;
|
d = READ(dst);
|
||||||
t = d + s;
|
t = d + s;
|
||||||
s = t | (0 - (t >> 8));
|
s = t | (0 - (t >> 8));
|
||||||
}
|
}
|
||||||
*dst = s;
|
WRITE(dst, s);
|
||||||
}
|
}
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDst->pDrawable);
|
||||||
|
fbFinishAccess (pSrc->pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -694,12 +724,12 @@ fbCompositeSrcAdd_8888x8888 (CARD8 op,
|
||||||
|
|
||||||
while (w--)
|
while (w--)
|
||||||
{
|
{
|
||||||
s = *src++;
|
s = READ(src++);
|
||||||
if (s)
|
if (s)
|
||||||
{
|
{
|
||||||
if (s != 0xffffffff)
|
if (s != 0xffffffff)
|
||||||
{
|
{
|
||||||
d = *dst;
|
d = READ(dst);
|
||||||
if (d)
|
if (d)
|
||||||
{
|
{
|
||||||
m = FbAdd(s,d,0,t);
|
m = FbAdd(s,d,0,t);
|
||||||
|
@ -709,11 +739,14 @@ fbCompositeSrcAdd_8888x8888 (CARD8 op,
|
||||||
s = m|n|o|p;
|
s = m|n|o|p;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*dst = s;
|
WRITE(dst, s);
|
||||||
}
|
}
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDst->pDrawable);
|
||||||
|
fbFinishAccess (pSrc->pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -757,6 +790,9 @@ fbCompositeSrcAdd_1000x1000 (CARD8 op,
|
||||||
|
|
||||||
FALSE,
|
FALSE,
|
||||||
FALSE);
|
FALSE);
|
||||||
|
|
||||||
|
fbFinishAccess(pDst->pDrawable);
|
||||||
|
fbFinishAccess(pSrc->pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -821,6 +857,9 @@ fbCompositeSolidMask_nx1xn (CARD8 op,
|
||||||
src,
|
src,
|
||||||
FB_ALLONES,
|
FB_ALLONES,
|
||||||
0x0);
|
0x0);
|
||||||
|
|
||||||
|
fbFinishAccess (pDst->pDrawable);
|
||||||
|
fbFinishAccess (pMask->pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
# define mod(a,b) ((b) == 1 ? 0 : (a) >= 0 ? (a) % (b) : (b) - (-a) % (b))
|
# define mod(a,b) ((b) == 1 ? 0 : (a) >= 0 ? (a) % (b) : (b) - (-a) % (b))
|
||||||
|
|
29
fb/fbpict.h
29
fb/fbpict.h
|
@ -76,13 +76,13 @@
|
||||||
fbGetDrawable((pict)->pDrawable,__bits__,__stride__,__bpp__,__xoff__,__yoff__); \
|
fbGetDrawable((pict)->pDrawable,__bits__,__stride__,__bpp__,__xoff__,__yoff__); \
|
||||||
switch (__bpp__) { \
|
switch (__bpp__) { \
|
||||||
case 32: \
|
case 32: \
|
||||||
(bits) = *(CARD32 *) __bits__; \
|
(bits) = READ((CARD32 *) __bits__); \
|
||||||
break; \
|
break; \
|
||||||
case 24: \
|
case 24: \
|
||||||
(bits) = Fetch24 ((CARD8 *) __bits__); \
|
(bits) = Fetch24 ((CARD8 *) __bits__); \
|
||||||
break; \
|
break; \
|
||||||
case 16: \
|
case 16: \
|
||||||
(bits) = *(CARD16 *) __bits__; \
|
(bits) = READ((CARD16 *) __bits__); \
|
||||||
(bits) = cvt0565to8888(bits); \
|
(bits) = cvt0565to8888(bits); \
|
||||||
break; \
|
break; \
|
||||||
default: \
|
default: \
|
||||||
|
@ -99,6 +99,7 @@
|
||||||
/* manage missing src alpha */ \
|
/* manage missing src alpha */ \
|
||||||
if ((pict)->pFormat->direct.alphaMask == 0) \
|
if ((pict)->pFormat->direct.alphaMask == 0) \
|
||||||
(bits) |= 0xff000000; \
|
(bits) |= 0xff000000; \
|
||||||
|
fbFinishAccess ((pict)->pDrawable); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define fbComposeGetStart(pict,x,y,type,stride,line,mul) {\
|
#define fbComposeGetStart(pict,x,y,type,stride,line,mul) {\
|
||||||
|
@ -120,22 +121,22 @@
|
||||||
|
|
||||||
#if IMAGE_BYTE_ORDER == MSBFirst
|
#if IMAGE_BYTE_ORDER == MSBFirst
|
||||||
#define Fetch24(a) ((unsigned long) (a) & 1 ? \
|
#define Fetch24(a) ((unsigned long) (a) & 1 ? \
|
||||||
((*(a) << 16) | *((CARD16 *) ((a)+1))) : \
|
((READ(a) << 16) | READ((CARD16 *) ((a)+1))) : \
|
||||||
((*((CARD16 *) (a)) << 8) | *((a)+2)))
|
((READ((CARD16 *) (a)) << 8) | READ((a)+2)))
|
||||||
#define Store24(a,v) ((unsigned long) (a) & 1 ? \
|
#define Store24(a,v) ((unsigned long) (a) & 1 ? \
|
||||||
((*(a) = (CARD8) ((v) >> 16)), \
|
(WRITE(a, (CARD8) ((v) >> 16)), \
|
||||||
(*((CARD16 *) ((a)+1)) = (CARD16) (v))) : \
|
WRITE((CARD16 *) ((a)+1), (CARD16) (v))) : \
|
||||||
((*((CARD16 *) (a)) = (CARD16) ((v) >> 8)), \
|
(WRITE((CARD16 *) (a), (CARD16) ((v) >> 8)), \
|
||||||
(*((a)+2) = (CARD8) (v))))
|
WRITE((a)+2, (CARD8) (v))))
|
||||||
#else
|
#else
|
||||||
#define Fetch24(a) ((unsigned long) (a) & 1 ? \
|
#define Fetch24(a) ((unsigned long) (a) & 1 ? \
|
||||||
((*(a)) | (*((CARD16 *) ((a)+1)) << 8)) : \
|
(READ(a) | (READ((CARD16 *) ((a)+1)) << 8)) : \
|
||||||
((*((CARD16 *) (a))) | (*((a)+2) << 16)))
|
(READ((CARD16 *) (a)) | (READ((a)+2) << 16)))
|
||||||
#define Store24(a,v) ((unsigned long) (a) & 1 ? \
|
#define Store24(a,v) ((unsigned long) (a) & 1 ? \
|
||||||
((*(a) = (CARD8) (v)), \
|
(WRITE(a, (CARD8) (v)), \
|
||||||
(*((CARD16 *) ((a)+1)) = (CARD16) ((v) >> 8))) : \
|
WRITE((CARD16 *) ((a)+1), (CARD16) ((v) >> 8))) : \
|
||||||
((*((CARD16 *) (a)) = (CARD16) (v)),\
|
(WRITE((CARD16 *) (a), (CARD16) (v)),\
|
||||||
(*((a)+2) = (CARD8) ((v) >> 16))))
|
WRITE((a)+2, (CARD8) ((v) >> 16))))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -160,6 +160,8 @@ fbPixmapToRegion(PixmapPtr pPix)
|
||||||
FirstRect = REGION_BOXPTR(pReg);
|
FirstRect = REGION_BOXPTR(pReg);
|
||||||
rects = FirstRect;
|
rects = FirstRect;
|
||||||
|
|
||||||
|
fbPrepareAccess(&pPix->drawable);
|
||||||
|
|
||||||
pwLine = (FbBits *) pPix->devPrivate.ptr;
|
pwLine = (FbBits *) pPix->devPrivate.ptr;
|
||||||
nWidth = pPix->devKind >> (FB_SHIFT-3);
|
nWidth = pPix->devKind >> (FB_SHIFT-3);
|
||||||
|
|
||||||
|
@ -174,7 +176,7 @@ fbPixmapToRegion(PixmapPtr pPix)
|
||||||
irectLineStart = rects - FirstRect;
|
irectLineStart = rects - FirstRect;
|
||||||
/* If the Screen left most bit of the word is set, we're starting in
|
/* If the Screen left most bit of the word is set, we're starting in
|
||||||
* a box */
|
* a box */
|
||||||
if(*pw & mask0)
|
if(READ(pw) & mask0)
|
||||||
{
|
{
|
||||||
fInBox = TRUE;
|
fInBox = TRUE;
|
||||||
rx1 = 0;
|
rx1 = 0;
|
||||||
|
@ -185,7 +187,7 @@ fbPixmapToRegion(PixmapPtr pPix)
|
||||||
pwLineEnd = pw + (width >> FB_SHIFT);
|
pwLineEnd = pw + (width >> FB_SHIFT);
|
||||||
for (base = 0; pw < pwLineEnd; base += FB_UNIT)
|
for (base = 0; pw < pwLineEnd; base += FB_UNIT)
|
||||||
{
|
{
|
||||||
w = *pw++;
|
w = READ(pw++);
|
||||||
if (fInBox)
|
if (fInBox)
|
||||||
{
|
{
|
||||||
if (!~w)
|
if (!~w)
|
||||||
|
@ -226,7 +228,7 @@ fbPixmapToRegion(PixmapPtr pPix)
|
||||||
if(width & FB_MASK)
|
if(width & FB_MASK)
|
||||||
{
|
{
|
||||||
/* Process final partial word on line */
|
/* Process final partial word on line */
|
||||||
w = *pw++;
|
w = READ(pw++);
|
||||||
for(ib = 0; ib < (width & FB_MASK); ib++)
|
for(ib = 0; ib < (width & FB_MASK); ib++)
|
||||||
{
|
{
|
||||||
/* If the Screen left most bit of the word is set, we're
|
/* If the Screen left most bit of the word is set, we're
|
||||||
|
@ -311,6 +313,8 @@ fbPixmapToRegion(PixmapPtr pPix)
|
||||||
pReg->data = (RegDataPtr)NULL;
|
pReg->data = (RegDataPtr)NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess(&pPix->drawable);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if (!miValidRegion(pReg))
|
if (!miValidRegion(pReg))
|
||||||
FatalError("Assertion failed file %s, line %d: expr\n", __FILE__, __LINE__);
|
FatalError("Assertion failed file %s, line %d: expr\n", __FILE__, __LINE__);
|
||||||
|
@ -362,6 +366,7 @@ fbValidateDrawable (DrawablePtr pDrawable)
|
||||||
if (!fbValidateBits (first, stride, FB_HEAD_BITS) ||
|
if (!fbValidateBits (first, stride, FB_HEAD_BITS) ||
|
||||||
!fbValidateBits (last, stride, FB_TAIL_BITS))
|
!fbValidateBits (last, stride, FB_TAIL_BITS))
|
||||||
fbInitializeDrawable(pDrawable);
|
fbInitializeDrawable(pDrawable);
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -383,5 +388,6 @@ fbInitializeDrawable (DrawablePtr pDrawable)
|
||||||
last = bits + stride * pDrawable->height;
|
last = bits + stride * pDrawable->height;
|
||||||
fbSetBits (first, stride, FB_HEAD_BITS);
|
fbSetBits (first, stride, FB_HEAD_BITS);
|
||||||
fbSetBits (last, stride, FB_TAIL_BITS);
|
fbSetBits (last, stride, FB_TAIL_BITS);
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
#endif /* FB_DEBUG */
|
#endif /* FB_DEBUG */
|
||||||
|
|
|
@ -90,20 +90,20 @@ fbDots (FbBits *dstOrig,
|
||||||
FbMaskStip (x, 24, leftMask, n, rightMask);
|
FbMaskStip (x, 24, leftMask, n, rightMask);
|
||||||
if (leftMask)
|
if (leftMask)
|
||||||
{
|
{
|
||||||
*d = FbDoMaskRRop (*d, andT, xorT, leftMask);
|
WRITE(d, FbDoMaskRRop (READ(d), andT, xorT, leftMask));
|
||||||
andT = FbNext24Stip(andT);
|
andT = FbNext24Stip(andT);
|
||||||
xorT = FbNext24Stip(xorT);
|
xorT = FbNext24Stip(xorT);
|
||||||
d++;
|
d++;
|
||||||
}
|
}
|
||||||
if (rightMask)
|
if (rightMask)
|
||||||
*d = FbDoMaskRRop(*d, andT, xorT, rightMask);
|
WRITE(d, FbDoMaskRRop(READ(d), andT, xorT, rightMask));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
FbStip mask;
|
FbStip mask;
|
||||||
mask = FbStipMask(x, dstBpp);
|
mask = FbStipMask(x, dstBpp);
|
||||||
*d = FbDoMaskRRop (*d, and, xor, mask);
|
WRITE(d, FbDoMaskRRop (READ(d), and, xor, mask));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -160,4 +160,5 @@ fbPolyPoint (DrawablePtr pDrawable,
|
||||||
nBox--; pBox++)
|
nBox--; pBox++)
|
||||||
(*dots) (dst, dstStride, dstBpp, pBox, pptInit, nptInit,
|
(*dots) (dst, dstStride, dstBpp, pBox, pptInit, nptInit,
|
||||||
pDrawable->x, pDrawable->y, dstXoff, dstYoff, and, xor);
|
pDrawable->x, pDrawable->y, dstXoff, dstYoff, and, xor);
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
|
@ -875,6 +875,8 @@ xxCopyPseudocolorRegion(ScreenPtr pScreen, RegionPtr pReg,
|
||||||
register CARD16 *d;
|
register CARD16 *d;
|
||||||
int w;
|
int w;
|
||||||
|
|
||||||
|
fbPrepareAccess((DrawablePtr)pScreen->devPrivate);
|
||||||
|
|
||||||
dst_base = (CARD16*) ((PixmapPtr)pScreen->devPrivate)->devPrivate.ptr;
|
dst_base = (CARD16*) ((PixmapPtr)pScreen->devPrivate)->devPrivate.ptr;
|
||||||
dst_stride = (int)((PixmapPtr)pScreen->devPrivate)->devKind
|
dst_stride = (int)((PixmapPtr)pScreen->devPrivate)->devKind
|
||||||
/ sizeof (CARD16);
|
/ sizeof (CARD16);
|
||||||
|
@ -899,6 +901,8 @@ xxCopyPseudocolorRegion(ScreenPtr pScreen, RegionPtr pReg,
|
||||||
}
|
}
|
||||||
pbox++;
|
pbox++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess(&((PixmapPtr)pScreen->devPrivate)->drawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1200,7 +1204,7 @@ GCFuncs xxGCFuncs = {
|
||||||
xxChangeClip, xxDestroyClip, xxCopyClip
|
xxChangeClip, xxDestroyClip, xxCopyClip
|
||||||
};
|
};
|
||||||
|
|
||||||
GCOps xxGCOps = {
|
static GCOps xxGCOps = {
|
||||||
xxFillSpans, xxSetSpans,
|
xxFillSpans, xxSetSpans,
|
||||||
xxPutImage, xxCopyArea,
|
xxPutImage, xxCopyArea,
|
||||||
xxCopyPlane, xxPolyPoint,
|
xxCopyPlane, xxPolyPoint,
|
||||||
|
|
|
@ -58,7 +58,7 @@ fbPushPattern (DrawablePtr pDrawable,
|
||||||
w = width;
|
w = width;
|
||||||
s = src;
|
s = src;
|
||||||
src += srcStride;
|
src += srcStride;
|
||||||
bits = *s++;
|
bits = READ(s++);
|
||||||
xspan = x;
|
xspan = x;
|
||||||
while (w)
|
while (w)
|
||||||
{
|
{
|
||||||
|
@ -73,7 +73,7 @@ fbPushPattern (DrawablePtr pDrawable,
|
||||||
bitsMask = FbStipRight (bitsMask, 1);
|
bitsMask = FbStipRight (bitsMask, 1);
|
||||||
if (!bitsMask)
|
if (!bitsMask)
|
||||||
{
|
{
|
||||||
bits = *s++;
|
bits = READ(s++);
|
||||||
bitsMask = FbBitsMask(0,1);
|
bitsMask = FbBitsMask(0,1);
|
||||||
}
|
}
|
||||||
} while (bits & bitsMask);
|
} while (bits & bitsMask);
|
||||||
|
@ -92,7 +92,7 @@ fbPushPattern (DrawablePtr pDrawable,
|
||||||
bitsMask = FbStipRight (bitsMask, 1);
|
bitsMask = FbStipRight (bitsMask, 1);
|
||||||
if (!bitsMask)
|
if (!bitsMask)
|
||||||
{
|
{
|
||||||
bits = *s++;
|
bits = READ(s++);
|
||||||
bitsMask = FbBitsMask(0,1);
|
bitsMask = FbBitsMask(0,1);
|
||||||
}
|
}
|
||||||
} while (!(bits & bitsMask));
|
} while (!(bits & bitsMask));
|
||||||
|
@ -165,6 +165,7 @@ fbPushFill (DrawablePtr pDrawable,
|
||||||
fbAnd(GXnoop,(FbBits) 0,FB_ALLONES),
|
fbAnd(GXnoop,(FbBits) 0,FB_ALLONES),
|
||||||
fbXor(GXnoop,(FbBits) 0,FB_ALLONES));
|
fbXor(GXnoop,(FbBits) 0,FB_ALLONES));
|
||||||
}
|
}
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -155,6 +155,19 @@ fbSetupScreen(ScreenPtr pScreen,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FB_ACCESS_WRAPPER
|
||||||
|
Bool
|
||||||
|
wfbFinishScreenInit(ScreenPtr pScreen,
|
||||||
|
pointer pbits,
|
||||||
|
int xsize,
|
||||||
|
int ysize,
|
||||||
|
int dpix,
|
||||||
|
int dpiy,
|
||||||
|
int width,
|
||||||
|
int bpp,
|
||||||
|
SetupWrapProcPtr setupWrap,
|
||||||
|
FinishWrapProcPtr finishWrap)
|
||||||
|
#else
|
||||||
Bool
|
Bool
|
||||||
fbFinishScreenInit(ScreenPtr pScreen,
|
fbFinishScreenInit(ScreenPtr pScreen,
|
||||||
pointer pbits,
|
pointer pbits,
|
||||||
|
@ -164,6 +177,7 @@ fbFinishScreenInit(ScreenPtr pScreen,
|
||||||
int dpiy,
|
int dpiy,
|
||||||
int width,
|
int width,
|
||||||
int bpp)
|
int bpp)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
VisualPtr visuals;
|
VisualPtr visuals;
|
||||||
DepthPtr depths;
|
DepthPtr depths;
|
||||||
|
@ -222,6 +236,10 @@ fbFinishScreenInit(ScreenPtr pScreen,
|
||||||
fbGetScreenPrivate(pScreen)->win32bpp = 32;
|
fbGetScreenPrivate(pScreen)->win32bpp = 32;
|
||||||
fbGetScreenPrivate(pScreen)->pix32bpp = 32;
|
fbGetScreenPrivate(pScreen)->pix32bpp = 32;
|
||||||
}
|
}
|
||||||
|
#ifdef FB_ACCESS_WRAPPER
|
||||||
|
fbGetScreenPrivate(pScreen)->setupWrap = setupWrap;
|
||||||
|
fbGetScreenPrivate(pScreen)->finishWrap = finishWrap;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
rootdepth = 0;
|
rootdepth = 0;
|
||||||
if (!fbInitVisuals (&visuals, &depths, &nvisuals, &ndepths, &rootdepth,
|
if (!fbInitVisuals (&visuals, &depths, &nvisuals, &ndepths, &rootdepth,
|
||||||
|
@ -256,6 +274,27 @@ fbFinishScreenInit(ScreenPtr pScreen,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* dts * (inch/dot) * (25.4 mm / inch) = mm */
|
/* dts * (inch/dot) * (25.4 mm / inch) = mm */
|
||||||
|
#ifdef FB_ACCESS_WRAPPER
|
||||||
|
Bool
|
||||||
|
wfbScreenInit(ScreenPtr pScreen,
|
||||||
|
pointer pbits,
|
||||||
|
int xsize,
|
||||||
|
int ysize,
|
||||||
|
int dpix,
|
||||||
|
int dpiy,
|
||||||
|
int width,
|
||||||
|
int bpp,
|
||||||
|
SetupWrapProcPtr setupWrap,
|
||||||
|
FinishWrapProcPtr finishWrap)
|
||||||
|
{
|
||||||
|
if (!fbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp))
|
||||||
|
return FALSE;
|
||||||
|
if (!wfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy,
|
||||||
|
width, bpp, setupWrap, finishWrap))
|
||||||
|
return FALSE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
#else
|
||||||
Bool
|
Bool
|
||||||
fbScreenInit(ScreenPtr pScreen,
|
fbScreenInit(ScreenPtr pScreen,
|
||||||
pointer pbits,
|
pointer pbits,
|
||||||
|
@ -273,6 +312,7 @@ fbScreenInit(ScreenPtr pScreen,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef FB_OLD_SCREEN
|
#ifdef FB_OLD_SCREEN
|
||||||
|
|
28
fb/fbseg.c
28
fb/fbseg.c
|
@ -79,7 +79,7 @@ fbBresSolid (DrawablePtr pDrawable,
|
||||||
mask = fbBresShiftMask(mask,signdx,dstBpp);
|
mask = fbBresShiftMask(mask,signdx,dstBpp);
|
||||||
if (!mask)
|
if (!mask)
|
||||||
{
|
{
|
||||||
*dst = FbDoMaskRRop (*dst, and, xor, bits);
|
WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, bits));
|
||||||
bits = 0;
|
bits = 0;
|
||||||
dst += signdx;
|
dst += signdx;
|
||||||
mask = mask0;
|
mask = mask0;
|
||||||
|
@ -87,20 +87,20 @@ fbBresSolid (DrawablePtr pDrawable,
|
||||||
e += e1;
|
e += e1;
|
||||||
if (e >= 0)
|
if (e >= 0)
|
||||||
{
|
{
|
||||||
*dst = FbDoMaskRRop (*dst, and, xor, bits);
|
WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, bits));
|
||||||
bits = 0;
|
bits = 0;
|
||||||
dst += dstStride;
|
dst += dstStride;
|
||||||
e += e3;
|
e += e3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (bits)
|
if (bits)
|
||||||
*dst = FbDoMaskRRop (*dst, and, xor, bits);
|
WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, bits));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
while (len--)
|
while (len--)
|
||||||
{
|
{
|
||||||
*dst = FbDoMaskRRop (*dst, and, xor, mask);
|
WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, mask));
|
||||||
dst += dstStride;
|
dst += dstStride;
|
||||||
e += e1;
|
e += e1;
|
||||||
if (e >= 0)
|
if (e >= 0)
|
||||||
|
@ -115,6 +115,8 @@ fbBresSolid (DrawablePtr pDrawable,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -164,9 +166,9 @@ fbBresDash (DrawablePtr pDrawable,
|
||||||
while (len--)
|
while (len--)
|
||||||
{
|
{
|
||||||
if (even)
|
if (even)
|
||||||
*dst = FbDoMaskRRop (*dst, and, xor, mask);
|
WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, mask));
|
||||||
else if (doOdd)
|
else if (doOdd)
|
||||||
*dst = FbDoMaskRRop (*dst, bgand, bgxor, mask);
|
WRITE(dst, FbDoMaskRRop (READ(dst), bgand, bgxor, mask));
|
||||||
if (axis == X_AXIS)
|
if (axis == X_AXIS)
|
||||||
{
|
{
|
||||||
mask = fbBresShiftMask(mask,signdx,dstBpp);
|
mask = fbBresShiftMask(mask,signdx,dstBpp);
|
||||||
|
@ -199,6 +201,8 @@ fbBresDash (DrawablePtr pDrawable,
|
||||||
}
|
}
|
||||||
FbDashStep (dashlen, even);
|
FbDashStep (dashlen, even);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -371,13 +375,13 @@ fbBresSolid24RRop (DrawablePtr pDrawable,
|
||||||
FbMaskStip (x, 24, leftMask, nl, rightMask);
|
FbMaskStip (x, 24, leftMask, nl, rightMask);
|
||||||
if (leftMask)
|
if (leftMask)
|
||||||
{
|
{
|
||||||
*d = FbDoMaskRRop (*d, andT, xorT, leftMask);
|
WRITE(d, FbDoMaskRRop (READ(d), andT, xorT, leftMask));
|
||||||
d++;
|
d++;
|
||||||
andT = FbNext24Stip (andT);
|
andT = FbNext24Stip (andT);
|
||||||
xorT = FbNext24Stip (xorT);
|
xorT = FbNext24Stip (xorT);
|
||||||
}
|
}
|
||||||
if (rightMask)
|
if (rightMask)
|
||||||
*d = FbDoMaskRRop (*d, andT, xorT, rightMask);
|
WRITE(d, FbDoMaskRRop (READ(d), andT, xorT, rightMask));
|
||||||
if (axis == X_AXIS)
|
if (axis == X_AXIS)
|
||||||
{
|
{
|
||||||
x1 += signdx;
|
x1 += signdx;
|
||||||
|
@ -399,6 +403,8 @@ fbBresSolid24RRop (DrawablePtr pDrawable,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -468,13 +474,13 @@ fbBresDash24RRop (DrawablePtr pDrawable,
|
||||||
FbMaskStip (x, 24, leftMask, nl, rightMask);
|
FbMaskStip (x, 24, leftMask, nl, rightMask);
|
||||||
if (leftMask)
|
if (leftMask)
|
||||||
{
|
{
|
||||||
*d = FbDoMaskRRop (*d, andT, xorT, leftMask);
|
WRITE(d, FbDoMaskRRop (READ(d), andT, xorT, leftMask));
|
||||||
d++;
|
d++;
|
||||||
andT = FbNext24Stip (andT);
|
andT = FbNext24Stip (andT);
|
||||||
xorT = FbNext24Stip (xorT);
|
xorT = FbNext24Stip (xorT);
|
||||||
}
|
}
|
||||||
if (rightMask)
|
if (rightMask)
|
||||||
*d = FbDoMaskRRop (*d, andT, xorT, rightMask);
|
WRITE(d, FbDoMaskRRop (READ(d), andT, xorT, rightMask));
|
||||||
}
|
}
|
||||||
if (axis == X_AXIS)
|
if (axis == X_AXIS)
|
||||||
{
|
{
|
||||||
|
@ -498,6 +504,8 @@ fbBresDash24RRop (DrawablePtr pDrawable,
|
||||||
}
|
}
|
||||||
FbDashStep (dashlen, even);
|
FbDashStep (dashlen, even);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -99,5 +99,6 @@ fbSetSpans (DrawablePtr pDrawable,
|
||||||
pwidth++;
|
pwidth++;
|
||||||
}
|
}
|
||||||
fbValidateDrawable (pDrawable);
|
fbValidateDrawable (pDrawable);
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
42
fb/fbsolid.c
42
fb/fbsolid.c
|
@ -70,12 +70,12 @@ fbSolid (FbBits *dst,
|
||||||
n = nmiddle;
|
n = nmiddle;
|
||||||
if (!and)
|
if (!and)
|
||||||
while (n--)
|
while (n--)
|
||||||
*dst++ = xor;
|
WRITE(dst++, xor);
|
||||||
else
|
else
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
*dst = FbDoRRop (*dst, and, xor);
|
WRITE(dst, FbDoRRop (READ(dst), and, xor));
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
if (endmask)
|
if (endmask)
|
||||||
FbDoRightMaskByteRRop(dst,endbyte,endmask,and,xor);
|
FbDoRightMaskByteRRop(dst,endbyte,endmask,and,xor);
|
||||||
|
@ -160,26 +160,26 @@ fbSolid24 (FbBits *dst,
|
||||||
{
|
{
|
||||||
if (startmask)
|
if (startmask)
|
||||||
{
|
{
|
||||||
*dst = FbDoMaskRRop(*dst, andS, xorS, startmask);
|
WRITE(dst, FbDoMaskRRop(READ(dst), andS, xorS, startmask));
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
n = nmiddle;
|
n = nmiddle;
|
||||||
if (!and0)
|
if (!and0)
|
||||||
{
|
{
|
||||||
while (n >= 3)
|
while (n >= 3)
|
||||||
{
|
{
|
||||||
*dst++ = xor0;
|
WRITE(dst++, xor0);
|
||||||
*dst++ = xor1;
|
WRITE(dst++, xor1);
|
||||||
*dst++ = xor2;
|
WRITE(dst++, xor2);
|
||||||
n -= 3;
|
n -= 3;
|
||||||
}
|
}
|
||||||
if (n)
|
if (n)
|
||||||
{
|
{
|
||||||
*dst++ = xor0;
|
WRITE(dst++, xor0);
|
||||||
n--;
|
n--;
|
||||||
if (n)
|
if (n)
|
||||||
{
|
{
|
||||||
*dst++ = xor1;
|
WRITE(dst++, xor1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -187,28 +187,28 @@ fbSolid24 (FbBits *dst,
|
||||||
{
|
{
|
||||||
while (n >= 3)
|
while (n >= 3)
|
||||||
{
|
{
|
||||||
*dst = FbDoRRop (*dst, and0, xor0);
|
WRITE(dst, FbDoRRop (READ(dst), and0, xor0));
|
||||||
dst++;
|
dst++;
|
||||||
*dst = FbDoRRop (*dst, and1, xor1);
|
WRITE(dst, FbDoRRop (READ(dst), and1, xor1));
|
||||||
dst++;
|
dst++;
|
||||||
*dst = FbDoRRop (*dst, and2, xor2);
|
WRITE(dst, FbDoRRop (READ(dst), and2, xor2));
|
||||||
dst++;
|
dst++;
|
||||||
n -= 3;
|
n -= 3;
|
||||||
}
|
}
|
||||||
if (n)
|
if (n)
|
||||||
{
|
{
|
||||||
*dst = FbDoRRop (*dst, and0, xor0);
|
WRITE(dst, FbDoRRop (READ(dst), and0, xor0));
|
||||||
dst++;
|
dst++;
|
||||||
n--;
|
n--;
|
||||||
if (n)
|
if (n)
|
||||||
{
|
{
|
||||||
*dst = FbDoRRop (*dst, and1, xor1);
|
WRITE(dst, FbDoRRop (READ(dst), and1, xor1));
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (endmask)
|
if (endmask)
|
||||||
*dst = FbDoMaskRRop (*dst, andE, xorE, endmask);
|
WRITE(dst, FbDoMaskRRop (READ(dst), andE, xorE, endmask));
|
||||||
dst += dstStride;
|
dst += dstStride;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -155,7 +155,7 @@ fbEvenStipple (FbBits *dst,
|
||||||
/*
|
/*
|
||||||
* Extract stipple bits for this scanline;
|
* Extract stipple bits for this scanline;
|
||||||
*/
|
*/
|
||||||
bits = *s;
|
bits = READ(s);
|
||||||
s += stipStride;
|
s += stipStride;
|
||||||
if (s == stipEnd)
|
if (s == stipEnd)
|
||||||
s = stip;
|
s = stip;
|
||||||
|
@ -199,12 +199,12 @@ fbEvenStipple (FbBits *dst,
|
||||||
n = nmiddle;
|
n = nmiddle;
|
||||||
if (!and)
|
if (!and)
|
||||||
while (n--)
|
while (n--)
|
||||||
*dst++ = xor;
|
WRITE(dst++, xor);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
*dst = FbDoRRop (*dst, and, xor);
|
WRITE(dst, FbDoRRop (READ(dst), and, xor));
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,7 +80,7 @@ fbEvenTile (FbBits *dst,
|
||||||
/*
|
/*
|
||||||
* Pick up bits for this scanline
|
* Pick up bits for this scanline
|
||||||
*/
|
*/
|
||||||
bits = *t++;
|
bits = READ(t++);
|
||||||
if (t == tileEnd) t = tile;
|
if (t == tileEnd) t = tile;
|
||||||
bits = FbRotLeft(bits,rot);
|
bits = FbRotLeft(bits,rot);
|
||||||
and = fbAnd(alu,bits,pm);
|
and = fbAnd(alu,bits,pm);
|
||||||
|
@ -94,11 +94,11 @@ fbEvenTile (FbBits *dst,
|
||||||
n = nmiddle;
|
n = nmiddle;
|
||||||
if (!and)
|
if (!and)
|
||||||
while (n--)
|
while (n--)
|
||||||
*dst++ = xor;
|
WRITE(dst++, xor);
|
||||||
else
|
else
|
||||||
while (n--)
|
while (n--)
|
||||||
{
|
{
|
||||||
*dst = FbDoRRop (*dst, and, xor);
|
WRITE(dst, FbDoRRop (READ(dst), and, xor));
|
||||||
dst++;
|
dst++;
|
||||||
}
|
}
|
||||||
if (endmask)
|
if (endmask)
|
||||||
|
|
|
@ -95,6 +95,8 @@ fbAddTraps (PicturePtr pPicture,
|
||||||
}
|
}
|
||||||
traps++;
|
traps++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pPicture->pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -142,6 +144,8 @@ fbRasterizeTrapezoid (PicturePtr pPicture,
|
||||||
|
|
||||||
fbRasterizeEdges (buf, bpp, width, stride, &l, &r, t, b);
|
fbRasterizeEdges (buf, bpp, width, stride, &l, &r, t, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pPicture->pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -118,6 +118,9 @@ fbCopyWindowProc (DrawablePtr pSrcDrawable,
|
||||||
upsidedown);
|
upsidedown);
|
||||||
pbox++;
|
pbox++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDstDrawable);
|
||||||
|
fbFinishAccess (pSrcDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -249,6 +252,8 @@ fbFillRegionSolid (DrawablePtr pDrawable,
|
||||||
fbValidateDrawable (pDrawable);
|
fbValidateDrawable (pDrawable);
|
||||||
pbox++;
|
pbox++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef PANORAMIX
|
#ifdef PANORAMIX
|
||||||
|
@ -311,6 +316,9 @@ fbFillRegionTiled (DrawablePtr pDrawable,
|
||||||
yRot - (pbox->y1 + dstYoff));
|
yRot - (pbox->y1 + dstYoff));
|
||||||
pbox++;
|
pbox++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbFinishAccess (&pTile->drawable);
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
198
fb/wfbrename.h
Normal file
198
fb/wfbrename.h
Normal file
|
@ -0,0 +1,198 @@
|
||||||
|
#define fb16Lane wfb16Lane
|
||||||
|
#define fb24_32CopyMtoN wfb24_32CopyMtoN
|
||||||
|
#define fb24_32CreateScreenResources wfb24_32CreateScreenResources
|
||||||
|
#define fb24_32GetImage wfb24_32GetImage
|
||||||
|
#define fb24_32GetSpans wfb24_32GetSpans
|
||||||
|
#define fb24_32ModifyPixmapHeader wfb24_32ModifyPixmapHeader
|
||||||
|
#define fb24_32PutZImage wfb24_32PutZImage
|
||||||
|
#define fb24_32ReformatTile wfb24_32ReformatTile
|
||||||
|
#define fb24_32SetSpans wfb24_32SetSpans
|
||||||
|
#define fb32Lane wfb32Lane
|
||||||
|
#define fb8Lane wfb8Lane
|
||||||
|
#define fbAddTraps wfbAddTraps
|
||||||
|
#define fbAddTriangles wfbAddTriangles
|
||||||
|
#define fbAllocatePrivates wfbAllocatePrivates
|
||||||
|
#define fbArc16 wfbArc16
|
||||||
|
#define fbArc24 wfbArc24
|
||||||
|
#define fbArc32 wfbArc32
|
||||||
|
#define fbArc8 wfbArc8
|
||||||
|
#define fbBlt wfbBlt
|
||||||
|
#define fbBlt24 wfbBlt24
|
||||||
|
#define fbBltOne wfbBltOne
|
||||||
|
#define fbBltOne24 wfbBltOne24
|
||||||
|
#define fbBltPlane wfbBltPlane
|
||||||
|
#define fbBltStip wfbBltStip
|
||||||
|
#define fbBres wfbBres
|
||||||
|
#define fbBresDash wfbBresDash
|
||||||
|
#define fbBresDash16 wfbBresDash16
|
||||||
|
#define fbBresDash24 wfbBresDash24
|
||||||
|
#define fbBresDash32 wfbBresDash32
|
||||||
|
#define fbBresDash8 wfbBresDash8
|
||||||
|
#define fbBresFill wfbBresFill
|
||||||
|
#define fbBresFillDash wfbBresFillDash
|
||||||
|
#define fbBresSolid wfbBresSolid
|
||||||
|
#define fbBresSolid16 wfbBresSolid16
|
||||||
|
#define fbBresSolid24 wfbBresSolid24
|
||||||
|
#define fbBresSolid32 wfbBresSolid32
|
||||||
|
#define fbBresSolid8 wfbBresSolid8
|
||||||
|
#define fbChangeWindowAttributes wfbChangeWindowAttributes
|
||||||
|
#define fbClearVisualTypes wfbClearVisualTypes
|
||||||
|
#define fbCloseScreen wfbCloseScreen
|
||||||
|
#define fbComposite wfbComposite
|
||||||
|
#define fbCompositeGeneral wfbCompositeGeneral
|
||||||
|
#define fbCompositeSolidMask_nx1xn wfbCompositeSolidMask_nx1xn
|
||||||
|
#define fbCompositeSolidMask_nx8888x0565C wfbCompositeSolidMask_nx8888x0565C
|
||||||
|
#define fbCompositeSolidMask_nx8888x8888C wfbCompositeSolidMask_nx8888x8888C
|
||||||
|
#define fbCompositeSolidMask_nx8x0565 wfbCompositeSolidMask_nx8x0565
|
||||||
|
#define fbCompositeSolidMask_nx8x0888 wfbCompositeSolidMask_nx8x0888
|
||||||
|
#define fbCompositeSolidMask_nx8x8888 wfbCompositeSolidMask_nx8x8888
|
||||||
|
#define fbCompositeSrc_0565x0565 wfbCompositeSrc_0565x0565
|
||||||
|
#define fbCompositeSrc_8888x0565 wfbCompositeSrc_8888x0565
|
||||||
|
#define fbCompositeSrc_8888x0888 wfbCompositeSrc_8888x0888
|
||||||
|
#define fbCompositeSrc_8888x8888 wfbCompositeSrc_8888x8888
|
||||||
|
#define fbCompositeSrcAdd_1000x1000 wfbCompositeSrcAdd_1000x1000
|
||||||
|
#define fbCompositeSrcAdd_8000x8000 wfbCompositeSrcAdd_8000x8000
|
||||||
|
#define fbCompositeSrcAdd_8888x8888 wfbCompositeSrcAdd_8888x8888
|
||||||
|
#define fbCopy1toN wfbCopy1toN
|
||||||
|
#define fbCopyArea wfbCopyArea
|
||||||
|
#define fbCopyNto1 wfbCopyNto1
|
||||||
|
#define fbCopyNtoN wfbCopyNtoN
|
||||||
|
#define fbCopyPlane wfbCopyPlane
|
||||||
|
#define fbCopyRegion wfbCopyRegion
|
||||||
|
#define fbCopyWindow wfbCopyWindow
|
||||||
|
#define fbCopyWindowProc wfbCopyWindowProc
|
||||||
|
#define fbCreateDefColormap wfbCreateDefColormap
|
||||||
|
#define fbCreateGC wfbCreateGC
|
||||||
|
#define fbCreatePixmap wfbCreatePixmap
|
||||||
|
#define fbCreatePixmapBpp wfbCreatePixmapBpp
|
||||||
|
#define fbCreateWindow wfbCreateWindow
|
||||||
|
#define fbDestroyPixmap wfbDestroyPixmap
|
||||||
|
#define fbDestroyWindow wfbDestroyWindow
|
||||||
|
#define fbDoCopy wfbDoCopy
|
||||||
|
#define fbDots wfbDots
|
||||||
|
#define fbDots16 wfbDots16
|
||||||
|
#define fbDots24 wfbDots24
|
||||||
|
#define fbDots32 wfbDots32
|
||||||
|
#define fbDots8 wfbDots8
|
||||||
|
#define fbEvenStipple wfbEvenStipple
|
||||||
|
#define fbEvenTile wfbEvenTile
|
||||||
|
#define fbExpandDirectColors wfbExpandDirectColors
|
||||||
|
#define fbFill wfbFill
|
||||||
|
#define fbFillRegionSolid wfbFillRegionSolid
|
||||||
|
#define fbFillRegionTiled wfbFillRegionTiled
|
||||||
|
#define fbFillSpans wfbFillSpans
|
||||||
|
#define fbFixCoordModePrevious wfbFixCoordModePrevious
|
||||||
|
#define fbGCFuncs wfbGCFuncs
|
||||||
|
#define fbGCOps wfbGCOps
|
||||||
|
#define fbGCPrivateIndex wfbGCPrivateIndex
|
||||||
|
#define fbGeneration wfbGeneration
|
||||||
|
#define fbGetGCPrivateIndex wfbGetGCPrivateIndex
|
||||||
|
#define fbGetImage wfbGetImage
|
||||||
|
#define fbGetScreenPrivateIndex wfbGetScreenPrivateIndex
|
||||||
|
#define fbGetSpans wfbGetSpans
|
||||||
|
#define _fbGetWindowPixmap _wfbGetWindowPixmap
|
||||||
|
#define fbGetWinPrivateIndex wfbGetWinPrivateIndex
|
||||||
|
#define fbGlyph16 wfbGlyph16
|
||||||
|
#define fbGlyph24 wfbGlyph24
|
||||||
|
#define fbGlyph32 wfbGlyph32
|
||||||
|
#define fbGlyph8 wfbGlyph8
|
||||||
|
#define fbGlyphIn wfbGlyphIn
|
||||||
|
#define fbHasVisualTypes wfbHasVisualTypes
|
||||||
|
#define fbImageGlyphBlt wfbImageGlyphBlt
|
||||||
|
#define fbIn wfbIn
|
||||||
|
#define fbInitializeColormap wfbInitializeColormap
|
||||||
|
#define fbInitVisuals wfbInitVisuals
|
||||||
|
#define fbInstallColormap wfbInstallColormap
|
||||||
|
#define fbLaneTable wfbLaneTable
|
||||||
|
#define fbListInstalledColormaps wfbListInstalledColormaps
|
||||||
|
#define fbMapWindow wfbMapWindow
|
||||||
|
#define FbMergeRopBits wFbMergeRopBits
|
||||||
|
#define fbOddStipple wfbOddStipple
|
||||||
|
#define fbOddTile wfbOddTile
|
||||||
|
#define fbOver wfbOver
|
||||||
|
#define fbOver24 wfbOver24
|
||||||
|
#define fbOverlayCloseScreen wfbOverlayCloseScreen
|
||||||
|
#define fbOverlayCopyWindow wfbOverlayCopyWindow
|
||||||
|
#define fbOverlayCreateScreenResources wfbOverlayCreateScreenResources
|
||||||
|
#define fbOverlayCreateWindow wfbOverlayCreateWindow
|
||||||
|
#define fbOverlayFinishScreenInit wfbOverlayFinishScreenInit
|
||||||
|
#define fbOverlayGeneration wfbOverlayGeneration
|
||||||
|
#define fbOverlayGetScreenPrivateIndex wfbOverlayGetScreenPrivateIndex
|
||||||
|
#define fbOverlayPaintKey wfbOverlayPaintKey
|
||||||
|
#define fbOverlayPaintWindow wfbOverlayPaintWindow
|
||||||
|
#define fbOverlayScreenPrivateIndex wfbOverlayScreenPrivateIndex
|
||||||
|
#define fbOverlaySetupScreen wfbOverlaySetupScreen
|
||||||
|
#define fbOverlayUpdateLayerRegion wfbOverlayUpdateLayerRegion
|
||||||
|
#define fbOverlayWindowExposures wfbOverlayWindowExposures
|
||||||
|
#define fbOverlayWindowLayer wfbOverlayWindowLayer
|
||||||
|
#define fbPadPixmap wfbPadPixmap
|
||||||
|
#define fbPaintWindow wfbPaintWindow
|
||||||
|
#define fbPictureInit wfbPictureInit
|
||||||
|
#define fbPixmapToRegion wfbPixmapToRegion
|
||||||
|
#define fbPolyArc wfbPolyArc
|
||||||
|
#define fbPolyFillRect wfbPolyFillRect
|
||||||
|
#define fbPolyGlyphBlt wfbPolyGlyphBlt
|
||||||
|
#define fbPolyLine wfbPolyLine
|
||||||
|
#define fbPolyline16 wfbPolyline16
|
||||||
|
#define fbPolyline24 wfbPolyline24
|
||||||
|
#define fbPolyline32 wfbPolyline32
|
||||||
|
#define fbPolyline8 wfbPolyline8
|
||||||
|
#define fbPolyPoint wfbPolyPoint
|
||||||
|
#define fbPolySegment wfbPolySegment
|
||||||
|
#define fbPolySegment16 wfbPolySegment16
|
||||||
|
#define fbPolySegment24 wfbPolySegment24
|
||||||
|
#define fbPolySegment32 wfbPolySegment32
|
||||||
|
#define fbPolySegment8 wfbPolySegment8
|
||||||
|
#define fbPositionWindow wfbPositionWindow
|
||||||
|
#define fbPushFill wfbPushFill
|
||||||
|
#define fbPushImage wfbPushImage
|
||||||
|
#define fbPushPattern wfbPushPattern
|
||||||
|
#define fbPushPixels wfbPushPixels
|
||||||
|
#define fbPutImage wfbPutImage
|
||||||
|
#define fbPutXYImage wfbPutXYImage
|
||||||
|
#define fbPutZImage wfbPutZImage
|
||||||
|
#define fbQueryBestSize wfbQueryBestSize
|
||||||
|
#define fbRasterizeEdges wfbRasterizeEdges
|
||||||
|
#define fbRasterizeTrapezoid wfbRasterizeTrapezoid
|
||||||
|
#define fbRealizeFont wfbRealizeFont
|
||||||
|
#define fbReduceRasterOp wfbReduceRasterOp
|
||||||
|
#define fbReplicatePixel wfbReplicatePixel
|
||||||
|
#define fbResolveColor wfbResolveColor
|
||||||
|
#define fbRestoreAreas wfbRestoreAreas
|
||||||
|
#define fbSaveAreas wfbSaveAreas
|
||||||
|
#define fbScreenPrivateIndex wfbScreenPrivateIndex
|
||||||
|
#define fbSegment wfbSegment
|
||||||
|
#define fbSelectBres wfbSelectBres
|
||||||
|
#define fbSetSpans wfbSetSpans
|
||||||
|
#define fbSetupScreen wfbSetupScreen
|
||||||
|
#define fbSetVisualTypes wfbSetVisualTypes
|
||||||
|
#define fbSetVisualTypesAndMasks wfbSetVisualTypesAndMasks
|
||||||
|
#define _fbSetWindowPixmap _wfbSetWindowPixmap
|
||||||
|
#define fbSolid wfbSolid
|
||||||
|
#define fbSolid24 wfbSolid24
|
||||||
|
#define fbSolidBoxClipped wfbSolidBoxClipped
|
||||||
|
#define fbStipple wfbStipple
|
||||||
|
#define fbStipple1Bits wfbStipple1Bits
|
||||||
|
#define fbStipple24Bits wfbStipple24Bits
|
||||||
|
#define fbStipple2Bits wfbStipple2Bits
|
||||||
|
#define fbStipple4Bits wfbStipple4Bits
|
||||||
|
#define fbStipple8Bits wfbStipple8Bits
|
||||||
|
#define fbStippleTable wfbStippleTable
|
||||||
|
#define fbTile wfbTile
|
||||||
|
#define fbTransparentSpan wfbTransparentSpan
|
||||||
|
#define fbUninstallColormap wfbUninstallColormap
|
||||||
|
#define fbUnmapWindow wfbUnmapWindow
|
||||||
|
#define fbUnrealizeFont wfbUnrealizeFont
|
||||||
|
#define fbValidateGC wfbValidateGC
|
||||||
|
#define fbWinPrivateIndex wfbWinPrivateIndex
|
||||||
|
#define fbZeroLine wfbZeroLine
|
||||||
|
#define fbZeroSegment wfbZeroSegment
|
||||||
|
#define xxScrPrivateIndex wfbxxScrPrivateIndex
|
||||||
|
#define xxGCPrivateIndex wfbxxGCPrivateIndex
|
||||||
|
#define xxColormapPrivateIndex wfbxxColormapPrivateIndex
|
||||||
|
#define xxGeneration wfbxxGeneration
|
||||||
|
#define xxPrintVisuals wfbxxPrintVisuals
|
||||||
|
#define xxGCFuncs wfbxxGCFuncs
|
||||||
|
#define xxGCOps wfbxxGCOps
|
||||||
|
#define xxSetup wfbxxSetup
|
||||||
|
#define composeFunctions wfbComposeFunctions
|
|
@ -18,6 +18,7 @@ module_LTLIBRARIES = libafb.la \
|
||||||
libcfb.la \
|
libcfb.la \
|
||||||
libcfb32.la \
|
libcfb32.la \
|
||||||
libfb.la \
|
libfb.la \
|
||||||
|
libwfb.la \
|
||||||
libmfb.la \
|
libmfb.la \
|
||||||
libshadow.la
|
libshadow.la
|
||||||
|
|
||||||
|
@ -66,6 +67,11 @@ libfb_la_LIBADD = $(top_builddir)/fb/libfb.la
|
||||||
libfb_la_SOURCES = $(top_builddir)/fb/fbcmap.c fbmodule.c
|
libfb_la_SOURCES = $(top_builddir)/fb/fbcmap.c fbmodule.c
|
||||||
libfb_la_CFLAGS = -DXFree86Server $(AM_CFLAGS)
|
libfb_la_CFLAGS = -DXFree86Server $(AM_CFLAGS)
|
||||||
|
|
||||||
|
libwfb_la_LDFLAGS = -avoid-version
|
||||||
|
libwfb_la_LIBADD = $(top_builddir)/fb/libwfb.la
|
||||||
|
libwfb_la_SOURCES = $(top_builddir)/fb/fbcmap.c fbmodule.c
|
||||||
|
libwfb_la_CFLAGS = -DXFree86Server $(AM_CFLAGS) -DFB_ACCESS_WRAPPER
|
||||||
|
|
||||||
libglx_la_LDFLAGS = -avoid-version
|
libglx_la_LDFLAGS = -avoid-version
|
||||||
if AIGLX
|
if AIGLX
|
||||||
GLXDRI_LIBRARY = $(top_builddir)/GL/glx/libglxdri.la
|
GLXDRI_LIBRARY = $(top_builddir)/GL/glx/libglxdri.la
|
||||||
|
|
|
@ -33,7 +33,11 @@
|
||||||
|
|
||||||
static XF86ModuleVersionInfo VersRec =
|
static XF86ModuleVersionInfo VersRec =
|
||||||
{
|
{
|
||||||
|
#ifdef FB_ACCESS_WRAPPER
|
||||||
|
"wfb",
|
||||||
|
#else
|
||||||
"fb",
|
"fb",
|
||||||
|
#endif
|
||||||
MODULEVENDORSTRING,
|
MODULEVENDORSTRING,
|
||||||
MODINFOSTRING1,
|
MODINFOSTRING1,
|
||||||
MODINFOSTRING2,
|
MODINFOSTRING2,
|
||||||
|
@ -45,4 +49,4 @@ static XF86ModuleVersionInfo VersRec =
|
||||||
{0,0,0,0} /* signature, to be patched into the file by a tool */
|
{0,0,0,0} /* signature, to be patched into the file by a tool */
|
||||||
};
|
};
|
||||||
|
|
||||||
_X_EXPORT XF86ModuleData fbModuleData = { &VersRec, NULL, NULL };
|
_X_EXPORT XF86ModuleData FBPREFIX(ModuleData) = { &VersRec, NULL, NULL };
|
||||||
|
|
|
@ -992,6 +992,10 @@ DRICreateDrawable(ScreenPtr pScreen, Drawable id,
|
||||||
pWin = (WindowPtr)pDrawable;
|
pWin = (WindowPtr)pDrawable;
|
||||||
if ((pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin))) {
|
if ((pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin))) {
|
||||||
pDRIDrawablePriv->refCount++;
|
pDRIDrawablePriv->refCount++;
|
||||||
|
|
||||||
|
if (!pDRIDrawablePriv->hwDrawable) {
|
||||||
|
drmCreateDrawable(pDRIPriv->drmFD, &pDRIDrawablePriv->hwDrawable);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* allocate a DRI Window Private record */
|
/* allocate a DRI Window Private record */
|
||||||
|
@ -1000,13 +1004,13 @@ DRICreateDrawable(ScreenPtr pScreen, Drawable id,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Only create a drm_drawable_t once */
|
/* Only create a drm_drawable_t once */
|
||||||
if (drmCreateDrawable(pDRIPriv->drmFD, hHWDrawable)) {
|
if (drmCreateDrawable(pDRIPriv->drmFD,
|
||||||
|
&pDRIDrawablePriv->hwDrawable)) {
|
||||||
xfree(pDRIDrawablePriv);
|
xfree(pDRIDrawablePriv);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* add it to the list of DRI drawables for this screen */
|
/* add it to the list of DRI drawables for this screen */
|
||||||
pDRIDrawablePriv->hwDrawable = *hHWDrawable;
|
|
||||||
pDRIDrawablePriv->pScreen = pScreen;
|
pDRIDrawablePriv->pScreen = pScreen;
|
||||||
pDRIDrawablePriv->refCount = 1;
|
pDRIDrawablePriv->refCount = 1;
|
||||||
pDRIDrawablePriv->drawableIndex = -1;
|
pDRIDrawablePriv->drawableIndex = -1;
|
||||||
|
@ -1029,6 +1033,15 @@ DRICreateDrawable(ScreenPtr pScreen, Drawable id,
|
||||||
/* track this in case this window is destroyed */
|
/* track this in case this window is destroyed */
|
||||||
AddResource(id, DRIDrawablePrivResType, (pointer)pWin);
|
AddResource(id, DRIDrawablePrivResType, (pointer)pWin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pDRIDrawablePriv->hwDrawable) {
|
||||||
|
drmUpdateDrawableInfo(pDRIPriv->drmFD,
|
||||||
|
pDRIDrawablePriv->hwDrawable,
|
||||||
|
DRM_DRAWABLE_CLIPRECTS,
|
||||||
|
REGION_NUM_RECTS(&pWin->clipList),
|
||||||
|
REGION_RECTS(&pWin->clipList));
|
||||||
|
*hHWDrawable = pDRIDrawablePriv->hwDrawable;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else { /* pixmap (or for GLX 1.3, a PBuffer) */
|
else { /* pixmap (or for GLX 1.3, a PBuffer) */
|
||||||
/* NOT_DONE */
|
/* NOT_DONE */
|
||||||
|
@ -1813,6 +1826,11 @@ DRIClipNotify(WindowPtr pWin, int dx, int dy)
|
||||||
|
|
||||||
pDRIPriv->pSAREA->drawableTable[pDRIDrawablePriv->drawableIndex].stamp
|
pDRIPriv->pSAREA->drawableTable[pDRIDrawablePriv->drawableIndex].stamp
|
||||||
= DRIDrawableValidationStamp++;
|
= DRIDrawableValidationStamp++;
|
||||||
|
|
||||||
|
drmUpdateDrawableInfo(pDRIPriv->drmFD, pDRIDrawablePriv->hwDrawable,
|
||||||
|
DRM_DRAWABLE_CLIPRECTS,
|
||||||
|
REGION_NUM_RECTS(&pWin->clipList),
|
||||||
|
REGION_RECTS(&pWin->clipList));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* call lower wrapped functions */
|
/* call lower wrapped functions */
|
||||||
|
|
|
@ -1388,6 +1388,22 @@ int drmDestroyDrawable(int fd, drm_drawable_t handle)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int drmUpdateDrawableInfo(int fd, drm_drawable_t handle,
|
||||||
|
drm_drawable_info_type_t type, unsigned int num,
|
||||||
|
void *data)
|
||||||
|
{
|
||||||
|
drm_update_draw_t update;
|
||||||
|
|
||||||
|
update.handle = handle;
|
||||||
|
update.type = type;
|
||||||
|
update.num = num;
|
||||||
|
update.data = (unsigned long long)(unsigned long)data;
|
||||||
|
|
||||||
|
if (ioctl(fd, DRM_IOCTL_UPDATE_DRAW, &update)) return -errno;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Acquire the AGP device.
|
* Acquire the AGP device.
|
||||||
*
|
*
|
||||||
|
|
|
@ -543,6 +543,9 @@ extern int drmSwitchToContext(int fd, drm_context_t context);
|
||||||
extern int drmDestroyContext(int fd, drm_context_t handle);
|
extern int drmDestroyContext(int fd, drm_context_t handle);
|
||||||
extern int drmCreateDrawable(int fd, drm_drawable_t * handle);
|
extern int drmCreateDrawable(int fd, drm_drawable_t * handle);
|
||||||
extern int drmDestroyDrawable(int fd, drm_drawable_t handle);
|
extern int drmDestroyDrawable(int fd, drm_drawable_t handle);
|
||||||
|
extern int drmUpdateDrawableInfo(int fd, drm_drawable_t handle,
|
||||||
|
drm_drawable_info_type_t type,
|
||||||
|
unsigned int num, void *data);
|
||||||
extern int drmCtlInstHandler(int fd, int irq);
|
extern int drmCtlInstHandler(int fd, int irq);
|
||||||
extern int drmCtlUninstHandler(int fd);
|
extern int drmCtlUninstHandler(int fd);
|
||||||
extern int drmInstallSIGIOHandler(int fd,
|
extern int drmInstallSIGIOHandler(int fd,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user