branches/kale/src/emu/render.c
| r244598 | r244599 | |
| 202 | 202 | } |
| 203 | 203 | |
| 204 | 204 | //************************************************************************** |
| 205 | | // render_texinfo |
| 206 | | //************************************************************************** |
| 207 | | |
| 208 | | render_texinfo &render_texinfo::operator=(const render_texinfo &src) |
| 209 | | { |
| 210 | | free_palette(); |
| 211 | | base = src.base; |
| 212 | | rowpixels = src.rowpixels; |
| 213 | | width = src.width; |
| 214 | | height = src.height; |
| 215 | | seqid = src.seqid; |
| 216 | | osddata = src.osddata; |
| 217 | | m_palette = src.m_palette; |
| 218 | | if (m_palette != NULL) |
| 219 | | { |
| 220 | | m_palette->ref_count++; |
| 221 | | } |
| 222 | | return *this; |
| 223 | | } |
| 224 | | |
| 225 | | render_texinfo::render_texinfo(const render_texinfo &src) |
| 226 | | { |
| 227 | | base = src.base; |
| 228 | | rowpixels = src.rowpixels; |
| 229 | | width = src.width; |
| 230 | | height = src.height; |
| 231 | | seqid = src.seqid; |
| 232 | | osddata = src.osddata; |
| 233 | | m_palette = src.m_palette; |
| 234 | | if (m_palette != NULL) |
| 235 | | { |
| 236 | | m_palette->ref_count++; |
| 237 | | } |
| 238 | | } |
| 239 | | |
| 240 | | void render_texinfo::set_palette(const dynamic_array<rgb_t> *source) |
| 241 | | { |
| 242 | | free_palette(); |
| 243 | | if (source != NULL) |
| 244 | | { |
| 245 | | m_palette = global_alloc(render_palette_copy); |
| 246 | | m_palette->palette.copyfrom(*source); |
| 247 | | m_palette->ref_count = 1; |
| 248 | | } |
| 249 | | else |
| 250 | | { |
| 251 | | m_palette = NULL; |
| 252 | | } |
| 253 | | } |
| 254 | | |
| 255 | | void render_texinfo::free_palette() |
| 256 | | { |
| 257 | | if (m_palette != NULL) |
| 258 | | { |
| 259 | | m_palette->ref_count--; |
| 260 | | if (m_palette->ref_count == 0) |
| 261 | | { |
| 262 | | global_free(m_palette); |
| 263 | | } |
| 264 | | } |
| 265 | | m_palette = NULL; |
| 266 | | } |
| 267 | | |
| 268 | | |
| 269 | | //************************************************************************** |
| 270 | 205 | // RENDER PRIMITIVE |
| 271 | 206 | //************************************************************************** |
| 272 | 207 | |
| r244598 | r244599 | |
| 277 | 212 | |
| 278 | 213 | void render_primitive::reset() |
| 279 | 214 | { |
| 280 | | // public state |
| 281 | | type = INVALID; |
| 282 | | container = NULL; |
| 283 | | bounds.x0 = 0; |
| 284 | | bounds.y0 = 0; |
| 285 | | bounds.x1 = 0; |
| 286 | | bounds.y1 = 0; |
| 287 | | color.a = 0; |
| 288 | | color.r = 0; |
| 289 | | color.g = 0; |
| 290 | | color.b = 0; |
| 291 | | flags = 0; |
| 292 | | width = 0.0f; |
| 293 | | texture.set_palette(NULL); |
| 294 | | texture = render_texinfo(); |
| 295 | | texcoords.bl.u = 0.0f; |
| 296 | | texcoords.bl.v = 0.0f; |
| 297 | | texcoords.br.u = 0.0f; |
| 298 | | texcoords.br.v = 0.0f; |
| 299 | | texcoords.tl.u = 0.0f; |
| 300 | | texcoords.tl.v = 0.0f; |
| 301 | | texcoords.tr.u = 0.0f; |
| 302 | | texcoords.tr.v = 0.0f; |
| 303 | | |
| 304 | 215 | // do not clear m_next! |
| 305 | | // memset(&type, 0, FPTR(&texcoords + 1) - FPTR(&type)); |
| 216 | memset(&type, 0, FPTR(&texcoords + 1) - FPTR(&type)); |
| 306 | 217 | } |
| 307 | 218 | |
| 308 | 219 | |
| r244598 | r244599 | |
| 556 | 467 | texinfo.rowpixels = m_bitmap->rowpixels(); |
| 557 | 468 | texinfo.width = swidth; |
| 558 | 469 | texinfo.height = sheight; |
| 559 | | // will be set later |
| 560 | | texinfo.set_palette(NULL); |
| 470 | // palette will be set later |
| 561 | 471 | texinfo.seqid = ++m_curseq; |
| 562 | 472 | } |
| 563 | 473 | else |
| r244598 | r244599 | |
| 611 | 521 | texinfo.rowpixels = scaled->bitmap->rowpixels(); |
| 612 | 522 | texinfo.width = dwidth; |
| 613 | 523 | texinfo.height = dheight; |
| 614 | | // will be set later |
| 615 | | texinfo.set_palette(NULL); |
| 524 | // palette will be set later |
| 616 | 525 | texinfo.seqid = scaled->seqid; |
| 617 | 526 | } |
| 618 | 527 | } |
| r244598 | r244599 | |
| 623 | 532 | // palette for a texture |
| 624 | 533 | //------------------------------------------------- |
| 625 | 534 | |
| 626 | | const dynamic_array<rgb_t> *render_texture::get_adjusted_palette(render_container &container) |
| 535 | const rgb_t *render_texture::get_adjusted_palette(render_container &container) |
| 627 | 536 | { |
| 628 | 537 | // override the palette with our adjusted palette |
| 629 | 538 | switch (m_format) |
| r244598 | r244599 | |
| 633 | 542 | |
| 634 | 543 | assert(m_bitmap->palette() != NULL); |
| 635 | 544 | |
| 636 | | // if no adjustment necessary, return the raw palette |
| 637 | | if (!container.has_brightness_contrast_gamma_changes()) |
| 638 | | return m_bitmap->palette()->entry_list_adjusted_darray(); |
| 639 | | |
| 640 | | // otherwise, return our adjusted palette |
| 545 | // return our adjusted palette |
| 641 | 546 | return container.bcg_lookup_table(m_format, m_bitmap->palette()); |
| 642 | 547 | |
| 643 | 548 | case TEXFORMAT_RGB32: |
| r244598 | r244599 | |
| 671 | 576 | m_manager(manager), |
| 672 | 577 | m_screen(screen), |
| 673 | 578 | m_overlaybitmap(NULL), |
| 674 | | m_overlaytexture(NULL), |
| 675 | | m_bcglookup256(0x400) |
| 579 | m_overlaytexture(NULL) |
| 676 | 580 | { |
| 677 | 581 | // make sure it is empty |
| 678 | 582 | empty(); |
| r244598 | r244599 | |
| 685 | 589 | m_user.m_brightness = manager.machine().options().brightness(); |
| 686 | 590 | m_user.m_contrast = manager.machine().options().contrast(); |
| 687 | 591 | m_user.m_gamma = manager.machine().options().gamma(); |
| 688 | | // can't allocate palette client yet since palette and screen devices aren't started yet |
| 592 | // palette client will be allocated later |
| 689 | 593 | } |
| 690 | 594 | |
| 691 | 595 | recompute_lookups(); |
| r244598 | r244599 | |
| 812 | 716 | // given texture mode |
| 813 | 717 | //------------------------------------------------- |
| 814 | 718 | |
| 815 | | const dynamic_array<rgb_t> *render_container::bcg_lookup_table(int texformat, palette_t *palette) |
| 719 | const rgb_t *render_container::bcg_lookup_table(int texformat, palette_t *palette) |
| 816 | 720 | { |
| 817 | 721 | switch (texformat) |
| 818 | 722 | { |
| r244598 | r244599 | |
| 820 | 724 | case TEXFORMAT_PALETTEA16: |
| 821 | 725 | if (m_palclient == NULL) // if adjusted palette hasn't been created yet, create it |
| 822 | 726 | { |
| 823 | | assert(palette == m_screen->palette()->palette()); |
| 824 | 727 | m_palclient.reset(global_alloc(palette_client(*palette))); |
| 825 | 728 | m_bcglookup.resize(palette->max_index()); |
| 826 | 729 | recompute_lookups(); |
| 827 | 730 | } |
| 828 | 731 | assert (palette == &m_palclient->palette()); |
| 829 | | return &m_bcglookup; |
| 732 | return m_bcglookup; |
| 830 | 733 | |
| 831 | 734 | case TEXFORMAT_RGB32: |
| 832 | 735 | case TEXFORMAT_ARGB32: |
| 833 | 736 | case TEXFORMAT_YUY16: |
| 834 | | return &m_bcglookup256; |
| 737 | return m_bcglookup256; |
| 835 | 738 | |
| 836 | 739 | default: |
| 837 | 740 | return NULL; |
| r244598 | r244599 | |
| 916 | 819 | const rgb_t *adjusted_palette = palette.entry_list_adjusted(); |
| 917 | 820 | int colors = palette.max_index(); |
| 918 | 821 | |
| 919 | | for (int i = 0; i < colors; i++) |
| 822 | if (has_brightness_contrast_gamma_changes()) |
| 920 | 823 | { |
| 921 | | rgb_t newval = adjusted_palette[i]; |
| 922 | | m_bcglookup[i] = (newval & 0xff000000) | |
| 824 | for (int i = 0; i < colors; i++) |
| 825 | { |
| 826 | rgb_t newval = adjusted_palette[i]; |
| 827 | m_bcglookup[i] = (newval & 0xff000000) | |
| 923 | 828 | m_bcglookup256[0x200 + newval.r()] | |
| 924 | 829 | m_bcglookup256[0x100 + newval.g()] | |
| 925 | 830 | m_bcglookup256[0x000 + newval.b()]; |
| 831 | } |
| 926 | 832 | } |
| 833 | else |
| 834 | memcpy(&m_bcglookup[0], adjusted_palette, colors * sizeof(rgb_t)); |
| 927 | 835 | } |
| 928 | 836 | } |
| 929 | 837 | |
| r244598 | r244599 | |
| 949 | 857 | palette_t &palette = m_palclient->palette(); |
| 950 | 858 | const rgb_t *adjusted_palette = palette.entry_list_adjusted(); |
| 951 | 859 | |
| 952 | | // loop over chunks of 32 entries, since we can quickly examine 32 at a time |
| 953 | | for (UINT32 entry32 = mindirty / 32; entry32 <= maxdirty / 32; entry32++) |
| 860 | if (has_brightness_contrast_gamma_changes()) |
| 954 | 861 | { |
| 955 | | UINT32 dirtybits = dirty[entry32]; |
| 956 | | if (dirtybits != 0) |
| 862 | // loop over chunks of 32 entries, since we can quickly examine 32 at a time |
| 863 | for (UINT32 entry32 = mindirty / 32; entry32 <= maxdirty / 32; entry32++) |
| 864 | { |
| 865 | UINT32 dirtybits = dirty[entry32]; |
| 866 | if (dirtybits != 0) |
| 957 | 867 | |
| 958 | | // this chunk of 32 has dirty entries; fix them up |
| 959 | | for (UINT32 entry = 0; entry < 32; entry++) |
| 960 | | if (dirtybits & (1 << entry)) |
| 961 | | { |
| 962 | | UINT32 finalentry = entry32 * 32 + entry; |
| 963 | | rgb_t newval = adjusted_palette[finalentry]; |
| 964 | | m_bcglookup[finalentry] = (newval & 0xff000000) | |
| 868 | // this chunk of 32 has dirty entries; fix them up |
| 869 | for (UINT32 entry = 0; entry < 32; entry++) |
| 870 | if (dirtybits & (1 << entry)) |
| 871 | { |
| 872 | UINT32 finalentry = entry32 * 32 + entry; |
| 873 | rgb_t newval = adjusted_palette[finalentry]; |
| 874 | m_bcglookup[finalentry] = (newval & 0xff000000) | |
| 965 | 875 | m_bcglookup256[0x200 + newval.r()] | |
| 966 | 876 | m_bcglookup256[0x100 + newval.g()] | |
| 967 | 877 | m_bcglookup256[0x000 + newval.b()]; |
| 968 | | } |
| 878 | } |
| 879 | } |
| 969 | 880 | } |
| 881 | else |
| 882 | memcpy(&m_bcglookup[mindirty], &adjusted_palette[mindirty], (maxdirty - mindirty + 1) * sizeof(rgb_t)); |
| 970 | 883 | } |
| 971 | 884 | } |
| 972 | 885 | |
| r244598 | r244599 | |
| 1821 | 1734 | height = MIN(height, m_maxtexheight); |
| 1822 | 1735 | |
| 1823 | 1736 | curitem->texture()->get_scaled(width, height, prim->texture, list); |
| 1737 | |
| 1824 | 1738 | // set the palette |
| 1825 | | #if 1 |
| 1826 | | const dynamic_array<rgb_t> *adjusted_pal = curitem->texture()->get_adjusted_palette(container); |
| 1827 | | prim->texture.set_palette(adjusted_pal); |
| 1828 | | #else |
| 1829 | 1739 | prim->texture.palette = curitem->texture()->get_adjusted_palette(container); |
| 1830 | | #endif |
| 1831 | 1740 | |
| 1832 | 1741 | // determine UV coordinates and apply clipping |
| 1833 | 1742 | prim->texcoords = oriented_texcoords[finalorient]; |
branches/kale/src/emu/render.h
| r244598 | r244599 | |
| 209 | 209 | |
| 210 | 210 | |
| 211 | 211 | // render_texinfo - texture information |
| 212 | | |
| 213 | | |
| 214 | | struct render_palette_copy |
| 212 | struct render_texinfo |
| 215 | 213 | { |
| 216 | | int ref_count; |
| 217 | | dynamic_array<rgb_t> palette; |
| 218 | | }; |
| 219 | | |
| 220 | | class render_texinfo |
| 221 | | { |
| 222 | | public: |
| 223 | | render_texinfo() |
| 224 | | : base(NULL), rowpixels(0), width(0), height(0), |
| 225 | | seqid(0), osddata(0), m_palette(NULL) |
| 226 | | {} |
| 227 | | |
| 228 | | render_texinfo(const render_texinfo &src); |
| 229 | | |
| 230 | | ~render_texinfo() |
| 231 | | { |
| 232 | | free_palette(); |
| 233 | | } |
| 234 | | |
| 235 | | render_texinfo &operator=(const render_texinfo &src); |
| 236 | | |
| 237 | 214 | void * base; // base of the data |
| 238 | 215 | UINT32 rowpixels; // pixels per row |
| 239 | 216 | UINT32 width; // width of the image |
| 240 | 217 | UINT32 height; // height of the image |
| 241 | 218 | UINT32 seqid; // sequence ID |
| 242 | 219 | UINT64 osddata; // aux data to pass to osd |
| 243 | | |
| 244 | | const rgb_t * palette() const { return ((m_palette == NULL) ? NULL : &m_palette->palette[0]); } |
| 245 | | |
| 246 | | void set_palette(const dynamic_array<rgb_t> *source); |
| 247 | | |
| 248 | | private: |
| 249 | | void free_palette(); |
| 250 | | |
| 251 | | render_palette_copy *m_palette; // palette for PALETTE16 textures, LUTs for RGB15/RGB32 |
| 220 | const rgb_t * palette; // palette for PALETTE16 textures, bcg lookup table for RGB32/YUY16 |
| 252 | 221 | }; |
| 253 | 222 | |
| 254 | 223 | |
| r244598 | r244599 | |
| 465 | 434 | private: |
| 466 | 435 | // internal helpers |
| 467 | 436 | void get_scaled(UINT32 dwidth, UINT32 dheight, render_texinfo &texinfo, render_primitive_list &primlist); |
| 468 | | const dynamic_array<rgb_t> *get_adjusted_palette(render_container &container); |
| 437 | const rgb_t *get_adjusted_palette(render_container &container); |
| 469 | 438 | |
| 470 | 439 | static const int MAX_TEXTURE_SCALES = 8; |
| 471 | 440 | |
| r244598 | r244599 | |
| 555 | 524 | bool has_brightness_contrast_gamma_changes() const { return (m_user.m_brightness != 1.0f || m_user.m_contrast != 1.0f || m_user.m_gamma != 1.0f); } |
| 556 | 525 | UINT8 apply_brightness_contrast_gamma(UINT8 value); |
| 557 | 526 | float apply_brightness_contrast_gamma_fp(float value); |
| 558 | | const dynamic_array<rgb_t> *bcg_lookup_table(int texformat, palette_t *palette = NULL); |
| 527 | const rgb_t *bcg_lookup_table(int texformat, palette_t *palette = NULL); |
| 559 | 528 | |
| 560 | 529 | private: |
| 561 | 530 | // an item describes a high level primitive that is added to a container |
| r244598 | r244599 | |
| 606 | 575 | bitmap_argb32 * m_overlaybitmap; // overlay bitmap |
| 607 | 576 | render_texture * m_overlaytexture; // overlay texture |
| 608 | 577 | auto_pointer<palette_client> m_palclient; // client to the screen palette |
| 609 | | dynamic_array<rgb_t> m_bcglookup; // full palette lookup with bcg adjustments |
| 610 | | dynamic_array<rgb_t> m_bcglookup256; // lookup table for brightness/contrast/gamma |
| 578 | dynamic_array<rgb_t> m_bcglookup; // copy of screen palette with bcg adjustment |
| 579 | rgb_t m_bcglookup256[0x400]; // lookup table for brightness/contrast/gamma |
| 611 | 580 | }; |
| 612 | 581 | |
| 613 | 582 | |
branches/kale/src/emu/rendersw.inc
| r244598 | r244599 | |
| 130 | 130 | |
| 131 | 131 | static inline UINT32 get_texel_palette16(const render_texinfo &texture, INT32 curu, INT32 curv) |
| 132 | 132 | { |
| 133 | | const rgb_t *palbase = texture.palette(); |
| 133 | const rgb_t *palbase = texture.palette; |
| 134 | 134 | if (_BilinearFilter) |
| 135 | 135 | { |
| 136 | 136 | INT32 u0 = curu >> 16; |
| r244598 | r244599 | |
| 166 | 166 | |
| 167 | 167 | static inline UINT32 get_texel_palette16a(const render_texinfo &texture, INT32 curu, INT32 curv) |
| 168 | 168 | { |
| 169 | | const rgb_t *palbase = texture.palette(); |
| 169 | const rgb_t *palbase = texture.palette; |
| 170 | 170 | if (_BilinearFilter) |
| 171 | 171 | { |
| 172 | 172 | INT32 u0 = curu >> 16; |
| r244598 | r244599 | |
| 622 | 622 | INT32 endx = setup.endx; |
| 623 | 623 | |
| 624 | 624 | // ensure all parameters are valid |
| 625 | | assert(prim.texture.palette() != NULL); |
| 625 | assert(prim.texture.palette != NULL); |
| 626 | 626 | |
| 627 | 627 | // fast case: no coloring, no alpha |
| 628 | 628 | if (prim.color.r >= 1.0f && prim.color.g >= 1.0f && prim.color.b >= 1.0f && is_opaque(prim.color.a)) |
| r244598 | r244599 | |
| 730 | 730 | INT32 endx = setup.endx; |
| 731 | 731 | |
| 732 | 732 | // ensure all parameters are valid |
| 733 | | assert(prim.texture.palette() != NULL); |
| 733 | assert(prim.texture.palette != NULL); |
| 734 | 734 | |
| 735 | 735 | // fast case: no coloring, no alpha |
| 736 | 736 | if (prim.color.r >= 1.0f && prim.color.g >= 1.0f && prim.color.b >= 1.0f && is_opaque(prim.color.a)) |
| r244598 | r244599 | |
| 823 | 823 | INT32 endx = setup.endx; |
| 824 | 824 | |
| 825 | 825 | // ensure all parameters are valid |
| 826 | | assert(prim.texture.palette() != NULL); |
| 826 | assert(prim.texture.palette != NULL); |
| 827 | 827 | |
| 828 | 828 | // fast case: no coloring, no alpha |
| 829 | 829 | if (prim.color.r >= 1.0f && prim.color.g >= 1.0f && prim.color.b >= 1.0f && is_opaque(prim.color.a)) |
| r244598 | r244599 | |
| 914 | 914 | |
| 915 | 915 | static void draw_quad_yuy16_none(const render_primitive &prim, _PixelType *dstdata, UINT32 pitch, quad_setup_data &setup) |
| 916 | 916 | { |
| 917 | | const rgb_t *palbase = prim.texture.palette(); |
| 917 | const rgb_t *palbase = prim.texture.palette; |
| 918 | 918 | INT32 dudx = setup.dudx; |
| 919 | 919 | INT32 dvdx = setup.dvdx; |
| 920 | 920 | INT32 endx = setup.endx; |
| r244598 | r244599 | |
| 1084 | 1084 | |
| 1085 | 1085 | static void draw_quad_rgb32(const render_primitive &prim, _PixelType *dstdata, UINT32 pitch, quad_setup_data &setup) |
| 1086 | 1086 | { |
| 1087 | | const rgb_t *palbase = prim.texture.palette(); |
| 1087 | const rgb_t *palbase = prim.texture.palette; |
| 1088 | 1088 | INT32 dudx = setup.dudx; |
| 1089 | 1089 | INT32 dvdx = setup.dvdx; |
| 1090 | 1090 | INT32 endx = setup.endx; |
| r244598 | r244599 | |
| 1254 | 1254 | |
| 1255 | 1255 | static void draw_quad_rgb32_add(const render_primitive &prim, _PixelType *dstdata, UINT32 pitch, quad_setup_data &setup) |
| 1256 | 1256 | { |
| 1257 | | const rgb_t *palbase = prim.texture.palette(); |
| 1257 | const rgb_t *palbase = prim.texture.palette; |
| 1258 | 1258 | INT32 dudx = setup.dudx; |
| 1259 | 1259 | INT32 dvdx = setup.dvdx; |
| 1260 | 1260 | INT32 endx = setup.endx; |
| r244598 | r244599 | |
| 1392 | 1392 | |
| 1393 | 1393 | static void draw_quad_argb32_alpha(const render_primitive &prim, _PixelType *dstdata, UINT32 pitch, quad_setup_data &setup) |
| 1394 | 1394 | { |
| 1395 | | const rgb_t *palbase = prim.texture.palette(); |
| 1395 | const rgb_t *palbase = prim.texture.palette; |
| 1396 | 1396 | INT32 dudx = setup.dudx; |
| 1397 | 1397 | INT32 dvdx = setup.dvdx; |
| 1398 | 1398 | INT32 endx = setup.endx; |
| r244598 | r244599 | |
| 1538 | 1538 | |
| 1539 | 1539 | static void draw_quad_argb32_multiply(const render_primitive &prim, _PixelType *dstdata, UINT32 pitch, quad_setup_data &setup) |
| 1540 | 1540 | { |
| 1541 | | const rgb_t *palbase = prim.texture.palette(); |
| 1541 | const rgb_t *palbase = prim.texture.palette; |
| 1542 | 1542 | INT32 dudx = setup.dudx; |
| 1543 | 1543 | INT32 dvdx = setup.dvdx; |
| 1544 | 1544 | INT32 endx = setup.endx; |
| r244598 | r244599 | |
| 1657 | 1657 | |
| 1658 | 1658 | static void draw_quad_argb32_add(const render_primitive &prim, _PixelType *dstdata, UINT32 pitch, quad_setup_data &setup) |
| 1659 | 1659 | { |
| 1660 | | const rgb_t *palbase = prim.texture.palette(); |
| 1660 | const rgb_t *palbase = prim.texture.palette; |
| 1661 | 1661 | INT32 dudx = setup.dudx; |
| 1662 | 1662 | INT32 dvdx = setup.dvdx; |
| 1663 | 1663 | INT32 endx = setup.endx; |
branches/kale/src/osd/sdl/drawogl.c
| r244598 | r244599 | |
| 1816 | 1816 | if ( texture_copy_properties[texture->format][SDL_TEXFORMAT_SRC_EQUALS_DEST] && |
| 1817 | 1817 | !texture_copy_properties[texture->format][SDL_TEXFORMAT_SRC_HAS_PALETTE] && |
| 1818 | 1818 | texture->xprescale == 1 && texture->yprescale == 1 && |
| 1819 | | !texture->borderpix && !texsource->palette() && |
| 1819 | !texture->borderpix && !texsource->palette && |
| 1820 | 1820 | texsource->rowpixels <= m_texture_max_width ) |
| 1821 | 1821 | { |
| 1822 | 1822 | texture->nocopy = TRUE; |
| r244598 | r244599 | |
| 2263 | 2263 | texture->format = SDL_TEXFORMAT_ARGB32; |
| 2264 | 2264 | break; |
| 2265 | 2265 | case TEXFORMAT_RGB32: |
| 2266 | | if (texsource->palette() != NULL) |
| 2266 | if (texsource->palette != NULL) |
| 2267 | 2267 | texture->format = SDL_TEXFORMAT_RGB32_PALETTED; |
| 2268 | 2268 | else |
| 2269 | 2269 | texture->format = SDL_TEXFORMAT_RGB32; |
| r244598 | r244599 | |
| 2275 | 2275 | texture->format = SDL_TEXFORMAT_PALETTE16A; |
| 2276 | 2276 | break; |
| 2277 | 2277 | case TEXFORMAT_YUY16: |
| 2278 | | if (texsource->palette() != NULL) |
| 2278 | if (texsource->palette != NULL) |
| 2279 | 2279 | texture->format = SDL_TEXFORMAT_YUY16_PALETTED; |
| 2280 | 2280 | else |
| 2281 | 2281 | texture->format = SDL_TEXFORMAT_YUY16; |
| r244598 | r244599 | |
| 2717 | 2717 | switch (PRIMFLAG_GET_TEXFORMAT(flags)) |
| 2718 | 2718 | { |
| 2719 | 2719 | case TEXFORMAT_PALETTE16: |
| 2720 | | copyline_palette16((UINT32 *)dst, (UINT16 *)texsource->base + y * texsource->rowpixels, texsource->width, texsource->palette(), texture->borderpix, texture->xprescale); |
| 2720 | copyline_palette16((UINT32 *)dst, (UINT16 *)texsource->base + y * texsource->rowpixels, texsource->width, texsource->palette, texture->borderpix, texture->xprescale); |
| 2721 | 2721 | break; |
| 2722 | 2722 | |
| 2723 | 2723 | case TEXFORMAT_PALETTEA16: |
| 2724 | | copyline_palettea16((UINT32 *)dst, (UINT16 *)texsource->base + y * texsource->rowpixels, texsource->width, texsource->palette(), texture->borderpix, texture->xprescale); |
| 2724 | copyline_palettea16((UINT32 *)dst, (UINT16 *)texsource->base + y * texsource->rowpixels, texsource->width, texsource->palette, texture->borderpix, texture->xprescale); |
| 2725 | 2725 | break; |
| 2726 | 2726 | |
| 2727 | 2727 | case TEXFORMAT_RGB32: |
| 2728 | | copyline_rgb32((UINT32 *)dst, (UINT32 *)texsource->base + y * texsource->rowpixels, texsource->width, texsource->palette(), texture->borderpix, texture->xprescale); |
| 2728 | copyline_rgb32((UINT32 *)dst, (UINT32 *)texsource->base + y * texsource->rowpixels, texsource->width, texsource->palette, texture->borderpix, texture->xprescale); |
| 2729 | 2729 | break; |
| 2730 | 2730 | |
| 2731 | 2731 | case TEXFORMAT_ARGB32: |
| 2732 | | copyline_argb32((UINT32 *)dst, (UINT32 *)texsource->base + y * texsource->rowpixels, texsource->width, texsource->palette(), texture->borderpix, texture->xprescale); |
| 2732 | copyline_argb32((UINT32 *)dst, (UINT32 *)texsource->base + y * texsource->rowpixels, texsource->width, texsource->palette, texture->borderpix, texture->xprescale); |
| 2733 | 2733 | break; |
| 2734 | 2734 | |
| 2735 | 2735 | case TEXFORMAT_YUY16: |
| 2736 | | copyline_yuy16_to_argb((UINT32 *)dst, (UINT16 *)texsource->base + y * texsource->rowpixels, texsource->width, texsource->palette(), texture->borderpix, texture->xprescale); |
| 2736 | copyline_yuy16_to_argb((UINT32 *)dst, (UINT16 *)texsource->base + y * texsource->rowpixels, texsource->width, texsource->palette, texture->borderpix, texture->xprescale); |
| 2737 | 2737 | break; |
| 2738 | 2738 | |
| 2739 | 2739 | default: |
| r244598 | r244599 | |
| 2806 | 2806 | texture->texinfo.width == prim->texture.width && |
| 2807 | 2807 | texture->texinfo.height == prim->texture.height && |
| 2808 | 2808 | texture->texinfo.rowpixels == prim->texture.rowpixels && |
| 2809 | | /* texture->texinfo.palette() == prim->texture.palette() && */ |
| 2809 | /* texture->texinfo.palette == prim->texture.palette && */ |
| 2810 | 2810 | ((texture->flags ^ prim->flags) & (PRIMFLAG_BLENDMODE_MASK | PRIMFLAG_TEXFORMAT_MASK)) == 0) |
| 2811 | 2811 | return 1; |
| 2812 | 2812 | else |
branches/kale/src/osd/windows/drawd3d.c
| r244598 | r244599 | |
| 2544 | 2544 | switch (PRIMFLAG_GET_TEXFORMAT(flags)) |
| 2545 | 2545 | { |
| 2546 | 2546 | case TEXFORMAT_PALETTE16: |
| 2547 | | copyline_palette16((UINT32 *)dst, (UINT16 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette(), m_xborderpix); |
| 2547 | copyline_palette16((UINT32 *)dst, (UINT16 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette, m_xborderpix); |
| 2548 | 2548 | break; |
| 2549 | 2549 | |
| 2550 | 2550 | case TEXFORMAT_PALETTEA16: |
| 2551 | | copyline_palettea16((UINT32 *)dst, (UINT16 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette(), m_xborderpix); |
| 2551 | copyline_palettea16((UINT32 *)dst, (UINT16 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette, m_xborderpix); |
| 2552 | 2552 | break; |
| 2553 | 2553 | |
| 2554 | 2554 | case TEXFORMAT_RGB32: |
| 2555 | | copyline_rgb32((UINT32 *)dst, (UINT32 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette(), m_xborderpix); |
| 2555 | copyline_rgb32((UINT32 *)dst, (UINT32 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette, m_xborderpix); |
| 2556 | 2556 | break; |
| 2557 | 2557 | |
| 2558 | 2558 | case TEXFORMAT_ARGB32: |
| 2559 | | copyline_argb32((UINT32 *)dst, (UINT32 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette(), m_xborderpix); |
| 2559 | copyline_argb32((UINT32 *)dst, (UINT32 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette, m_xborderpix); |
| 2560 | 2560 | break; |
| 2561 | 2561 | |
| 2562 | 2562 | case TEXFORMAT_YUY16: |
| 2563 | 2563 | if (m_texture_manager->get_yuv_format() == D3DFMT_YUY2) |
| 2564 | | copyline_yuy16_to_yuy2((UINT16 *)dst, (UINT16 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette(), m_xborderpix); |
| 2564 | copyline_yuy16_to_yuy2((UINT16 *)dst, (UINT16 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette, m_xborderpix); |
| 2565 | 2565 | else if (m_texture_manager->get_yuv_format() == D3DFMT_UYVY) |
| 2566 | | copyline_yuy16_to_uyvy((UINT16 *)dst, (UINT16 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette(), m_xborderpix); |
| 2566 | copyline_yuy16_to_uyvy((UINT16 *)dst, (UINT16 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette, m_xborderpix); |
| 2567 | 2567 | else |
| 2568 | | copyline_yuy16_to_argb((UINT32 *)dst, (UINT16 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette(), m_xborderpix); |
| 2568 | copyline_yuy16_to_argb((UINT32 *)dst, (UINT16 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette, m_xborderpix); |
| 2569 | 2569 | break; |
| 2570 | 2570 | |
| 2571 | 2571 | default: |